2004-08-05 Elijah Newren <newren@math.utah.edu>
Have newly mapped windows that are denied focus appear after the
focused window in the alt-tab list. This allows one to switch to
such a window with a single alt-tab press.
* src/window.c (ensure_mru_position_after): new function,
(meta_window_show): If newly mapped window is denied focus, call
ensure_mru_position_after to make the window appear after the
focus window in the mru list.
2004-08-05 Elijah Newren <newren@math.utah.edu>
* src/window.c (meta_window_stick): prepend window to mru list
instead of appending, since making the window sticky should imply
that it is the most recently used, not the least recently. (fixes
#149369)
2004-08-02 Elijah Newren <newren@math.utah.edu>
Fix some bugs (reported in #120100) regarding the focus window
when using the workspace switcher.
* src/display.c (event_callback): When switching workspaces due to
a _NET_CURRENT_DESKTOP message, make sure to focus the default
window as well.
* src/workspace.c (meta_workspace_focus_default_window,
meta_workspace_focus_mru_window): Make DOCK or DESKTOP windows
have lower priority than others when choosing a window to focus.
(For the former function, this means don't focus them at all; for
the latter, this means only focus them (via the
meta_workspace_focus_top_window call) if no other mru window can
be found.)
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>
Fix some support for EWMH hints, and fix USER_TIME support to
include the DEMANDS_ATTENTION hint. Also includes some code for
implementing _NET_RESTACK_WINDOW and _NET_MOVERESIZE_WINDOW, but
this is disabled pending feature thaw.
* COMPLIANCE: update with new information
* src/display.c (meta_display_open): add new hints to list
* src/display.h (_MetaDisplay): Add new atoms to struct
* src/screen.c (set_supported_hint): update the list of support
hints.
(set_desktop_viewport_hint): new function sets the viewport hint
to (0,0) as required by the spec for WMs with no viewport support.
(set_desktop_geometry_hint): new function to set the desktop size
hint to the size of the display, since we don't implement large
desktop support, as required by the spec.
(meta_screen_resize): update the geometry hint on screen resize
* src/window.c (meta_window_new_with_attrs): Initialize
demands_attention state
(set_net_wm_state): Set demands_attention hint in the window state
(meta_window_show): If we don't pop up a window because of
USER_TIME, set DEMANDS_ATTENTION on the window.
(meta_window_focus): When a window receives focus, remove
DEMANDS_ATTENTION hint
(meta_window_client_message): Allow other apps to set
DEMANDS_ATTENTION on a window. Also, if the _NET_ACTIVE_WINDOW
hint includes a timestamp, use it.
(update_net_wm_state): Read DEMANDS_ATTENTION state also
* src/window.h (_MetaWindow): add wm_state_demands_attention bit.
2004-07-22 Rob Adams <readams@readams.net>
* src/metacity.schemas.in: Add trailing quotes to keybinding
explanation text. Patch from Emil Soleyman-Zomalan.
2004-06-24 Elijah Newren <newren@math.utah.edu>
Make choice of focus window be consistent for each focus mode.
Fixes#135810.
* src/delete.c: (meta_window_delete): In some #if 0'ed code,
replace meta_workspace_focus_mru_window with
meta_workspace_focus_default_window (just in case the code becomes
un-#if 0'ed out).
* src/screen.c, src/screen.h: Change
meta_screen_focus_mouse_window to meta_screen_get_mouse_window,
and don't focus the window when found but rather return it.
* src/window.c: (meta_window_free, meta_window_minimize): replace
meta_workspace_focus_mru_window with
meta_workspace_focus_default_window.
* src/workspace.c: (meta_workspace_focus_default_window): Focus
appropriately for the given focus method:
click-to-focus: focus MRU window (== toplevel window)
sloppy focus: focus the window under the pointer if there is
such a window, otherwise focus the mru window
mouse focus: focus the window under the pointer if there is
such a window, otherwise don't focus anything
2004-06-24 Elijah Newren <newren@math.utah.edu>
* src/window.c: Avoid a race condition on the choice of window to
focus after the previously focused window gets closed or
minimized. Fixes#131582.
2004-06-24 Elijah Newren <newren@math.utah.edu>
* src/metacity.schemas.in: make naming for "move a window"/"move
the window"/"move window" more consistent. Patch from Michael
Terry for #142235.
2004-06-24 Elijah Newren <newren@math.utah.edu>
* src/session.c: Change meta_warning to meta_topic on failure to
connect to a session manager. Fixes#136218.
2004-06-17 Elijah Newren <newren@math.utah.edu>
Add support for _NET_WM_USER_TIME
* src/display.c:
(meta_display_open): Add _NET_WM_USER_TIME to atom_names[],
(event_callback): Manually set _NET_WM_USER_TIME upon KeyPress
(doesn't work since keyboard isn't grabbed) and ButtonPress (does
work), this is just a fallback for applications that don't update
this themselves.
* src/display.h: (struct _MetaDisplay): Add atom_net_wm_user_time field
* src/screen.c: (meta_screen_apply_startup_properties): Check for
TIMESTAMP provided from startup sequence as well.
* src/stack.c:
s/meta_window_set_stack_position/meta_window_set_stack_position_no_sync/,
(meta_window_set_stack_position): New function which calls the
meta_window_set_stack_position_no_sync function followed immediately
by calling meta_stack_sync_to_server.
* src/window-props.c:
(init_net_wm_user_time), (reload_net_wm_user_time): new functions,
(reload_wm_hints): also load atom_net_wm_user_time
* src/window.c:
new XSERVER_TIME_IS_LATER macro (accounts for timestamp wraparound),
(meta_window_new_with_attrs): add timestamp attributes,
(window_takes_focus_on_map): use TIMESTAMP from startup
notification and _NET_WM_USER_TIME to decide whether to focus new
windows,
(meta_window_show): if app doesn't take focus on map, place it
just below the focused window in the stack
(process_property_notify): check for changes to _NET_WM_USRE_TIME,
(meta_window_stack_just_below): new function
* src/window.h:
(_MetaWindow struct): new fields for initial_timestamp,
initial_timestamp_set, net_wm_user_time_set, and net_wm_user_time,
(meta_window_stack_just_below): new function