static void shell_show_overview_page (GnomeControlCenter *center) { GnomeControlCenterPrivate *priv = center->priv; notebook_select_page (priv->notebook, priv->scrolled_window); if (priv->current_panel) notebook_remove_page (priv->notebook, priv->current_panel); priv->current_panel = NULL; /* clear the search text */ g_free (priv->filter_string); priv->filter_string = g_strdup (""); gtk_entry_set_text (GTK_ENTRY (priv->search_entry), ""); gtk_widget_grab_focus (priv->search_entry); gtk_lock_button_set_permission (GTK_LOCK_BUTTON (priv->lock_button), NULL); /* reset window title and icon */ gtk_window_set_role (GTK_WINDOW (priv->window), NULL); gtk_window_set_title (GTK_WINDOW (priv->window), priv->default_window_title); gtk_window_set_default_icon_name (priv->default_window_icon); gtk_window_set_icon_name (GTK_WINDOW (priv->window), priv->default_window_icon); cc_shell_set_active_panel (CC_SHELL (center), NULL); /* clear any custom widgets */ _shell_remove_all_custom_widgets (priv); }
static void shell_show_overview_page (CinnamonControlCenter *center) { CinnamonControlCenterPrivate *priv = center->priv; notebook_select_page (priv->notebook, priv->scrolled_window); if (priv->current_panel_box) notebook_remove_page (priv->notebook, priv->current_panel_box); priv->current_panel = NULL; priv->current_panel_box = NULL; if (priv->current_panel_id) { g_free (priv->current_panel_id); priv->current_panel_id = NULL; } /* clear the search text */ g_free (priv->filter_string); priv->filter_string = g_strdup (""); gtk_lock_button_set_permission (GTK_LOCK_BUTTON (priv->lock_button), NULL); /* reset window title and icon */ gtk_window_set_role (GTK_WINDOW (priv->window), NULL); gtk_window_set_title (GTK_WINDOW (priv->window), priv->default_window_title); gtk_window_set_default_icon_name (priv->default_window_icon); gtk_window_set_icon_name (GTK_WINDOW (priv->window), priv->default_window_icon); cc_shell_set_active_panel (CC_SHELL (center), NULL); /* clear any custom widgets */ _shell_remove_all_custom_widgets (priv); cc_shell_nav_bar_hide_detail_button (CC_SHELL_NAV_BAR (priv->nav_bar)); }
/* CcShell implementation */ static gboolean _shell_set_active_panel_from_id (CcShell *shell, const gchar *start_id, const gchar **argv, GError **err) { GtkTreeIter iter; gboolean iter_valid; gchar *name = NULL; gchar *desktop = NULL; GIcon *gicon = NULL; GnomeControlCenterPrivate *priv = GNOME_CONTROL_CENTER (shell)->priv; GtkWidget *old_panel; /* clear any custom widgets */ _shell_remove_all_custom_widgets (priv); iter_valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (priv->store), &iter); /* find the details for this item */ while (iter_valid) { gchar *id; gtk_tree_model_get (GTK_TREE_MODEL (priv->store), &iter, COL_NAME, &name, COL_DESKTOP_FILE, &desktop, COL_GICON, &gicon, COL_ID, &id, -1); if (id && !strcmp (id, start_id)) { g_free (id); break; } else { g_free (id); g_free (name); g_free (desktop); if (gicon) g_object_unref (gicon); name = NULL; id = NULL; desktop = NULL; gicon = NULL; } iter_valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (priv->store), &iter); } if (!name) { g_warning ("Could not find settings panel \"%s\"", start_id); } else if (activate_panel (GNOME_CONTROL_CENTER (shell), start_id, argv, desktop, name, gicon) == FALSE) { old_panel = priv->current_panel; priv->current_panel = NULL; notebook_select_page (priv->notebook, priv->scrolled_window); if (old_panel) notebook_remove_page (priv->notebook, old_panel); } g_free (name); g_free (desktop); if (gicon) g_object_unref (gicon); return TRUE; }
/* CcShell implementation */ static gboolean _shell_set_active_panel_from_id (CcShell *shell, const gchar *start_id, const gchar **argv, GError **err) { GtkTreeIter iter; gboolean iter_valid; gchar *name = NULL; gchar *desktop = NULL; GIcon *gicon = NULL; CinnamonControlCenterPrivate *priv = CINNAMON_CONTROL_CENTER (shell)->priv; GtkWidget *old_panel; /* When loading the same panel again, just set the argv */ if (g_strcmp0 (priv->current_panel_id, start_id) == 0) { g_object_set (G_OBJECT (priv->current_panel), "argv", argv, NULL); return TRUE; } if (priv->current_panel_id) { g_free (priv->current_panel_id); priv->current_panel_id = NULL; } if (!g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "Unity") && !g_strcmp0(start_id, "sound")) start_id = "sound-nua"; /* clear any custom widgets */ _shell_remove_all_custom_widgets (priv); iter_valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (priv->store), &iter); /* find the details for this item */ while (iter_valid) { gchar *id; gtk_tree_model_get (GTK_TREE_MODEL (priv->store), &iter, COL_NAME, &name, COL_DESKTOP_FILE, &desktop, COL_GICON, &gicon, COL_ID, &id, -1); if (id && !strcmp (id, start_id)) { g_free (id); break; } else { g_free (id); g_free (name); g_free (desktop); if (gicon) g_object_unref (gicon); name = NULL; id = NULL; desktop = NULL; gicon = NULL; } iter_valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (priv->store), &iter); } if (!name) { g_warning ("Could not find settings panel \"%s\"", start_id); } else if (activate_panel (CINNAMON_CONTROL_CENTER (shell), start_id, argv, desktop, name, gicon) == FALSE) { /* Failed to activate the panel for some reason */ old_panel = priv->current_panel_box; priv->current_panel_box = NULL; notebook_select_page (priv->notebook, priv->scrolled_window); if (old_panel) notebook_remove_page (priv->notebook, old_panel); } else { priv->current_panel_id = g_strdup (start_id); } g_free (name); g_free (desktop); if (gicon) g_object_unref (gicon); return TRUE; }