Focus windows that manually position themselves too (fixes #107347).

2004-12-27  Elijah Newren  <newren@gmail.com>

	Focus windows that manually position themselves too (fixes
	#107347).

	* src/window.h (struct _MetaWindow): add a new
	showing_for_first_time flag

	* src/window.c (meta_window_new_with_attrs): initialize
	showing_for_first_time flag to !mapped, (meta_window_show):
	replace did_placement with showing_for_first_time in the section
	to decided whether to focus since did_placement isn't quite what
	we want
This commit is contained in:
Elijah Newren 2004-12-28 06:01:42 +00:00 committed by Elijah Newren
parent 0bf6bffb16
commit c74ab35c6c
3 changed files with 25 additions and 1 deletions

View File

@ -1,3 +1,17 @@
2004-12-27 Elijah Newren <newren@gmail.com>
Focus windows that manually position themselves too (fixes
#107347).
* src/window.h (struct _MetaWindow): add a new
showing_for_first_time flag
* src/window.c (meta_window_new_with_attrs): initialize
showing_for_first_time flag to !mapped, (meta_window_show):
replace did_placement with showing_for_first_time in the section
to decided whether to focus since did_placement isn't quite what
we want
2004-12-27 Elijah Newren <newren@gmail.com> 2004-12-27 Elijah Newren <newren@gmail.com>
* src/display.c (meta_display_set_input_focus_window, * src/display.c (meta_display_set_input_focus_window,

View File

@ -438,6 +438,8 @@ meta_window_new_with_attrs (MetaDisplay *display,
window->minimized = FALSE; window->minimized = FALSE;
window->iconic = FALSE; window->iconic = FALSE;
window->mapped = attrs->map_state != IsUnmapped; window->mapped = attrs->map_state != IsUnmapped;
/* if already mapped, no need to worry about focus-on-first-time-showing */
window->showing_for_first_time = !window->mapped;
/* if already mapped we don't want to do the placement thing */ /* if already mapped we don't want to do the placement thing */
window->placed = window->mapped; window->placed = window->mapped;
if (window->placed) if (window->placed)
@ -1761,8 +1763,13 @@ meta_window_show (MetaWindow *window)
} }
} }
if (did_placement) /* We don't want to worry about all cases from inside
* implement_showing(); we only want to worry about focus if this
* window has not been shown before.
*/
if (window->showing_for_first_time)
{ {
window->showing_for_first_time = FALSE;
if (takes_focus_on_map) if (takes_focus_on_map)
{ {
meta_window_focus (window, meta_window_focus (window,

View File

@ -207,6 +207,9 @@ struct _MetaWindow
/* Have we placed this window? */ /* Have we placed this window? */
guint placed : 1; guint placed : 1;
/* Has this window not ever been shown yet? */
guint showing_for_first_time : 1;
/* Are we in meta_window_free()? */ /* Are we in meta_window_free()? */
guint unmanaging : 1; guint unmanaging : 1;