export focus options to the rc file
This commit is contained in:
parent
f3153710ea
commit
b52ec93251
1 changed files with 21 additions and 10 deletions
|
@ -9,24 +9,28 @@
|
||||||
|
|
||||||
void plugin_setup_config()
|
void plugin_setup_config()
|
||||||
{
|
{
|
||||||
|
ConfigValue val;
|
||||||
|
|
||||||
config_def_set(config_def_new("focus.followMouse", Config_Bool,
|
config_def_set(config_def_new("focus.followMouse", Config_Bool,
|
||||||
"Focus Follows Mouse",
|
"Focus Follows Mouse",
|
||||||
"Focus windows when the mouse pointer "
|
"Focus windows when the mouse pointer "
|
||||||
"enters them."));
|
"enters them."));
|
||||||
|
val.bool = TRUE;
|
||||||
|
config_set("focus.followMouse", Config_Bool, val);
|
||||||
config_def_set(config_def_new("focus.focusNew", Config_Bool,
|
config_def_set(config_def_new("focus.focusNew", Config_Bool,
|
||||||
"Focus New Windows",
|
"Focus New Windows",
|
||||||
"Focus windows when they first appear "));
|
"Focus windows when they first appear "));
|
||||||
|
val.bool = TRUE;
|
||||||
|
config_set("focus.focusNew", Config_Bool, val);
|
||||||
|
/*
|
||||||
config_def_set(config_def_new("focus.warpOnDeskSwitch", Config_Bool,
|
config_def_set(config_def_new("focus.warpOnDeskSwitch", Config_Bool,
|
||||||
"Warp Pointer On Desktop Switch",
|
"Warp Pointer On Desktop Switch",
|
||||||
"Warps the pointer to the focused window "
|
"Warps the pointer to the focused window "
|
||||||
"when switching desktops."));
|
"when switching desktops."));
|
||||||
|
config_set("focus.warpOnDeskSwitch", Config_Bool, FALSE);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/* config options */
|
|
||||||
static gboolean follow_mouse = TRUE;
|
|
||||||
static gboolean warp_on_desk_switch = FALSE;
|
|
||||||
static gboolean focus_new = TRUE;
|
|
||||||
|
|
||||||
/*static int skip_enter = 0;*/
|
/*static int skip_enter = 0;*/
|
||||||
|
|
||||||
static gboolean focus_under_pointer()
|
static gboolean focus_under_pointer()
|
||||||
|
@ -85,7 +89,7 @@ static void focus_fallback(gboolean switching_desks)
|
||||||
|
|
||||||
chew_enter_events();
|
chew_enter_events();
|
||||||
|
|
||||||
if (warp_on_desk_switch) {
|
if (FALSE /*warp_on_desk_switch*/) {
|
||||||
/* I have to do this warp twice! Otherwise windows dont get
|
/* I have to do this warp twice! Otherwise windows dont get
|
||||||
Enter/Leave events when i warp on a desktop switch! */
|
Enter/Leave events when i warp on a desktop switch! */
|
||||||
XWarpPointer(ob_display, None, c->window, 0, 0, 0, 0,
|
XWarpPointer(ob_display, None, c->window, 0, 0, 0, 0,
|
||||||
|
@ -113,9 +117,16 @@ static void focus_desktop()
|
||||||
|
|
||||||
static void event(ObEvent *e, void *foo)
|
static void event(ObEvent *e, void *foo)
|
||||||
{
|
{
|
||||||
|
ConfigValue follow_mouse, focus_new;
|
||||||
|
gboolean r;
|
||||||
|
|
||||||
|
r = config_get("focus.followMouse", Config_Bool, &follow_mouse);
|
||||||
|
g_assert(r);
|
||||||
|
|
||||||
switch (e->type) {
|
switch (e->type) {
|
||||||
case Event_Client_Mapped:
|
case Event_Client_Mapped:
|
||||||
if (focus_new && client_normal(e->data.c.client))
|
r = config_get("focus.focusNew", Config_Bool, &focus_new);
|
||||||
|
if (focus_new.bool && client_normal(e->data.c.client))
|
||||||
client_focus(e->data.c.client);
|
client_focus(e->data.c.client);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -123,7 +134,7 @@ static void event(ObEvent *e, void *foo)
|
||||||
if (ob_state == State_Exiting) break;
|
if (ob_state == State_Exiting) break;
|
||||||
|
|
||||||
if (client_focused(e->data.c.client))
|
if (client_focused(e->data.c.client))
|
||||||
if (!follow_mouse || !focus_under_pointer())
|
if (!follow_mouse.bool || !focus_under_pointer())
|
||||||
focus_fallback(FALSE);
|
focus_fallback(FALSE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -131,7 +142,7 @@ static void event(ObEvent *e, void *foo)
|
||||||
/* focus the next available target if moving from the current
|
/* focus the next available target if moving from the current
|
||||||
desktop. */
|
desktop. */
|
||||||
if ((unsigned)e->data.c.num[1] == screen_desktop)
|
if ((unsigned)e->data.c.num[1] == screen_desktop)
|
||||||
if (!follow_mouse || !focus_under_pointer())
|
if (!follow_mouse.bool || !focus_under_pointer())
|
||||||
focus_fallback(FALSE);
|
focus_fallback(FALSE);
|
||||||
|
|
||||||
case Event_Ob_Desktop:
|
case Event_Ob_Desktop:
|
||||||
|
@ -140,7 +151,7 @@ static void event(ObEvent *e, void *foo)
|
||||||
|
|
||||||
case Event_Ob_ShowDesktop:
|
case Event_Ob_ShowDesktop:
|
||||||
if (!e->data.o.num[0]) { /* hiding the desktop, showing the clients */
|
if (!e->data.o.num[0]) { /* hiding the desktop, showing the clients */
|
||||||
if (!follow_mouse || !focus_under_pointer())
|
if (!follow_mouse.bool || !focus_under_pointer())
|
||||||
focus_fallback(TRUE);
|
focus_fallback(TRUE);
|
||||||
} else /* hiding clients, showing the desktop */
|
} else /* hiding clients, showing the desktop */
|
||||||
focus_desktop();
|
focus_desktop();
|
||||||
|
|
Loading…
Reference in a new issue