shell: set the window name and icon when opening an embedded settings panel
This involves storing the default window title and icon name and resetting the title and icon name when an embedded settings panel is closed. The icon name and title for each panel is retrieved from the desktop file information and stored in the CcShellModel.
This commit is contained in:
parent
4fcc633a36
commit
27bf283683
3 changed files with 43 additions and 4 deletions
|
@ -34,7 +34,7 @@ static void
|
|||
cc_shell_model_init (CcShellModel *self)
|
||||
{
|
||||
GType types[] = {G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
|
||||
GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING};
|
||||
GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING};
|
||||
|
||||
gtk_list_store_set_column_types (GTK_LIST_STORE (self),
|
||||
N_COLS, types);
|
||||
|
@ -94,6 +94,7 @@ cc_shell_model_add_item (CcShellModel *model,
|
|||
COL_PIXBUF, pixbuf,
|
||||
COL_CATEGORY, category_name,
|
||||
COL_SEARCH_TARGET, search_target,
|
||||
COL_ICON_NAME, icon,
|
||||
-1);
|
||||
|
||||
g_free (search_target);
|
||||
|
|
|
@ -61,6 +61,7 @@ enum
|
|||
COL_PIXBUF,
|
||||
COL_CATEGORY,
|
||||
COL_SEARCH_TARGET,
|
||||
COL_ICON_NAME,
|
||||
|
||||
N_COLS
|
||||
};
|
||||
|
|
|
@ -69,13 +69,18 @@ struct _GnomeControlCenterPrivate
|
|||
guint32 last_time;
|
||||
|
||||
GIOExtensionPoint *extension_point;
|
||||
|
||||
gchar *default_window_title;
|
||||
gchar *default_window_icon;
|
||||
};
|
||||
|
||||
|
||||
static void
|
||||
activate_panel (GnomeControlCenter *shell,
|
||||
const gchar *id,
|
||||
const gchar *desktop_file)
|
||||
const gchar *desktop_file,
|
||||
const gchar *name,
|
||||
const gchar *icon_name)
|
||||
{
|
||||
GnomeControlCenterPrivate *priv = shell->priv;
|
||||
GAppInfo *appinfo;
|
||||
|
@ -123,6 +128,10 @@ activate_panel (GnomeControlCenter *shell,
|
|||
gtk_widget_show_all (box);
|
||||
gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), i);
|
||||
|
||||
/* set the title of the window */
|
||||
gtk_window_set_title (GTK_WINDOW (priv->window), name);
|
||||
gtk_window_set_icon_name (GTK_WINDOW (priv->window), icon_name);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -177,6 +186,13 @@ shell_show_overview_page (GnomeControlCenterPrivate *priv)
|
|||
g_free (priv->filter_string);
|
||||
priv->filter_string = g_strdup ("");
|
||||
gtk_entry_set_text (GTK_ENTRY (priv->search_entry), "");
|
||||
|
||||
/* reset window title and icon */
|
||||
gtk_window_set_title (GTK_WINDOW (priv->window), priv->default_window_title);
|
||||
gtk_window_set_icon_name (GTK_WINDOW (priv->window),
|
||||
priv->default_window_icon);
|
||||
|
||||
g_debug ("%s %s", priv->default_window_title, priv->default_window_icon);
|
||||
}
|
||||
|
||||
|
||||
|
@ -503,7 +519,7 @@ _shell_set_active_panel_from_id (CcShell *shell,
|
|||
GtkTreeIter iter;
|
||||
gboolean iter_valid;
|
||||
gchar *name = NULL;
|
||||
gchar *desktop;
|
||||
gchar *desktop, *icon_name;
|
||||
GnomeControlCenterPrivate *priv = GNOME_CONTROL_CENTER (shell)->priv;
|
||||
|
||||
|
||||
|
@ -519,6 +535,7 @@ _shell_set_active_panel_from_id (CcShell *shell,
|
|||
COL_NAME, &name,
|
||||
COL_ID, &id,
|
||||
COL_DESKTOP_FILE, &desktop,
|
||||
COL_ICON_NAME, &icon_name,
|
||||
-1);
|
||||
if (id && !strcmp (id, start_id))
|
||||
{
|
||||
|
@ -530,6 +547,7 @@ _shell_set_active_panel_from_id (CcShell *shell,
|
|||
g_free (id);
|
||||
g_free (name);
|
||||
g_free (desktop);
|
||||
g_free (icon_name);
|
||||
|
||||
name = NULL;
|
||||
id = NULL;
|
||||
|
@ -546,10 +564,12 @@ _shell_set_active_panel_from_id (CcShell *shell,
|
|||
}
|
||||
else
|
||||
{
|
||||
activate_panel (GNOME_CONTROL_CENTER (shell), start_id, desktop);
|
||||
activate_panel (GNOME_CONTROL_CENTER (shell), start_id, desktop, name,
|
||||
icon_name);
|
||||
|
||||
g_free (name);
|
||||
g_free (desktop);
|
||||
g_free (icon_name);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -636,6 +656,18 @@ gnome_control_center_finalize (GObject *object)
|
|||
priv->filter_string = NULL;
|
||||
}
|
||||
|
||||
if (priv->default_window_title)
|
||||
{
|
||||
g_free (priv->default_window_title);
|
||||
priv->default_window_title = NULL;
|
||||
}
|
||||
|
||||
if (priv->default_window_icon)
|
||||
{
|
||||
g_free (priv->default_window_icon);
|
||||
priv->default_window_icon = NULL;
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (gnome_control_center_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
|
@ -707,7 +739,12 @@ gnome_control_center_init (GnomeControlCenter *self)
|
|||
/* setup search functionality */
|
||||
setup_search (self);
|
||||
|
||||
|
||||
gtk_widget_show_all (priv->window);
|
||||
|
||||
/* store default window title and name */
|
||||
priv->default_window_title = g_strdup (gtk_window_get_title (GTK_WINDOW (priv->window)));
|
||||
priv->default_window_icon = g_strdup (gtk_window_get_icon_name (GTK_WINDOW (priv->window)));
|
||||
}
|
||||
|
||||
GnomeControlCenter *
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue