summaryrefslogtreecommitdiff
path: root/src/display.c
diff options
context:
space:
mode:
authorElijah Newren <newren@math.utah.edu>2004-06-24 15:47:05 +0000
committerElijah Newren <newren@src.gnome.org>2004-06-24 15:47:05 +0000
commit28a54c6bb4f5e4157cec8e6a69736ceef07c3099 (patch)
tree139266d9301e6d83ab5689bc78a9237c3c711e0b /src/display.c
parentef1ecc812858e3a5c2460a2689118f11d43142a8 (diff)
downloadmetacity-28a54c6bb4f5e4157cec8e6a69736ceef07c3099.tar.gz
Add support for _NET_WM_USER_TIME
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
Diffstat (limited to 'src/display.c')
-rw-r--r--src/display.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/display.c b/src/display.c
index 50ff9583..fa574bfe 100644
--- a/src/display.c
+++ b/src/display.c
@@ -281,6 +281,7 @@ meta_display_open (const char *name)
"_NET_WM_ACTION_MINIMIZE",
"_NET_FRAME_EXTENTS",
"_NET_REQUEST_FRAME_EXTENTS",
+ "_NET_WM_USER_TIME",
};
Atom atoms[G_N_ELEMENTS(atom_names)];
@@ -427,6 +428,7 @@ meta_display_open (const char *name)
display->atom_net_wm_action_minimize = atoms[82];
display->atom_net_frame_extents = atoms[83];
display->atom_net_request_frame_extents = atoms[84];
+ display->atom_net_wm_user_time = atoms[85];
display->prop_hooks = NULL;
meta_display_init_window_prop_hooks (display);
@@ -1177,7 +1179,7 @@ event_callback (XEvent *event,
Window modified;
gboolean frame_was_receiver;
gboolean filter_out_event;
-
+
display = data;
if (dump_events)
@@ -1326,6 +1328,16 @@ event_callback (XEvent *event,
}
}
#endif /* HAVE_SHAPE */
+
+ if (window && ((event->type == KeyPress) || (event->type == ButtonPress)))
+ {
+ g_assert (CurrentTime != display->current_time);
+ meta_topic (META_DEBUG_WINDOW_STATE,
+ "Metacity set %s's net_wm_user_time to %d.\n",
+ window->desc, display->current_time);
+ window->net_wm_user_time_set = TRUE;
+ window->net_wm_user_time = display->current_time;
+ }
switch (event->type)
{