mirror of
https://github.com/brl/mutter.git
synced 2024-12-23 19:42:05 +00:00
[MetaDisplay] Added window-demands-attention signal
Having a MetaDisplay::window-demands-attention signal allows to deal with windows demanding attention in a cetralized fashion. The signal is emitted when a window is created with initial demands-attention state and/or when the state changes later on. Based on original patch by Jon Nettleton. https://bugzilla.gnome.org/show_bug.cgi?id=597052
This commit is contained in:
parent
2a14deab0c
commit
7579b691df
@ -130,6 +130,7 @@ enum
|
|||||||
OVERLAY_KEY,
|
OVERLAY_KEY,
|
||||||
FOCUS_WINDOW,
|
FOCUS_WINDOW,
|
||||||
WINDOW_CREATED,
|
WINDOW_CREATED,
|
||||||
|
WINDOW_DEMANDS_ATTENTION,
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -236,6 +237,14 @@ meta_display_class_init (MetaDisplayClass *klass)
|
|||||||
g_cclosure_marshal_VOID__OBJECT,
|
g_cclosure_marshal_VOID__OBJECT,
|
||||||
G_TYPE_NONE, 1, META_TYPE_WINDOW);
|
G_TYPE_NONE, 1, META_TYPE_WINDOW);
|
||||||
|
|
||||||
|
display_signals[WINDOW_DEMANDS_ATTENTION] =
|
||||||
|
g_signal_new ("window-demands-attention",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__OBJECT,
|
||||||
|
G_TYPE_NONE, 1, META_TYPE_WINDOW);
|
||||||
|
|
||||||
g_object_class_install_property (object_class,
|
g_object_class_install_property (object_class,
|
||||||
PROP_FOCUS_WINDOW,
|
PROP_FOCUS_WINDOW,
|
||||||
|
@ -1109,6 +1109,9 @@ meta_window_new_with_attrs (MetaDisplay *display,
|
|||||||
|
|
||||||
meta_display_notify_window_created (display, window);
|
meta_display_notify_window_created (display, window);
|
||||||
|
|
||||||
|
if (window->wm_state_demands_attention)
|
||||||
|
g_signal_emit_by_name (window->display, "window-demands-attention", window);
|
||||||
|
|
||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2672,7 +2675,11 @@ meta_window_show (MetaWindow *window)
|
|||||||
window->initial_timestamp_set = FALSE;
|
window->initial_timestamp_set = FALSE;
|
||||||
|
|
||||||
if (notify_demands_attention)
|
if (notify_demands_attention)
|
||||||
g_object_notify (G_OBJECT (window), "demands-attention");
|
{
|
||||||
|
g_object_notify (G_OBJECT (window), "demands-attention");
|
||||||
|
g_signal_emit_by_name (window->display, "window-demands-attention",
|
||||||
|
window);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -8664,6 +8671,8 @@ meta_window_set_demands_attention (MetaWindow *window)
|
|||||||
window->wm_state_demands_attention = TRUE;
|
window->wm_state_demands_attention = TRUE;
|
||||||
set_net_wm_state (window);
|
set_net_wm_state (window);
|
||||||
g_object_notify (G_OBJECT (window), "demands-attention");
|
g_object_notify (G_OBJECT (window), "demands-attention");
|
||||||
|
g_signal_emit_by_name (window->display, "window-demands-attention",
|
||||||
|
window);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user