Fix bug that caused windows to not be focused on unminimizing because of

2004-07-31  Rob Adams  <readams@readams.net>

	Fix bug that caused windows to not be focused on unminimizing
	because of user time support.

	* src/window.c (meta_window_new_with_attrs): initialize
	focus_despite_user_time bit
	(window_takes_focus_on_map): focus if focus_despite_user_time
	despite user time, interestingly enough
	(meta_window_show): reset focus_despite_user_time after showing

	* src/window.h (_MetaWindow): add focus_despite_user_time bit
This commit is contained in:
Rob Adams 2004-07-31 21:26:05 +00:00 committed by Rob Adams
parent e60da6c006
commit 12f4f7c6b0
3 changed files with 21 additions and 0 deletions

View File

@ -1,3 +1,16 @@
2004-07-31 Rob Adams <readams@readams.net>
Fix bug that caused windows to not be focused on unminimizing
because of user time support.
* src/window.c (meta_window_new_with_attrs): initialize
focus_despite_user_time bit
(window_takes_focus_on_map): focus if focus_despite_user_time
despite user time, interestingly enough
(meta_window_show): reset focus_despite_user_time after showing
* src/window.h (_MetaWindow): add focus_despite_user_time bit
2004-07-31 Rob Adams <readams@readams.net> 2004-07-31 Rob Adams <readams@readams.net>
Fix some support for EWMH hints, and fix USER_TIME support to Fix some support for EWMH hints, and fix USER_TIME support to

View File

@ -456,6 +456,7 @@ meta_window_new_with_attrs (MetaDisplay *display,
window->initial_workspace_set = FALSE; window->initial_workspace_set = FALSE;
window->initial_timestamp_set = FALSE; window->initial_timestamp_set = FALSE;
window->net_wm_user_time_set = FALSE; window->net_wm_user_time_set = FALSE;
window->focus_despite_user_time = FALSE;
window->calc_placement = FALSE; window->calc_placement = FALSE;
window->shaken_loose = FALSE; window->shaken_loose = FALSE;
window->have_focus_click_grab = FALSE; window->have_focus_click_grab = FALSE;
@ -1618,6 +1619,8 @@ window_takes_focus_on_map (MetaWindow *window)
case META_WINDOW_NORMAL: case META_WINDOW_NORMAL:
case META_WINDOW_DIALOG: case META_WINDOW_DIALOG:
case META_WINDOW_MODAL_DIALOG: case META_WINDOW_MODAL_DIALOG:
if (window->focus_despite_user_time)
return TRUE;
meta_topic (META_DEBUG_STARTUP, meta_topic (META_DEBUG_STARTUP,
"COMPARISON:\n" "COMPARISON:\n"
@ -1715,6 +1718,8 @@ meta_window_show (MetaWindow *window)
meta_window_stack_just_below (window, meta_window_stack_just_below (window,
window->display->focus_window); window->display->focus_window);
window->focus_despite_user_time = FALSE;
if (!window->placed) if (!window->placed)
{ {
/* We have to recalc the placement here since other windows may /* We have to recalc the placement here since other windows may
@ -1929,6 +1934,8 @@ meta_window_unminimize (MetaWindow *window)
if (window->minimized) if (window->minimized)
{ {
window->minimized = FALSE; window->minimized = FALSE;
window->focus_despite_user_time = TRUE;
meta_window_queue_calc_showing (window); meta_window_queue_calc_showing (window);
meta_window_foreach_transient (window, meta_window_foreach_transient (window,

View File

@ -147,6 +147,7 @@ struct _MetaWindow
/* whether net_wm_user_time has been set yet */ /* whether net_wm_user_time has been set yet */
guint net_wm_user_time_set : 1; guint net_wm_user_time_set : 1;
guint focus_despite_user_time : 1;
/* These are the flags from WM_PROTOCOLS */ /* These are the flags from WM_PROTOCOLS */
guint take_focus : 1; guint take_focus : 1;