diff --git a/src/bin/e_actions.c b/src/bin/e_actions.c index 30a1243a1..c817c78cc 100644 --- a/src/bin/e_actions.c +++ b/src/bin/e_actions.c @@ -984,7 +984,8 @@ ACT_FN_GO(window_desk_move_by) e_zone_desk_flip_by(bd->zone, to_x - dx, to_y - dy); /* send the border to the required desktop. */ e_border_desk_set(bd, desk); - e_border_focus_set(bd, 1, 1); + if (!bd->lock_focus_out) + e_border_focus_set(bd, 1, 1); } } } diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 4e37da8b5..ca8c9fc7c 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -1371,7 +1371,8 @@ e_border_focus_set_with_pointer(E_Border *bd) // printf(" 2accept:%i take:%i\n", bd->client.icccm.accepts_focus, bd->client.icccm.take_focus); if ((!bd->client.icccm.accepts_focus) && (!bd->client.icccm.take_focus)) return; - + if (bd->lock_focus_out) return; + /* Try to grab the pointer to make sure it's not "in use" */ if (!ecore_x_pointer_grab(bd->zone->container->win)) return; @@ -1412,6 +1413,7 @@ e_border_focus_set(E_Border *bd, int focus, int set) if ((!bd->client.icccm.accepts_focus) && (!bd->client.icccm.take_focus)) return; + if ((set) && (focus) && (bd->lock_focus_out)) return; /* dont focus an iconified window. that's silly! */ if ((focus) && (bd->iconic)) return; diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c index 7bd2715d0..d08e195fe 100644 --- a/src/bin/e_desk.c +++ b/src/bin/e_desk.c @@ -367,7 +367,8 @@ e_desk_last_focused_focus(E_Desk *desk) if ((!bd->iconic) && (bd->visible) && (bd->desk == desk)) { /* this was the window last focused in this desktop */ - e_border_focus_set(bd, 1, 1); + if (!bd->lock_focus_out) + e_border_focus_set(bd, 1, 1); break; } } diff --git a/src/bin/e_int_menus.c b/src/bin/e_int_menus.c index b89dad438..ae2cf999a 100644 --- a/src/bin/e_int_menus.c +++ b/src/bin/e_int_menus.c @@ -1461,7 +1461,8 @@ _e_int_menus_lost_clients_item_cb(void *data, E_Menu *m, E_Menu_Item *mi) e_border_move(bd, bd->zone->x + ((bd->zone->w - bd->w) / 2), bd->zone->y + ((bd->zone->h - bd->h) / 2)); e_border_raise(bd); - e_border_focus_set(bd, 1, 1); + if (!bd->lock_focus_out) + e_border_focus_set(bd, 1, 1); } static void