Maintain the button grab for sloppy and mouse focus all the time. This

2003-01-04  Rob Adams  <readams@readams.net>

	Maintain the button grab for sloppy and mouse focus all the time.
	This fixes a number of problem introduced by trying to drop the
	grab; we now do this only for click to focus mode.  This has the
	unfortunate effect that #102209 reappears for sloppy and mouse
	focus, but this seems unavoidable, because of limitations in the X
	protocol.  See #115072.

	* src/display.c (meta_display_grab_focus_window_button): #if 0 the
	section on not grabbing unless in click-to-focus mode.

	* src/window.c (meta_window_notify_focus): drop focus button grab
	on FocusIn and acquire it on FocusOut only when in click-to-focus
	mode.
This commit is contained in:
Rob Adams 2004-01-05 07:24:32 +00:00 committed by Rob Adams
parent 07c0a53316
commit 2fdb75ad45
3 changed files with 25 additions and 4 deletions

View File

@ -1,3 +1,19 @@
2003-01-04 Rob Adams <readams@readams.net>
Maintain the button grab for sloppy and mouse focus all the time.
This fixes a number of problem introduced by trying to drop the
grab; we now do this only for click to focus mode. This has the
unfortunate effect that #102209 reappears for sloppy and mouse
focus, but this seems unavoidable, because of limitations in the X
protocol. See #115072.
* src/display.c (meta_display_grab_focus_window_button): #if 0 the
section on not grabbing unless in click-to-focus mode.
* src/window.c (meta_window_notify_focus): drop focus button grab
on FocusIn and acquire it on FocusOut only when in click-to-focus
mode.
2004-01-03 Robert Sedak <robert.sedak@sk.htnet.hr> 2004-01-03 Robert Sedak <robert.sedak@sk.htnet.hr>
* configure.in: Added "hr" in ALL_LINGUAS. * configure.in: Added "hr" in ALL_LINGUAS.

View File

@ -1371,7 +1371,7 @@ event_callback (XEvent *event,
/* Raise on clicking the client area always or only /* Raise on clicking the client area always or only
* in click to focus mode? The debate rages. * in click to focus mode? The debate rages.
* Feel free to change TRUE to FALSE * Feel free to change TRUE to FALSE or vice versa
*/ */
if (TRUE /* meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK */) if (TRUE /* meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK */)
{ {
@ -3303,6 +3303,8 @@ meta_display_grab_focus_window_button (MetaDisplay *display,
/* Grab button 1 for activating unfocused windows */ /* Grab button 1 for activating unfocused windows */
meta_verbose ("Grabbing unfocused window buttons for %s\n", window->desc); meta_verbose ("Grabbing unfocused window buttons for %s\n", window->desc);
#if 0
/* FIXME:115072 */
/* Don't grab at all unless in click to focus mode. In click to /* Don't grab at all unless in click to focus mode. In click to
* focus, we may sometimes be clever about intercepting and eating * focus, we may sometimes be clever about intercepting and eating
* the focus click. But in mouse focus, we never do that since the * the focus click. But in mouse focus, we never do that since the
@ -3314,6 +3316,7 @@ meta_display_grab_focus_window_button (MetaDisplay *display,
meta_verbose (" (well, not grabbing since not in click to focus mode)\n"); meta_verbose (" (well, not grabbing since not in click to focus mode)\n");
return; return;
} }
#endif
if (window->have_focus_click_grab) if (window->have_focus_click_grab)
{ {

View File

@ -4118,7 +4118,8 @@ meta_window_notify_focus (MetaWindow *window,
* with some things you might do inside the focused window, by * with some things you might do inside the focused window, by
* causing the client to get funky enter/leave events. * causing the client to get funky enter/leave events.
*/ */
meta_display_ungrab_focus_window_button (window->display, window); if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK)
meta_display_ungrab_focus_window_button (window->display, window);
} }
} }
else if (event->type == FocusOut || else if (event->type == FocusOut ||
@ -4157,8 +4158,9 @@ meta_window_notify_focus (MetaWindow *window,
meta_window_update_layer (window); meta_window_update_layer (window);
/* Re-grab for click to focus, if necessary */ /* Re-grab for click to focus, if necessary */
meta_display_grab_focus_window_button (window->display, window); if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK)
} meta_display_grab_focus_window_button (window->display, window);
}
} }
/* Now set _NET_ACTIVE_WINDOW hint */ /* Now set _NET_ACTIVE_WINDOW hint */