and respect focus lock out flag more

SVN revision: 35431
This commit is contained in:
Carsten Haitzler 2008-08-11 01:22:33 +00:00
parent 98a3c6d2fc
commit 99fc29f7aa
4 changed files with 9 additions and 4 deletions

View File

@ -984,7 +984,8 @@ ACT_FN_GO(window_desk_move_by)
e_zone_desk_flip_by(bd->zone, to_x - dx, to_y - dy); e_zone_desk_flip_by(bd->zone, to_x - dx, to_y - dy);
/* send the border to the required desktop. */ /* send the border to the required desktop. */
e_border_desk_set(bd, desk); 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);
} }
} }
} }

View File

@ -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); // printf(" 2accept:%i take:%i\n", bd->client.icccm.accepts_focus, bd->client.icccm.take_focus);
if ((!bd->client.icccm.accepts_focus) && if ((!bd->client.icccm.accepts_focus) &&
(!bd->client.icccm.take_focus)) return; (!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" */ /* Try to grab the pointer to make sure it's not "in use" */
if (!ecore_x_pointer_grab(bd->zone->container->win)) if (!ecore_x_pointer_grab(bd->zone->container->win))
return; return;
@ -1412,6 +1413,7 @@ e_border_focus_set(E_Border *bd, int focus, int set)
if ((!bd->client.icccm.accepts_focus) && if ((!bd->client.icccm.accepts_focus) &&
(!bd->client.icccm.take_focus)) (!bd->client.icccm.take_focus))
return; return;
if ((set) && (focus) && (bd->lock_focus_out)) return;
/* dont focus an iconified window. that's silly! */ /* dont focus an iconified window. that's silly! */
if ((focus) && (bd->iconic)) if ((focus) && (bd->iconic))
return; return;

View File

@ -367,7 +367,8 @@ e_desk_last_focused_focus(E_Desk *desk)
if ((!bd->iconic) && (bd->visible) && (bd->desk == desk)) if ((!bd->iconic) && (bd->visible) && (bd->desk == desk))
{ {
/* this was the window last focused in this desktop */ /* 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; break;
} }
} }

View File

@ -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), e_border_move(bd, bd->zone->x + ((bd->zone->w - bd->w) / 2),
bd->zone->y + ((bd->zone->h - bd->h) / 2)); bd->zone->y + ((bd->zone->h - bd->h) / 2));
e_border_raise(bd); 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 static void