summaryrefslogtreecommitdiff
path: root/src/window-props.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@pobox.com>2002-12-01 03:58:04 +0000
committerHavoc Pennington <hp@src.gnome.org>2002-12-01 03:58:04 +0000
commit5e1439f89e7acd7d57c4027eea2160953fb323f1 (patch)
tree43c90978783096f9858b781cc18b172d8f56192a /src/window-props.c
parenteb40c5c2cfed8f4dae46fe865526cf880feec7ba (diff)
downloadmetacity-5e1439f89e7acd7d57c4027eea2160953fb323f1.tar.gz
lengthen to 15 seconds
2002-11-30 Havoc Pennington <hp@pobox.com> * src/screen.c (STARTUP_TIMEOUT): lengthen to 15 seconds * src/util.c (utf8_fputs): hmm, return a value * src/screen.c (meta_screen_apply_startup_properties): new function to apply initial workspace based on startup sequence. * src/window.c (meta_window_new): load _NET_STARTUP_ID (meta_window_get_startup_id): new function * src/window-props.c (meta_display_init_window_prop_hooks): add hooks for _NET_STARTUP_ID * src/display.c (event_callback): send property events to groups. * src/xprops.c (meta_prop_get_values): make a type of INVALID mean to ignore that property (don't fetch its value). * src/group.c (meta_group_property_notify): new function * src/screen.c (set_supported_hint): support _NET_STARTUP_ID * src/display.c (meta_display_open): add _NET_STARTUP_ID to atoms we initialize * src/group-private.h: private header shared between group-props.c, group.c * src/group-props.h, src/group-props.c: new files to contain functions for retrieving group properties * src/window.c (meta_window_same_application): change this a bit to work with new definition of group * src/group.c (meta_window_get_group): always create a group for every window, using the window's own ID as group leader if required. * src/window.c (update_wm_hints): handle changes to group leader * src/group.c (meta_window_group_leader_changed): new function * src/display.h (struct _MetaDisplay): _NET_WM_WINDOW_TYPE_SPLASH, not SPLASHSCREEN. Reported by Gregory Merchan and Matthias Clasen. * src/screen.c (startup_sequence_timeout): when timing out a startup sequence, send a remove message, don't just time it out locally.
Diffstat (limited to 'src/window-props.c')
-rw-r--r--src/window-props.c42
1 files changed, 37 insertions, 5 deletions
diff --git a/src/window-props.c b/src/window-props.c
index 9bcfb1c3..f1d19ce6 100644
--- a/src/window-props.c
+++ b/src/window-props.c
@@ -97,10 +97,12 @@ init_prop_value (MetaDisplay *display,
MetaPropValue *value)
{
MetaWindowPropHooks *hooks;
+
+ value->type = META_PROP_VALUE_INVALID;
+ value->atom = None;
hooks = find_hooks (display, property);
- g_assert (hooks != NULL);
- if (hooks->init_func != NULL)
+ if (hooks && hooks->init_func != NULL)
(* hooks->init_func) (display, property, value);
}
@@ -111,8 +113,7 @@ reload_prop_value (MetaWindow *window,
MetaWindowPropHooks *hooks;
hooks = find_hooks (window->display, value->atom);
- g_assert (hooks != NULL);
- if (hooks->reload_func != NULL)
+ if (hooks && hooks->reload_func != NULL)
(* hooks->reload_func) (window, value);
}
@@ -385,7 +386,33 @@ reload_win_workspace (MetaWindow *window,
}
}
-#define N_HOOKS 22
+
+static void
+init_net_startup_id (MetaDisplay *display,
+ Atom property,
+ MetaPropValue *value)
+{
+ value->type = META_PROP_VALUE_UTF8;
+ value->atom = display->atom_net_startup_id;
+}
+
+static void
+reload_net_startup_id (MetaWindow *window,
+ MetaPropValue *value)
+{
+ g_free (window->startup_id);
+
+ if (value->type != META_PROP_VALUE_INVALID)
+ window->startup_id = g_strdup (value->v.str);
+ else
+ window->startup_id = NULL;
+
+ meta_verbose ("New _NET_STARTUP_ID \"%s\" for %s\n",
+ window->startup_id ? window->startup_id : "unset",
+ window->desc);
+}
+
+#define N_HOOKS 23
void
meta_display_init_window_prop_hooks (MetaDisplay *display)
@@ -509,6 +536,11 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
hooks[i].init_func = NULL;
hooks[i].reload_func = NULL;
++i;
+
+ hooks[i].property = display->atom_net_startup_id;
+ hooks[i].init_func = init_net_startup_id;
+ hooks[i].reload_func = reload_net_startup_id;
+ ++i;
if (i != N_HOOKS)
g_error ("Initialized %d hooks should have been %d\n", i, N_HOOKS);