Compare commits
	
		
			2 Commits
		
	
	
		
			gnome-3-28
			...
			wip/gmenu
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 393a80d434 | ||
|   | a2f95e115c | 
| @@ -97,9 +97,13 @@ struct _MetaWindow | ||||
|   char *role; | ||||
|   char *sm_client_id; | ||||
|   char *wm_client_machine; | ||||
|  | ||||
|   char *startup_id; | ||||
|   char *mutter_hints; | ||||
|   char *gtk_theme_variant; | ||||
|   char *dbus_application_id; | ||||
|   char *dbus_unique_name; | ||||
|   char *dbus_object_path; | ||||
|  | ||||
|   int net_wm_pid; | ||||
|    | ||||
|   | ||||
| @@ -1592,6 +1592,78 @@ reload_gtk_theme_variant (MetaWindow    *window, | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| reload_dbus_application_id (MetaWindow    *window, | ||||
|                             MetaPropValue *value, | ||||
|                             gboolean       initial) | ||||
| { | ||||
|   char *new_id = NULL; | ||||
|   char *current_id = window->dbus_application_id; | ||||
|  | ||||
|   if (value->type != META_PROP_VALUE_INVALID) | ||||
|     new_id = value->v.str; | ||||
|  | ||||
|   if (g_strcmp0 (new_id, current_id)) | ||||
|     { | ||||
|       g_free (current_id); | ||||
|  | ||||
|       if (new_id) | ||||
|         window->dbus_application_id = g_strdup (new_id); | ||||
|       else | ||||
|         window->dbus_application_id = NULL; | ||||
|  | ||||
|       g_object_notify ((GObject*)window, "dbus-application-id"); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| reload_dbus_unique_name (MetaWindow    *window, | ||||
|                          MetaPropValue *value, | ||||
|                          gboolean       initial) | ||||
| { | ||||
|   char *new_id = NULL; | ||||
|   char *current_id = window->dbus_unique_name; | ||||
|  | ||||
|   if (value->type != META_PROP_VALUE_INVALID) | ||||
|     new_id = value->v.str; | ||||
|  | ||||
|   if (g_strcmp0 (new_id, current_id)) | ||||
|     { | ||||
|       g_free (current_id); | ||||
|  | ||||
|       if (new_id) | ||||
|         window->dbus_unique_name = g_strdup (new_id); | ||||
|       else | ||||
|         window->dbus_unique_name = NULL; | ||||
|  | ||||
|       g_object_notify ((GObject*)window, "dbus-unique-name"); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| reload_dbus_object_path (MetaWindow    *window, | ||||
|                          MetaPropValue *value, | ||||
|                          gboolean       initial) | ||||
| { | ||||
|   char *new_path = NULL; | ||||
|   char *current_path = window->dbus_object_path; | ||||
|  | ||||
|   if (value->type != META_PROP_VALUE_INVALID) | ||||
|     new_path = value->v.str; | ||||
|  | ||||
|   if (g_strcmp0 (new_path, current_path)) | ||||
|     { | ||||
|       g_free (current_path); | ||||
|  | ||||
|       if (new_path) | ||||
|         window->dbus_object_path = g_strdup (new_path); | ||||
|       else | ||||
|         window->dbus_object_path = NULL; | ||||
|  | ||||
|       g_object_notify ((GObject*)window, "dbus-object-path"); | ||||
|     } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Initialises the property hooks system.  Each row in the table named "hooks" | ||||
|  * represents an action to take when a property is found on a newly-created | ||||
| @@ -1645,6 +1717,9 @@ meta_display_init_window_prop_hooks (MetaDisplay *display) | ||||
|     { display->atom__MOTIF_WM_HINTS,   META_PROP_VALUE_MOTIF_HINTS, reload_mwm_hints,      TRUE,  FALSE }, | ||||
|     { XA_WM_TRANSIENT_FOR,             META_PROP_VALUE_WINDOW,    reload_transient_for,    TRUE,  FALSE }, | ||||
|     { display->atom__GTK_THEME_VARIANT, META_PROP_VALUE_UTF8,     reload_gtk_theme_variant, TRUE, FALSE }, | ||||
|     { display->atom__DBUS_APPLICATION_ID, META_PROP_VALUE_UTF8,   reload_dbus_application_id, TRUE, FALSE }, | ||||
|     { display->atom__DBUS_UNIQUE_NAME, META_PROP_VALUE_UTF8,      reload_dbus_unique_name, TRUE, FALSE }, | ||||
|     { display->atom__DBUS_OBJECT_PATH, META_PROP_VALUE_UTF8,      reload_dbus_object_path, TRUE, FALSE }, | ||||
|     { display->atom__NET_WM_USER_TIME_WINDOW, META_PROP_VALUE_WINDOW, reload_net_wm_user_time_window, TRUE, FALSE }, | ||||
|     { display->atom_WM_STATE,          META_PROP_VALUE_INVALID,  NULL,                     FALSE, FALSE }, | ||||
|     { display->atom__NET_WM_ICON,      META_PROP_VALUE_INVALID,  reload_net_wm_icon,       FALSE, FALSE }, | ||||
|   | ||||
| @@ -164,7 +164,10 @@ enum { | ||||
|   PROP_APPEARS_FOCUSED, | ||||
|   PROP_RESIZEABLE, | ||||
|   PROP_ABOVE, | ||||
|   PROP_WM_CLASS | ||||
|   PROP_WM_CLASS, | ||||
|   PROP_DBUS_APPLICATION_ID, | ||||
|   PROP_DBUS_UNIQUE_NAME, | ||||
|   PROP_DBUS_OBJECT_PATH | ||||
| }; | ||||
|  | ||||
| enum | ||||
| @@ -221,6 +224,9 @@ meta_window_finalize (GObject *object) | ||||
|   g_free (window->icon_name); | ||||
|   g_free (window->desc); | ||||
|   g_free (window->gtk_theme_variant); | ||||
|   g_free (window->dbus_application_id); | ||||
|   g_free (window->dbus_unique_name); | ||||
|   g_free (window->dbus_object_path); | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -284,6 +290,15 @@ meta_window_get_property(GObject         *object, | ||||
|     case PROP_ABOVE: | ||||
|       g_value_set_boolean (value, win->wm_state_above); | ||||
|       break; | ||||
|     case PROP_DBUS_APPLICATION_ID: | ||||
|       g_value_set_string (value, win->dbus_application_id); | ||||
|       break; | ||||
|     case PROP_DBUS_UNIQUE_NAME: | ||||
|       g_value_set_string (value, win->dbus_unique_name); | ||||
|       break; | ||||
|     case PROP_DBUS_OBJECT_PATH: | ||||
|       g_value_set_string (value, win->dbus_object_path); | ||||
|       break; | ||||
|     default: | ||||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); | ||||
|       break; | ||||
| @@ -450,6 +465,30 @@ meta_window_class_init (MetaWindowClass *klass) | ||||
|                                                         NULL, | ||||
|                                                         G_PARAM_READABLE)); | ||||
|  | ||||
|   g_object_class_install_property (object_class, | ||||
|                                    PROP_DBUS_APPLICATION_ID, | ||||
|                                    g_param_spec_string ("dbus-application-id", | ||||
|                                                         "_DBUS_APPLICATION_ID", | ||||
|                                                         "Contents of the _DBUS_APPLICATION_ID property of this window", | ||||
|                                                         NULL, | ||||
|                                                         G_PARAM_READABLE)); | ||||
|  | ||||
|   g_object_class_install_property (object_class, | ||||
|                                    PROP_DBUS_UNIQUE_NAME, | ||||
|                                    g_param_spec_string ("dbus-unique-name", | ||||
|                                                         "_DBUS_UNIQUE_NAME", | ||||
|                                                         "Contents of the _DBUS_UNIQUE_NAME property of this window", | ||||
|                                                         NULL, | ||||
|                                                         G_PARAM_READABLE)); | ||||
|  | ||||
|   g_object_class_install_property (object_class, | ||||
|                                    PROP_DBUS_OBJECT_PATH, | ||||
|                                    g_param_spec_string ("dbus-object-path", | ||||
|                                                         "_DBUS_OBJECT_PATH", | ||||
|                                                         "Contents of the _DBUS_OBJECT_PATH property of this window", | ||||
|                                                         NULL, | ||||
|                                                         G_PARAM_READABLE)); | ||||
|  | ||||
|   window_signals[WORKSPACE_CHANGED] = | ||||
|     g_signal_new ("workspace-changed", | ||||
|                   G_TYPE_FROM_CLASS (object_class), | ||||
| @@ -10211,6 +10250,42 @@ meta_window_get_wm_class_instance (MetaWindow *window) | ||||
|   return window->res_name; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_window_get_dbus_application_id: | ||||
|  * @window: a #MetaWindow | ||||
|  * | ||||
|  * Return value: (transfer none): the application ID | ||||
|  **/ | ||||
| const char * | ||||
| meta_window_get_dbus_application_id (MetaWindow *window) | ||||
| { | ||||
|   return window->dbus_application_id; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_window_get_dbus_unique_name: | ||||
|  * @window: a #MetaWindow | ||||
|  * | ||||
|  * Return value: (transfer none): the unique name | ||||
|  **/ | ||||
| const char * | ||||
| meta_window_get_dbus_unique_name (MetaWindow *window) | ||||
| { | ||||
|   return window->dbus_unique_name; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_window_get_dbus_object_path: | ||||
|  * @window: a #MetaWindow | ||||
|  * | ||||
|  * Return value: (transfer none): the object path | ||||
|  **/ | ||||
| const char * | ||||
| meta_window_get_dbus_object_path (MetaWindow *window) | ||||
| { | ||||
|   return window->dbus_object_path; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_window_get_compositor_private: | ||||
|  * @window: a #MetaWindow | ||||
|   | ||||
| @@ -59,6 +59,9 @@ item(_MUTTER_SET_KEYBINDINGS_MESSAGE) | ||||
| item(_MUTTER_TOGGLE_VERBOSE) | ||||
| item(_MUTTER_HINTS) | ||||
| item(_GTK_THEME_VARIANT) | ||||
| item(_DBUS_APPLICATION_ID) | ||||
| item(_DBUS_UNIQUE_NAME) | ||||
| item(_DBUS_OBJECT_PATH) | ||||
| item(_GNOME_WM_KEYBINDINGS) | ||||
| item(_GNOME_PANEL_ACTION) | ||||
| item(_GNOME_PANEL_ACTION_MAIN_MENU) | ||||
|   | ||||
| @@ -95,6 +95,10 @@ const char * meta_window_get_wm_class (MetaWindow *window); | ||||
| const char * meta_window_get_wm_class_instance (MetaWindow *window); | ||||
| gboolean    meta_window_showing_on_its_workspace (MetaWindow *window); | ||||
|  | ||||
| const char * meta_window_get_dbus_application_id (MetaWindow *window); | ||||
| const char * meta_window_get_dbus_unique_name (MetaWindow *window); | ||||
| const char * meta_window_get_dbus_object_path (MetaWindow *window); | ||||
|  | ||||
| void meta_window_move(MetaWindow *window, gboolean user_op, int root_x_nw, int root_y_nw); | ||||
| void meta_window_move_frame(MetaWindow *window, gboolean user_op, int root_x_nw, int root_y_nw); | ||||
| void meta_window_move_resize_frame (MetaWindow *window, gboolean user_op, int root_x_nw, int root_y_nw, int w, int h); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user