_MUTTER_HINTS
A per-window _MUTTER_HINTS property allowing plugins to use custom hints. The property holds a colon separated list of key=value pairs; plugin-specific keys must be suitably namespaced, while 'mutter-' prefix is reserved for internal Mutter use only. This commit adds MetaWindow::mutter-hints property, and meta_window_get_mutter_hints() accessor, as well as the internal machinery for reading and updating of the hints. https://bugzilla.gnome.org/show_bug.cgi?id=613123
This commit is contained in:
@@ -523,6 +523,49 @@ reload_wm_name (MetaWindow *window,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
reload_mutter_hints (MetaWindow *window,
|
||||
MetaPropValue *value,
|
||||
gboolean initial)
|
||||
{
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
{
|
||||
char *new_hints = value->v.str;
|
||||
char *old_hints = window->mutter_hints;
|
||||
gboolean changed = FALSE;
|
||||
|
||||
if (new_hints)
|
||||
{
|
||||
if (!old_hints || strcmp (new_hints, old_hints))
|
||||
changed = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (old_hints)
|
||||
changed = TRUE;
|
||||
}
|
||||
|
||||
if (changed)
|
||||
{
|
||||
g_free (old_hints);
|
||||
|
||||
if (new_hints)
|
||||
window->mutter_hints = g_strdup (new_hints);
|
||||
else
|
||||
window->mutter_hints = NULL;
|
||||
|
||||
g_object_notify (G_OBJECT (window), "mutter-hints");
|
||||
}
|
||||
}
|
||||
else if (window->mutter_hints)
|
||||
{
|
||||
g_free (window->mutter_hints);
|
||||
window->mutter_hints = NULL;
|
||||
|
||||
g_object_notify (G_OBJECT (window), "mutter-hints");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
set_icon_title (MetaWindow *window,
|
||||
const char *title)
|
||||
@@ -1506,6 +1549,7 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
|
||||
{ XA_WM_CLASS, META_PROP_VALUE_CLASS_HINT, reload_wm_class, TRUE, TRUE },
|
||||
{ display->atom__NET_WM_PID, META_PROP_VALUE_CARDINAL, reload_net_wm_pid, TRUE, TRUE },
|
||||
{ XA_WM_NAME, META_PROP_VALUE_TEXT_PROPERTY, reload_wm_name, TRUE, TRUE },
|
||||
{ display->atom__MUTTER_HINTS, META_PROP_VALUE_TEXT_PROPERTY, reload_mutter_hints, TRUE, TRUE },
|
||||
{ display->atom__NET_WM_ICON_NAME, META_PROP_VALUE_UTF8, reload_net_wm_icon_name, TRUE, FALSE },
|
||||
{ XA_WM_ICON_NAME, META_PROP_VALUE_TEXT_PROPERTY, reload_wm_icon_name, TRUE, FALSE },
|
||||
{ display->atom__NET_WM_DESKTOP, META_PROP_VALUE_CARDINAL, reload_net_wm_desktop, TRUE, FALSE },
|
||||
|
Reference in New Issue
Block a user