[gnome-settings-daemon/randr-osd: 7/15] Actually apply stock configuration when it is chosen
- From: Federico Mena Quintero <federico src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon/randr-osd: 7/15] Actually apply stock configuration when it is chosen
- Date: Tue, 19 Jan 2010 23:35:22 +0000 (UTC)
commit 563b43028453fe5e48872755a6011319b53c8ca0
Author: Federico Mena Quintero <federico novell com>
Date: Wed Jan 13 16:24:49 2010 -0600
Actually apply stock configuration when it is chosen
Signed-off-by: Federico Mena Quintero <federico novell com>
plugins/xrandr/gsd-xrandr-manager.c | 74 +++++++++++++++++++++++++++++------
1 files changed, 62 insertions(+), 12 deletions(-)
---
diff --git a/plugins/xrandr/gsd-xrandr-manager.c b/plugins/xrandr/gsd-xrandr-manager.c
index d979c60..cf3ec5e 100644
--- a/plugins/xrandr/gsd-xrandr-manager.c
+++ b/plugins/xrandr/gsd-xrandr-manager.c
@@ -1074,6 +1074,68 @@ get_filename_for_stock_config_icon (StockConfigType type)
return g_build_filename (GNOME_SETTINGS_DATADIR, "xrandr", base, NULL);
}
+static StockConfig *
+find_stock_config (GsdXrandrManager *manager, StockConfigType type)
+{
+ GsdXrandrManagerPrivate *priv;
+ int i;
+
+ priv = manager->priv;
+
+ if (!priv->stock_configs)
+ return NULL;
+
+ for (i = 0; priv->stock_configs[i]; i++)
+ if (priv->stock_configs[i]->type == type)
+ return priv->stock_configs[i];
+
+ return NULL;
+}
+
+static void
+destroy_osd_window (GsdXrandrManager *manager)
+{
+ GsdXrandrManagerPrivate *priv = manager->priv;
+
+ if (priv->osd_window == NULL)
+ return;
+
+ gtk_widget_destroy (priv->osd_window);
+ priv->osd_window = NULL;
+}
+
+static void
+stock_config_button_clicked_cb (GtkButton *button, gpointer data)
+{
+ GsdXrandrManager *manager;
+ GsdXrandrManagerPrivate *priv;
+ StockConfigType type;
+ StockConfig *config;
+ GError *error;
+
+ manager = data;
+ priv = manager->priv;
+
+ type = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (button), "stock-config-type"));
+
+ destroy_osd_window (manager);
+
+ config = find_stock_config (manager, type);
+ if (!config) {
+ /* Huh, this shouldn't happen... */
+ return;
+ }
+
+ error = NULL;
+ if (!gnome_rr_config_apply_with_time (config->rr_config,
+ priv->rw_screen,
+ gtk_get_current_event_time (),
+ &error)) {
+ error_message (manager, _("Could not switch the monitor configuration"), error, NULL);
+ g_error_free (error);
+ }
+}
+
static GtkWidget *
make_button_for_stock_config (GsdXrandrManager *manager, StockConfigType type)
{
@@ -1113,18 +1175,6 @@ make_button_for_stock_config (GsdXrandrManager *manager, StockConfigType type)
}
static void
-destroy_osd_window (GsdXrandrManager *manager)
-{
- GsdXrandrManagerPrivate *priv = manager->priv;
-
- if (priv->osd_window == NULL)
- return;
-
- gtk_widget_destroy (priv->osd_window);
- priv->osd_window = NULL;
-}
-
-static void
create_osd_window (GsdXrandrManager *manager)
{
GsdXrandrManagerPrivate *priv = manager->priv;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]