Compare commits
	
		
			2 Commits
		
	
	
		
	
	| 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