From: Enlightenment S. <no-...@en...> - 2011-03-12 16:59:11
|
Log: e17: possible focus fix: wait for windows focus_in event also if it does not !take_focus Author: jeffdameth Date: 2011-03-12 08:59:02 -0800 (Sat, 12 Mar 2011) New Revision: 57705 Trac: http://trac.enlightenment.org/e/changeset/57705 Modified: trunk/e/src/bin/e_border.c Modified: trunk/e/src/bin/e_border.c =================================================================== --- trunk/e/src/bin/e_border.c 2011-03-12 16:24:37 UTC (rev 57704) +++ trunk/e/src/bin/e_border.c 2011-03-12 16:59:02 UTC (rev 57705) @@ -2990,7 +2990,7 @@ else if (!bd->client.icccm.take_focus) { e_grabinput_focus(bd->client.win, E_FOCUS_METHOD_PASSIVE); - e_border_focus_set(bd, 1, 0); + /* e_border_focus_set(bd, 1, 0); */ } } } @@ -5049,8 +5049,8 @@ } /* ignore focus in from !take_focus windows, we just gave it em */ - if (!bd->client.icccm.take_focus) - return ECORE_CALLBACK_PASS_ON; + /* if (!bd->client.icccm.take_focus) + * return ECORE_CALLBACK_PASS_ON; */ /* should be equal, maybe some clients dont reply with the proper timestamp ? */ if (e->time >= focus_time) @@ -7525,6 +7525,9 @@ (bd->want_focus)) { bd->want_focus = 0; +#ifdef INOUTDEBUG_FOCUS + printf("__________ focus new window _________\n"); +#endif e_border_focus_set_with_pointer(bd); } else if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG) @@ -7534,11 +7537,18 @@ (e_border_find_by_client_window(bd->client.icccm.transient_for) == e_border_focused_get()))) { +#ifdef INOUTDEBUG_FOCUS + printf("__________ focus new dialog _________\n"); +#endif + e_border_focus_set_with_pointer(bd); } } else { +#ifdef INOUTDEBUG_FOCUS + printf("__________ window takes focus _________\n"); +#endif /* focus window by default when it is the only one on desk */ E_Border *bd2 = NULL; Eina_List *l; |