Export meta_screen_get_startup_sequences, add change signal
It's useful for plugins to be able to get access to the startup-notification data that Mutter already has. Add an accessor and change signal when recieve an event.
This commit is contained in:
parent
ff84b35e5d
commit
8a9e2877da
@ -85,6 +85,7 @@ enum
|
|||||||
WORKSPACE_ADDED,
|
WORKSPACE_ADDED,
|
||||||
WORKSPACE_REMOVED,
|
WORKSPACE_REMOVED,
|
||||||
WORKSPACE_SWITCHED,
|
WORKSPACE_SWITCHED,
|
||||||
|
STARTUP_SEQUENCE_CHANGED,
|
||||||
|
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
@ -199,6 +200,15 @@ meta_screen_class_init (MetaScreenClass *klass)
|
|||||||
G_TYPE_INT,
|
G_TYPE_INT,
|
||||||
MUTTER_TYPE_MOTION_DIRECTION);
|
MUTTER_TYPE_MOTION_DIRECTION);
|
||||||
|
|
||||||
|
screen_signals[STARTUP_SEQUENCE_CHANGED] =
|
||||||
|
g_signal_new ("startup-sequence-changed",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__POINTER,
|
||||||
|
G_TYPE_NONE, 1, G_TYPE_POINTER);
|
||||||
|
|
||||||
screen_signals[TOGGLE_RECORDING] =
|
screen_signals[TOGGLE_RECORDING] =
|
||||||
g_signal_new ("toggle-recording",
|
g_signal_new ("toggle-recording",
|
||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
@ -2662,9 +2672,9 @@ add_sequence (MetaScreen *screen,
|
|||||||
* to compute exactly when we may next time out
|
* to compute exactly when we may next time out
|
||||||
*/
|
*/
|
||||||
if (screen->startup_sequence_timeout == 0)
|
if (screen->startup_sequence_timeout == 0)
|
||||||
screen->startup_sequence_timeout = g_timeout_add (1000,
|
screen->startup_sequence_timeout = g_timeout_add_seconds (1,
|
||||||
startup_sequence_timeout,
|
startup_sequence_timeout,
|
||||||
screen);
|
screen);
|
||||||
|
|
||||||
update_startup_feedback (screen);
|
update_startup_feedback (screen);
|
||||||
}
|
}
|
||||||
@ -2679,8 +2689,7 @@ remove_sequence (MetaScreen *screen,
|
|||||||
|
|
||||||
screen->startup_sequences = g_slist_remove (screen->startup_sequences,
|
screen->startup_sequences = g_slist_remove (screen->startup_sequences,
|
||||||
sequence);
|
sequence);
|
||||||
sn_startup_sequence_unref (sequence);
|
|
||||||
|
|
||||||
if (screen->startup_sequences == NULL &&
|
if (screen->startup_sequences == NULL &&
|
||||||
screen->startup_sequence_timeout != 0)
|
screen->startup_sequence_timeout != 0)
|
||||||
{
|
{
|
||||||
@ -2689,6 +2698,8 @@ remove_sequence (MetaScreen *screen,
|
|||||||
}
|
}
|
||||||
|
|
||||||
update_startup_feedback (screen);
|
update_startup_feedback (screen);
|
||||||
|
|
||||||
|
sn_startup_sequence_unref (sequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
@ -2779,7 +2790,9 @@ meta_screen_sn_event (SnMonitorEvent *event,
|
|||||||
screen = user_data;
|
screen = user_data;
|
||||||
|
|
||||||
sequence = sn_monitor_event_get_startup_sequence (event);
|
sequence = sn_monitor_event_get_startup_sequence (event);
|
||||||
|
|
||||||
|
sn_startup_sequence_ref (sequence);
|
||||||
|
|
||||||
switch (sn_monitor_event_get_type (event))
|
switch (sn_monitor_event_get_type (event))
|
||||||
{
|
{
|
||||||
case SN_MONITOR_EVENT_INITIATED:
|
case SN_MONITOR_EVENT_INITIATED:
|
||||||
@ -2818,6 +2831,22 @@ meta_screen_sn_event (SnMonitorEvent *event,
|
|||||||
sn_startup_sequence_get_id (sequence));
|
sn_startup_sequence_get_id (sequence));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_signal_emit (G_OBJECT (screen), screen_signals[STARTUP_SEQUENCE_CHANGED], 0, sequence);
|
||||||
|
|
||||||
|
sn_startup_sequence_unref (sequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* meta_screen_get_startup_sequences:
|
||||||
|
* @screen:
|
||||||
|
*
|
||||||
|
* Return value: (transfer none): Currently active #SnStartupSequence items
|
||||||
|
*/
|
||||||
|
GSList *
|
||||||
|
meta_screen_get_startup_sequences (MetaScreen *screen)
|
||||||
|
{
|
||||||
|
return screen->startup_sequences;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -55,6 +55,8 @@ MetaScreen *meta_screen_for_x_screen (Screen *xscreen);
|
|||||||
void meta_screen_set_cm_selection (MetaScreen *screen);
|
void meta_screen_set_cm_selection (MetaScreen *screen);
|
||||||
void meta_screen_unset_cm_selection (MetaScreen *screen);
|
void meta_screen_unset_cm_selection (MetaScreen *screen);
|
||||||
|
|
||||||
|
GSList *meta_screen_get_startup_sequences (MetaScreen *screen);
|
||||||
|
|
||||||
GList *meta_screen_get_workspaces (MetaScreen *screen);
|
GList *meta_screen_get_workspaces (MetaScreen *screen);
|
||||||
|
|
||||||
int meta_screen_get_n_workspaces (MetaScreen *screen);
|
int meta_screen_get_n_workspaces (MetaScreen *screen);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user