shell: Use g_object_notify_by_pspec() where possible
It's slightly more efficient not having to do property lookups. While that is unlikely to be a concern for the properties in question, it's still good practice and makes the code base a bit more consistent. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2168>
This commit is contained in:
parent
e3a3f79200
commit
17719352f3
101
src/shell-app.c
101
src/shell-app.c
@ -90,14 +90,19 @@ struct _ShellApp
|
|||||||
|
|
||||||
enum {
|
enum {
|
||||||
PROP_0,
|
PROP_0,
|
||||||
|
|
||||||
PROP_STATE,
|
PROP_STATE,
|
||||||
PROP_BUSY,
|
PROP_BUSY,
|
||||||
PROP_ID,
|
PROP_ID,
|
||||||
PROP_ACTION_GROUP,
|
PROP_ACTION_GROUP,
|
||||||
PROP_ICON,
|
PROP_ICON,
|
||||||
PROP_APP_INFO
|
PROP_APP_INFO,
|
||||||
|
|
||||||
|
N_PROPS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static GParamSpec *props[N_PROPS] = { NULL, };
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
WINDOWS_CHANGED,
|
WINDOWS_CHANGED,
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
@ -212,7 +217,7 @@ on_window_icon_changed (GObject *object,
|
|||||||
if (!app->fallback_icon)
|
if (!app->fallback_icon)
|
||||||
app->fallback_icon = g_themed_icon_new ("application-x-executable");
|
app->fallback_icon = g_themed_icon_new ("application-x-executable");
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (app), "icon");
|
g_object_notify_by_pspec (G_OBJECT (app), props[PROP_ICON]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -511,7 +516,7 @@ shell_app_update_window_actions (ShellApp *app, MetaWindow *window)
|
|||||||
|
|
||||||
g_assert (app->running_state->muxer);
|
g_assert (app->running_state->muxer);
|
||||||
gtk_action_muxer_insert (app->running_state->muxer, "win", actions);
|
gtk_action_muxer_insert (app->running_state->muxer, "win", actions);
|
||||||
g_object_notify (G_OBJECT (app), "action-group");
|
g_object_notify_by_pspec (G_OBJECT (app), props[PROP_ACTION_GROUP]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -963,7 +968,7 @@ shell_app_state_transition (ShellApp *app,
|
|||||||
|
|
||||||
_shell_app_system_notify_app_state_changed (shell_app_system_get_default (), app);
|
_shell_app_system_notify_app_state_changed (shell_app_system_get_default (), app);
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (app), "state");
|
g_object_notify_by_pspec (G_OBJECT (app), props[PROP_STATE]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1053,7 +1058,7 @@ busy_changed_cb (GObject *object,
|
|||||||
|
|
||||||
g_assert (SHELL_IS_APP (app));
|
g_assert (SHELL_IS_APP (app));
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (app), "busy");
|
g_object_notify_by_pspec (G_OBJECT (app), props[PROP_BUSY]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1076,7 +1081,7 @@ get_application_proxy (GObject *source,
|
|||||||
G_CALLBACK (busy_changed_cb),
|
G_CALLBACK (busy_changed_cb),
|
||||||
app);
|
app);
|
||||||
if (shell_org_gtk_application_get_busy (proxy))
|
if (shell_org_gtk_application_get_busy (proxy))
|
||||||
g_object_notify (G_OBJECT (app), "busy");
|
g_object_notify_by_pspec (G_OBJECT (app), props[PROP_BUSY]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (app->running_state != NULL &&
|
if (app->running_state != NULL &&
|
||||||
@ -1178,7 +1183,7 @@ _shell_app_remove_window (ShellApp *app,
|
|||||||
|
|
||||||
/* Select a new icon from a different window. */
|
/* Select a new icon from a different window. */
|
||||||
g_clear_object (&app->fallback_icon);
|
g_clear_object (&app->fallback_icon);
|
||||||
g_object_notify (G_OBJECT (app), "icon");
|
g_object_notify_by_pspec (G_OBJECT (app), props[PROP_ICON]);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_object_unref (window);
|
g_object_unref (window);
|
||||||
@ -1681,27 +1686,25 @@ shell_app_class_init(ShellAppClass *klass)
|
|||||||
* The high-level state of the application, effectively whether it's
|
* The high-level state of the application, effectively whether it's
|
||||||
* running or not, or transitioning between those states.
|
* running or not, or transitioning between those states.
|
||||||
*/
|
*/
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_STATE] =
|
||||||
PROP_STATE,
|
g_param_spec_enum ("state",
|
||||||
g_param_spec_enum ("state",
|
"State",
|
||||||
"State",
|
"Application state",
|
||||||
"Application state",
|
SHELL_TYPE_APP_STATE,
|
||||||
SHELL_TYPE_APP_STATE,
|
SHELL_APP_STATE_STOPPED,
|
||||||
SHELL_APP_STATE_STOPPED,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ShellApp:busy:
|
* ShellApp:busy:
|
||||||
*
|
*
|
||||||
* Whether the application has marked itself as busy.
|
* Whether the application has marked itself as busy.
|
||||||
*/
|
*/
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_BUSY] =
|
||||||
PROP_BUSY,
|
g_param_spec_boolean ("busy",
|
||||||
g_param_spec_boolean ("busy",
|
"Busy",
|
||||||
"Busy",
|
"Busy state",
|
||||||
"Busy state",
|
FALSE,
|
||||||
FALSE,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ShellApp:id:
|
* ShellApp:id:
|
||||||
@ -1709,26 +1712,24 @@ shell_app_class_init(ShellAppClass *klass)
|
|||||||
* The id of this application (a desktop filename, or a special string
|
* The id of this application (a desktop filename, or a special string
|
||||||
* like window:0xabcd1234)
|
* like window:0xabcd1234)
|
||||||
*/
|
*/
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_ID] =
|
||||||
PROP_ID,
|
g_param_spec_string ("id",
|
||||||
g_param_spec_string ("id",
|
"Application id",
|
||||||
"Application id",
|
"The desktop file id of this ShellApp",
|
||||||
"The desktop file id of this ShellApp",
|
NULL,
|
||||||
NULL,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ShellApp:icon:
|
* ShellApp:icon:
|
||||||
*
|
*
|
||||||
* The #GIcon representing this ShellApp
|
* The #GIcon representing this ShellApp
|
||||||
*/
|
*/
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_ICON] =
|
||||||
PROP_ICON,
|
g_param_spec_object ("icon",
|
||||||
g_param_spec_object ("icon",
|
"GIcon",
|
||||||
"GIcon",
|
"The GIcon representing this app",
|
||||||
"The GIcon representing this app",
|
G_TYPE_ICON,
|
||||||
G_TYPE_ICON,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ShellApp:action-group:
|
* ShellApp:action-group:
|
||||||
@ -1736,24 +1737,24 @@ shell_app_class_init(ShellAppClass *klass)
|
|||||||
* The #GDBusActionGroup associated with this ShellApp, if any. See the
|
* The #GDBusActionGroup associated with this ShellApp, if any. See the
|
||||||
* documentation of #GApplication and #GActionGroup for details.
|
* documentation of #GApplication and #GActionGroup for details.
|
||||||
*/
|
*/
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_ACTION_GROUP] =
|
||||||
PROP_ACTION_GROUP,
|
g_param_spec_object ("action-group",
|
||||||
g_param_spec_object ("action-group",
|
"Application Action Group",
|
||||||
"Application Action Group",
|
"The action group exported by the remote application",
|
||||||
"The action group exported by the remote application",
|
G_TYPE_ACTION_GROUP,
|
||||||
G_TYPE_ACTION_GROUP,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
/**
|
/**
|
||||||
* ShellApp:app-info:
|
* ShellApp:app-info:
|
||||||
*
|
*
|
||||||
* The #GDesktopAppInfo associated with this ShellApp, if any.
|
* The #GDesktopAppInfo associated with this ShellApp, if any.
|
||||||
*/
|
*/
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_APP_INFO] =
|
||||||
PROP_APP_INFO,
|
g_param_spec_object ("app-info",
|
||||||
g_param_spec_object ("app-info",
|
"DesktopAppInfo",
|
||||||
"DesktopAppInfo",
|
"The DesktopAppInfo associated with this app",
|
||||||
"The DesktopAppInfo associated with this app",
|
G_TYPE_DESKTOP_APP_INFO,
|
||||||
G_TYPE_DESKTOP_APP_INFO,
|
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
|
|
||||||
|
|
||||||
|
g_object_class_install_properties (gobject_class, N_PROPS, props);
|
||||||
}
|
}
|
||||||
|
@ -109,8 +109,12 @@ enum {
|
|||||||
PROP_FRAME_TIMESTAMPS,
|
PROP_FRAME_TIMESTAMPS,
|
||||||
PROP_FRAME_FINISH_TIMESTAMP,
|
PROP_FRAME_FINISH_TIMESTAMP,
|
||||||
PROP_SWITCHEROO_CONTROL,
|
PROP_SWITCHEROO_CONTROL,
|
||||||
|
|
||||||
|
N_PROPS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static GParamSpec *props[N_PROPS] = { NULL, };
|
||||||
|
|
||||||
/* Signals */
|
/* Signals */
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -144,7 +148,7 @@ got_switcheroo_control_gpus_property_cb (GObject *source_object,
|
|||||||
|
|
||||||
global = user_data;
|
global = user_data;
|
||||||
g_dbus_proxy_set_cached_property (global->switcheroo_control, "GPUs", gpus);
|
g_dbus_proxy_set_cached_property (global->switcheroo_control, "GPUs", gpus);
|
||||||
g_object_notify (G_OBJECT (global), "switcheroo-control");
|
g_object_notify_by_pspec (G_OBJECT (global), props[PROP_SWITCHEROO_CONTROL]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -173,7 +177,7 @@ switcheroo_control_ready_cb (GObject *source_object,
|
|||||||
cached_props = g_dbus_proxy_get_cached_property_names (global->switcheroo_control);
|
cached_props = g_dbus_proxy_get_cached_property_names (global->switcheroo_control);
|
||||||
if (cached_props != NULL && g_strv_contains ((const gchar * const *) cached_props, "GPUs"))
|
if (cached_props != NULL && g_strv_contains ((const gchar * const *) cached_props, "GPUs"))
|
||||||
{
|
{
|
||||||
g_object_notify (G_OBJECT (global), "switcheroo-control");
|
g_object_notify_by_pspec (G_OBJECT (global), props[PROP_SWITCHEROO_CONTROL]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* Delay property notification until we have all the properties gathered */
|
/* Delay property notification until we have all the properties gathered */
|
||||||
@ -330,7 +334,7 @@ switcheroo_vanished_cb (GDBusConnection *connection,
|
|||||||
|
|
||||||
g_debug ("switcheroo-control vanished");
|
g_debug ("switcheroo-control vanished");
|
||||||
g_clear_object (&global->switcheroo_control);
|
g_clear_object (&global->switcheroo_control);
|
||||||
g_object_notify (G_OBJECT (global), "switcheroo-control");
|
g_object_notify_by_pspec (G_OBJECT (global), props[PROP_SWITCHEROO_CONTROL]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -488,145 +492,140 @@ shell_global_class_init (ShellGlobalClass *klass)
|
|||||||
NULL, NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_SESSION_MODE] =
|
||||||
PROP_SESSION_MODE,
|
g_param_spec_string ("session-mode",
|
||||||
g_param_spec_string ("session-mode",
|
"Session Mode",
|
||||||
"Session Mode",
|
"The session mode to use",
|
||||||
"The session mode to use",
|
"user",
|
||||||
"user",
|
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_SCREEN_WIDTH] =
|
||||||
PROP_SCREEN_WIDTH,
|
g_param_spec_int ("screen-width",
|
||||||
g_param_spec_int ("screen-width",
|
"Screen Width",
|
||||||
"Screen Width",
|
"Screen width, in pixels",
|
||||||
"Screen width, in pixels",
|
0, G_MAXINT, 1,
|
||||||
0, G_MAXINT, 1,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_SCREEN_HEIGHT] =
|
||||||
PROP_SCREEN_HEIGHT,
|
g_param_spec_int ("screen-height",
|
||||||
g_param_spec_int ("screen-height",
|
"Screen Height",
|
||||||
"Screen Height",
|
"Screen height, in pixels",
|
||||||
"Screen height, in pixels",
|
0, G_MAXINT, 1,
|
||||||
0, G_MAXINT, 1,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_BACKEND,
|
|
||||||
g_param_spec_object ("backend",
|
|
||||||
"Backend",
|
|
||||||
"MetaBackend object",
|
|
||||||
META_TYPE_BACKEND,
|
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_CONTEXT,
|
|
||||||
g_param_spec_object ("context",
|
|
||||||
"Context",
|
|
||||||
"MetaContext object",
|
|
||||||
META_TYPE_CONTEXT,
|
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_DISPLAY,
|
|
||||||
g_param_spec_object ("display",
|
|
||||||
"Display",
|
|
||||||
"Metacity display object for the shell",
|
|
||||||
META_TYPE_DISPLAY,
|
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_BACKEND] =
|
||||||
PROP_WORKSPACE_MANAGER,
|
g_param_spec_object ("backend",
|
||||||
g_param_spec_object ("workspace-manager",
|
"Backend",
|
||||||
"Workspace manager",
|
"MetaBackend object",
|
||||||
"Workspace manager",
|
META_TYPE_BACKEND,
|
||||||
META_TYPE_WORKSPACE_MANAGER,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_CONTEXT] =
|
||||||
PROP_STAGE,
|
g_param_spec_object ("context",
|
||||||
g_param_spec_object ("stage",
|
"Context",
|
||||||
"Stage",
|
"MetaContext object",
|
||||||
"Stage holding the desktop scene graph",
|
META_TYPE_CONTEXT,
|
||||||
CLUTTER_TYPE_ACTOR,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_WINDOW_GROUP,
|
|
||||||
g_param_spec_object ("window-group",
|
|
||||||
"Window Group",
|
|
||||||
"Actor holding window actors",
|
|
||||||
CLUTTER_TYPE_ACTOR,
|
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_DISPLAY] =
|
||||||
PROP_TOP_WINDOW_GROUP,
|
g_param_spec_object ("display",
|
||||||
g_param_spec_object ("top-window-group",
|
"Display",
|
||||||
"Top Window Group",
|
"Metacity display object for the shell",
|
||||||
"Actor holding override-redirect windows",
|
META_TYPE_DISPLAY,
|
||||||
CLUTTER_TYPE_ACTOR,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_WORKSPACE_MANAGER] =
|
||||||
PROP_WINDOW_MANAGER,
|
g_param_spec_object ("workspace-manager",
|
||||||
g_param_spec_object ("window-manager",
|
"Workspace manager",
|
||||||
"Window Manager",
|
"Workspace manager",
|
||||||
"Window management interface",
|
META_TYPE_WORKSPACE_MANAGER,
|
||||||
SHELL_TYPE_WM,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_STAGE] =
|
||||||
PROP_SETTINGS,
|
g_param_spec_object ("stage",
|
||||||
g_param_spec_object ("settings",
|
"Stage",
|
||||||
"Settings",
|
"Stage holding the desktop scene graph",
|
||||||
"GSettings instance for gnome-shell configuration",
|
CLUTTER_TYPE_ACTOR,
|
||||||
G_TYPE_SETTINGS,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_WINDOW_GROUP] =
|
||||||
PROP_DATADIR,
|
g_param_spec_object ("window-group",
|
||||||
g_param_spec_string ("datadir",
|
"Window Group",
|
||||||
"Data directory",
|
"Actor holding window actors",
|
||||||
"Directory containing gnome-shell data files",
|
CLUTTER_TYPE_ACTOR,
|
||||||
NULL,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_TOP_WINDOW_GROUP] =
|
||||||
PROP_IMAGEDIR,
|
g_param_spec_object ("top-window-group",
|
||||||
g_param_spec_string ("imagedir",
|
"Top Window Group",
|
||||||
"Image directory",
|
"Actor holding override-redirect windows",
|
||||||
"Directory containing gnome-shell image files",
|
CLUTTER_TYPE_ACTOR,
|
||||||
NULL,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_WINDOW_MANAGER] =
|
||||||
PROP_USERDATADIR,
|
g_param_spec_object ("window-manager",
|
||||||
g_param_spec_string ("userdatadir",
|
"Window Manager",
|
||||||
"User data directory",
|
"Window management interface",
|
||||||
"Directory containing gnome-shell user data",
|
SHELL_TYPE_WM,
|
||||||
NULL,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_SETTINGS] =
|
||||||
PROP_FOCUS_MANAGER,
|
g_param_spec_object ("settings",
|
||||||
g_param_spec_object ("focus-manager",
|
"Settings",
|
||||||
"Focus manager",
|
"GSettings instance for gnome-shell configuration",
|
||||||
"The shell's StFocusManager",
|
G_TYPE_SETTINGS,
|
||||||
ST_TYPE_FOCUS_MANAGER,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_DATADIR] =
|
||||||
PROP_FRAME_TIMESTAMPS,
|
g_param_spec_string ("datadir",
|
||||||
g_param_spec_boolean ("frame-timestamps",
|
"Data directory",
|
||||||
"Frame Timestamps",
|
"Directory containing gnome-shell data files",
|
||||||
"Whether to log frame timestamps in the performance log",
|
NULL,
|
||||||
FALSE,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_IMAGEDIR] =
|
||||||
PROP_FRAME_FINISH_TIMESTAMP,
|
g_param_spec_string ("imagedir",
|
||||||
g_param_spec_boolean ("frame-finish-timestamp",
|
"Image directory",
|
||||||
"Frame Finish Timestamps",
|
"Directory containing gnome-shell image files",
|
||||||
"Whether at the end of a frame to call glFinish and log paintCompletedTimestamp",
|
NULL,
|
||||||
FALSE,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_USERDATADIR] =
|
||||||
PROP_SWITCHEROO_CONTROL,
|
g_param_spec_string ("userdatadir",
|
||||||
g_param_spec_object ("switcheroo-control",
|
"User data directory",
|
||||||
"switcheroo-control",
|
"Directory containing gnome-shell user data",
|
||||||
"D-Bus Proxy for switcheroo-control daemon",
|
NULL,
|
||||||
G_TYPE_DBUS_PROXY,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
|
props[PROP_FOCUS_MANAGER] =
|
||||||
|
g_param_spec_object ("focus-manager",
|
||||||
|
"Focus manager",
|
||||||
|
"The shell's StFocusManager",
|
||||||
|
ST_TYPE_FOCUS_MANAGER,
|
||||||
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
|
props[PROP_FRAME_TIMESTAMPS] =
|
||||||
|
g_param_spec_boolean ("frame-timestamps",
|
||||||
|
"Frame Timestamps",
|
||||||
|
"Whether to log frame timestamps in the performance log",
|
||||||
|
FALSE,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
|
props[PROP_FRAME_FINISH_TIMESTAMP] =
|
||||||
|
g_param_spec_boolean ("frame-finish-timestamp",
|
||||||
|
"Frame Finish Timestamps",
|
||||||
|
"Whether at the end of a frame to call glFinish and log paintCompletedTimestamp",
|
||||||
|
FALSE,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
|
props[PROP_SWITCHEROO_CONTROL] =
|
||||||
|
g_param_spec_object ("switcheroo-control",
|
||||||
|
"switcheroo-control",
|
||||||
|
"D-Bus Proxy for switcheroo-control daemon",
|
||||||
|
G_TYPE_DBUS_PROXY,
|
||||||
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
|
g_object_class_install_properties (gobject_class, N_PROPS, props);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -857,7 +856,7 @@ global_stage_notify_width (GObject *gobject,
|
|||||||
{
|
{
|
||||||
ShellGlobal *global = SHELL_GLOBAL (data);
|
ShellGlobal *global = SHELL_GLOBAL (data);
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (global), "screen-width");
|
g_object_notify_by_pspec (G_OBJECT (global), props[PROP_SCREEN_WIDTH]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -867,7 +866,7 @@ global_stage_notify_height (GObject *gobject,
|
|||||||
{
|
{
|
||||||
ShellGlobal *global = SHELL_GLOBAL (data);
|
ShellGlobal *global = SHELL_GLOBAL (data);
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (global), "screen-height");
|
g_object_notify_by_pspec (G_OBJECT (global), props[PROP_SCREEN_HEIGHT]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
@ -65,6 +65,17 @@ struct _ShellKeyringPrompt
|
|||||||
|
|
||||||
enum {
|
enum {
|
||||||
PROP_0,
|
PROP_0,
|
||||||
|
|
||||||
|
PROP_PASSWORD_VISIBLE,
|
||||||
|
PROP_CONFIRM_VISIBLE,
|
||||||
|
PROP_WARNING_VISIBLE,
|
||||||
|
PROP_CHOICE_VISIBLE,
|
||||||
|
PROP_PASSWORD_ACTOR,
|
||||||
|
PROP_CONFIRM_ACTOR,
|
||||||
|
|
||||||
|
N_PROPS,
|
||||||
|
|
||||||
|
/* GcrPrompt */
|
||||||
PROP_TITLE,
|
PROP_TITLE,
|
||||||
PROP_MESSAGE,
|
PROP_MESSAGE,
|
||||||
PROP_DESCRIPTION,
|
PROP_DESCRIPTION,
|
||||||
@ -75,15 +86,11 @@ enum {
|
|||||||
PROP_PASSWORD_STRENGTH,
|
PROP_PASSWORD_STRENGTH,
|
||||||
PROP_CALLER_WINDOW,
|
PROP_CALLER_WINDOW,
|
||||||
PROP_CONTINUE_LABEL,
|
PROP_CONTINUE_LABEL,
|
||||||
PROP_CANCEL_LABEL,
|
PROP_CANCEL_LABEL
|
||||||
PROP_PASSWORD_VISIBLE,
|
|
||||||
PROP_CONFIRM_VISIBLE,
|
|
||||||
PROP_WARNING_VISIBLE,
|
|
||||||
PROP_CHOICE_VISIBLE,
|
|
||||||
PROP_PASSWORD_ACTOR,
|
|
||||||
PROP_CONFIRM_ACTOR
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static GParamSpec *props[N_PROPS] = { NULL, };
|
||||||
|
|
||||||
static void shell_keyring_prompt_iface (GcrPromptIface *iface);
|
static void shell_keyring_prompt_iface (GcrPromptIface *iface);
|
||||||
|
|
||||||
G_DEFINE_TYPE_WITH_CODE (ShellKeyringPrompt, shell_keyring_prompt, G_TYPE_OBJECT,
|
G_DEFINE_TYPE_WITH_CODE (ShellKeyringPrompt, shell_keyring_prompt, G_TYPE_OBJECT,
|
||||||
@ -163,7 +170,7 @@ shell_keyring_prompt_set_property (GObject *obj,
|
|||||||
if (!self->warning)
|
if (!self->warning)
|
||||||
self->warning = g_strdup ("");
|
self->warning = g_strdup ("");
|
||||||
g_object_notify (obj, "warning");
|
g_object_notify (obj, "warning");
|
||||||
g_object_notify (obj, "warning-visible");
|
g_object_notify_by_pspec (obj, props[PROP_WARNING_VISIBLE]);
|
||||||
break;
|
break;
|
||||||
case PROP_CHOICE_LABEL:
|
case PROP_CHOICE_LABEL:
|
||||||
g_free (self->choice_label);
|
g_free (self->choice_label);
|
||||||
@ -171,7 +178,7 @@ shell_keyring_prompt_set_property (GObject *obj,
|
|||||||
if (!self->choice_label)
|
if (!self->choice_label)
|
||||||
self->choice_label = g_strdup ("");
|
self->choice_label = g_strdup ("");
|
||||||
g_object_notify (obj, "choice-label");
|
g_object_notify (obj, "choice-label");
|
||||||
g_object_notify (obj, "choice-visible");
|
g_object_notify_by_pspec (obj, props[PROP_CHOICE_VISIBLE]);
|
||||||
break;
|
break;
|
||||||
case PROP_CHOICE_CHOSEN:
|
case PROP_CHOICE_CHOSEN:
|
||||||
self->choice_chosen = g_value_get_boolean (value);
|
self->choice_chosen = g_value_get_boolean (value);
|
||||||
@ -180,7 +187,7 @@ shell_keyring_prompt_set_property (GObject *obj,
|
|||||||
case PROP_PASSWORD_NEW:
|
case PROP_PASSWORD_NEW:
|
||||||
self->password_new = g_value_get_boolean (value);
|
self->password_new = g_value_get_boolean (value);
|
||||||
g_object_notify (obj, "password-new");
|
g_object_notify (obj, "password-new");
|
||||||
g_object_notify (obj, "confirm-visible");
|
g_object_notify_by_pspec (obj, props[PROP_CONFIRM_VISIBLE]);
|
||||||
break;
|
break;
|
||||||
case PROP_CALLER_WINDOW:
|
case PROP_CALLER_WINDOW:
|
||||||
/* ignored */
|
/* ignored */
|
||||||
@ -345,54 +352,74 @@ shell_keyring_prompt_class_init (ShellKeyringPromptClass *klass)
|
|||||||
*
|
*
|
||||||
* Whether the password entry is visible or not.
|
* Whether the password entry is visible or not.
|
||||||
*/
|
*/
|
||||||
g_object_class_install_property (gobject_class, PROP_PASSWORD_VISIBLE,
|
props[PROP_PASSWORD_VISIBLE] =
|
||||||
g_param_spec_boolean ("password-visible", "Password visible", "Password field is visible",
|
g_param_spec_boolean ("password-visible",
|
||||||
FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
"Password visible",
|
||||||
|
"Password field is visible",
|
||||||
|
FALSE,
|
||||||
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ShellKeyringPrompt:confirm-visible:
|
* ShellKeyringPrompt:confirm-visible:
|
||||||
*
|
*
|
||||||
* Whether the password confirm entry is visible or not.
|
* Whether the password confirm entry is visible or not.
|
||||||
*/
|
*/
|
||||||
g_object_class_install_property (gobject_class, PROP_CONFIRM_VISIBLE,
|
props[PROP_CONFIRM_VISIBLE] =
|
||||||
g_param_spec_boolean ("confirm-visible", "Confirm visible", "Confirm field is visible",
|
g_param_spec_boolean ("confirm-visible",
|
||||||
FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
"Confirm visible",
|
||||||
|
"Confirm field is visible",
|
||||||
|
FALSE,
|
||||||
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ShellKeyringPrompt:warning-visible:
|
* ShellKeyringPrompt:warning-visible:
|
||||||
*
|
*
|
||||||
* Whether the warning label is visible or not.
|
* Whether the warning label is visible or not.
|
||||||
*/
|
*/
|
||||||
g_object_class_install_property (gobject_class, PROP_WARNING_VISIBLE,
|
props[PROP_WARNING_VISIBLE] =
|
||||||
g_param_spec_boolean ("warning-visible", "Warning visible", "Warning is visible",
|
g_param_spec_boolean ("warning-visible",
|
||||||
FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
"Warning visible",
|
||||||
|
"Warning is visible",
|
||||||
|
FALSE,
|
||||||
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ShellKeyringPrompt:choice-visible:
|
* ShellKeyringPrompt:choice-visible:
|
||||||
*
|
*
|
||||||
* Whether the choice check box is visible or not.
|
* Whether the choice check box is visible or not.
|
||||||
*/
|
*/
|
||||||
g_object_class_install_property (gobject_class, PROP_CHOICE_VISIBLE,
|
props[PROP_CHOICE_VISIBLE] =
|
||||||
g_param_spec_boolean ("choice-visible", "Choice visible", "Choice is visible",
|
g_param_spec_boolean ("choice-visible",
|
||||||
FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
"Choice visible",
|
||||||
|
"Choice is visible",
|
||||||
|
FALSE,
|
||||||
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ShellKeyringPrompt:password-actor:
|
* ShellKeyringPrompt:password-actor:
|
||||||
*
|
*
|
||||||
* Text field for password
|
* Text field for password
|
||||||
*/
|
*/
|
||||||
g_object_class_install_property (gobject_class, PROP_PASSWORD_ACTOR,
|
props[PROP_PASSWORD_ACTOR] =
|
||||||
g_param_spec_object ("password-actor", "Password actor", "Text field for password",
|
g_param_spec_object ("password-actor",
|
||||||
CLUTTER_TYPE_TEXT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
"Password actor",
|
||||||
|
"Text field for password",
|
||||||
|
CLUTTER_TYPE_TEXT,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ShellKeyringPrompt:confirm-actor:
|
* ShellKeyringPrompt:confirm-actor:
|
||||||
*
|
*
|
||||||
* Text field for confirmation password
|
* Text field for confirmation password
|
||||||
*/
|
*/
|
||||||
g_object_class_install_property (gobject_class, PROP_CONFIRM_ACTOR,
|
props[PROP_CONFIRM_ACTOR] =
|
||||||
g_param_spec_object ("confirm-actor", "Confirm actor", "Text field for confirming password",
|
g_param_spec_object ("confirm-actor",
|
||||||
CLUTTER_TYPE_TEXT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
"Confirm actor",
|
||||||
|
"Text field for confirming password",
|
||||||
|
CLUTTER_TYPE_TEXT,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
|
g_object_class_install_properties (gobject_class, N_PROPS, props);
|
||||||
|
|
||||||
signals[SIGNAL_SHOW_PASSWORD] = g_signal_new ("show-password", G_TYPE_FROM_CLASS (klass),
|
signals[SIGNAL_SHOW_PASSWORD] = g_signal_new ("show-password", G_TYPE_FROM_CLASS (klass),
|
||||||
0, 0, NULL, NULL,
|
0, 0, NULL, NULL,
|
||||||
@ -645,6 +672,9 @@ shell_keyring_prompt_set_password_actor (ShellKeyringPrompt *self,
|
|||||||
g_return_if_fail (SHELL_IS_KEYRING_PROMPT (self));
|
g_return_if_fail (SHELL_IS_KEYRING_PROMPT (self));
|
||||||
g_return_if_fail (password_actor == NULL || CLUTTER_IS_TEXT (password_actor));
|
g_return_if_fail (password_actor == NULL || CLUTTER_IS_TEXT (password_actor));
|
||||||
|
|
||||||
|
if (self->password_actor == password_actor)
|
||||||
|
return;
|
||||||
|
|
||||||
if (password_actor)
|
if (password_actor)
|
||||||
{
|
{
|
||||||
buffer = shell_secure_text_buffer_new ();
|
buffer = shell_secure_text_buffer_new ();
|
||||||
@ -661,7 +691,7 @@ shell_keyring_prompt_set_password_actor (ShellKeyringPrompt *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
self->password_actor = password_actor;
|
self->password_actor = password_actor;
|
||||||
g_object_notify (G_OBJECT (self), "password-actor");
|
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_PASSWORD_ACTOR]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -680,6 +710,9 @@ shell_keyring_prompt_set_confirm_actor (ShellKeyringPrompt *self,
|
|||||||
g_return_if_fail (SHELL_IS_KEYRING_PROMPT (self));
|
g_return_if_fail (SHELL_IS_KEYRING_PROMPT (self));
|
||||||
g_return_if_fail (confirm_actor == NULL || CLUTTER_IS_TEXT (confirm_actor));
|
g_return_if_fail (confirm_actor == NULL || CLUTTER_IS_TEXT (confirm_actor));
|
||||||
|
|
||||||
|
if (self->confirm_actor == confirm_actor)
|
||||||
|
return;
|
||||||
|
|
||||||
if (confirm_actor)
|
if (confirm_actor)
|
||||||
{
|
{
|
||||||
buffer = shell_secure_text_buffer_new ();
|
buffer = shell_secure_text_buffer_new ();
|
||||||
@ -691,7 +724,7 @@ shell_keyring_prompt_set_confirm_actor (ShellKeyringPrompt *self,
|
|||||||
if (self->confirm_actor)
|
if (self->confirm_actor)
|
||||||
g_object_unref (self->confirm_actor);
|
g_object_unref (self->confirm_actor);
|
||||||
self->confirm_actor = confirm_actor;
|
self->confirm_actor = confirm_actor;
|
||||||
g_object_notify (G_OBJECT (self), "confirm-actor");
|
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CONFIRM_ACTOR]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -48,9 +48,14 @@ G_DEFINE_TYPE (ShellWindowTracker, shell_window_tracker, G_TYPE_OBJECT);
|
|||||||
|
|
||||||
enum {
|
enum {
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_FOCUS_APP
|
|
||||||
|
PROP_FOCUS_APP,
|
||||||
|
|
||||||
|
N_PROPS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static GParamSpec *props[N_PROPS] = { NULL, };
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
STARTUP_SEQUENCE_CHANGED,
|
STARTUP_SEQUENCE_CHANGED,
|
||||||
TRACKED_WINDOWS_CHANGED,
|
TRACKED_WINDOWS_CHANGED,
|
||||||
@ -97,13 +102,14 @@ shell_window_tracker_class_init (ShellWindowTrackerClass *klass)
|
|||||||
gobject_class->get_property = shell_window_tracker_get_property;
|
gobject_class->get_property = shell_window_tracker_get_property;
|
||||||
gobject_class->finalize = shell_window_tracker_finalize;
|
gobject_class->finalize = shell_window_tracker_finalize;
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
props[PROP_FOCUS_APP] =
|
||||||
PROP_FOCUS_APP,
|
g_param_spec_object ("focus-app",
|
||||||
g_param_spec_object ("focus-app",
|
"Focus App",
|
||||||
"Focus App",
|
"Focused application",
|
||||||
"Focused application",
|
SHELL_TYPE_APP,
|
||||||
SHELL_TYPE_APP,
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
|
g_object_class_install_properties (gobject_class, N_PROPS, props);
|
||||||
|
|
||||||
signals[STARTUP_SEQUENCE_CHANGED] = g_signal_new ("startup-sequence-changed",
|
signals[STARTUP_SEQUENCE_CHANGED] = g_signal_new ("startup-sequence-changed",
|
||||||
SHELL_TYPE_WINDOW_TRACKER,
|
SHELL_TYPE_WINDOW_TRACKER,
|
||||||
@ -731,7 +737,7 @@ set_focus_app (ShellWindowTracker *tracker,
|
|||||||
if (tracker->focus_app != NULL)
|
if (tracker->focus_app != NULL)
|
||||||
g_object_ref (tracker->focus_app);
|
g_object_ref (tracker->focus_app);
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (tracker), "focus-app");
|
g_object_notify_by_pspec (G_OBJECT (tracker), props[PROP_FOCUS_APP]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user