diff -Nru gnome-control-center-3.3.92/debian/changelog gnome-control-center-3.3.92/debian/changelog --- gnome-control-center-3.3.92/debian/changelog 2012-03-19 18:39:45.000000000 +0000 +++ gnome-control-center-3.3.92/debian/changelog 2012-03-23 14:43:39.000000000 +0000 @@ -1,3 +1,19 @@ +gnome-control-center (1:3.3.92-0ubuntu3) precise-proposed; urgency=low + + * debian/patches/51_unity_options_in_display_panel.patch: + - add the options to the display panel for unity multimonitor support. + Choice where the launcher can be set (one monitor, all monitor) and + sticky edges. (LP: #950136) + * debian/patches/revert_git_keyboard_gsettings.patch: + - refreshed + * debian/patches/04_new_appearance_settings.patch: + - revert the "click to get directly to a position" on the scroll bar. + This should be done in gtk to get the same behavior everywhere. Too + late for this cycle though. + - fix the scrolling since gtk introduced GDK_SCROLL_SMOOTH. + + -- Didier Roche Fri, 23 Mar 2012 15:42:22 +0100 + gnome-control-center (1:3.3.92-0ubuntu2) precise; urgency=low * debian/patches/dont_download_local_image.patch: diff -Nru gnome-control-center-3.3.92/debian/patches/04_new_appearance_settings.patch gnome-control-center-3.3.92/debian/patches/04_new_appearance_settings.patch --- gnome-control-center-3.3.92/debian/patches/04_new_appearance_settings.patch 2012-03-19 18:39:45.000000000 +0000 +++ gnome-control-center-3.3.92/debian/patches/04_new_appearance_settings.patch 2012-03-23 14:43:39.000000000 +0000 @@ -1,7 +1,7 @@ -Index: gnome-control-center-3.3.91/configure.ac +Index: gnome-control-center-3.3.92/configure.ac =================================================================== ---- gnome-control-center-3.3.91.orig/configure.ac 2012-03-05 20:30:32.000000000 +0100 -+++ gnome-control-center-3.3.91/configure.ac 2012-03-09 18:48:14.188139896 +0100 +--- gnome-control-center-3.3.92.orig/configure.ac 2012-03-19 10:36:11.000000000 +0100 ++++ gnome-control-center-3.3.92/configure.ac 2012-03-22 14:43:41.627046279 +0100 @@ -93,7 +93,7 @@ PKG_CHECK_MODULES(LIBSHORTCUTS, $COMMON_MODULES x11) PKG_CHECK_MODULES(SHELL, $COMMON_MODULES libgnome-menu-3.0 gio-unix-2.0 x11) @@ -11,10 +11,10 @@ PKG_CHECK_MODULES(DATETIME_PANEL, $COMMON_MODULES gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION -Index: gnome-control-center-3.3.91/panels/background/background.ui +Index: gnome-control-center-3.3.92/panels/background/background.ui =================================================================== ---- gnome-control-center-3.3.91.orig/panels/background/background.ui 2012-03-05 15:04:55.000000000 +0100 -+++ gnome-control-center-3.3.91/panels/background/background.ui 2012-03-09 18:48:08.948139679 +0100 +--- gnome-control-center-3.3.92.orig/panels/background/background.ui 2012-02-14 11:13:17.000000000 +0100 ++++ gnome-control-center-3.3.92/panels/background/background.ui 2012-03-22 14:43:28.254979970 +0100 @@ -1,7 +1,6 @@ - + @@ -1198,10 +1198,10 @@ - - -Index: gnome-control-center-3.3.91/panels/background/cc-background-panel.c +Index: gnome-control-center-3.3.92/panels/background/cc-background-panel.c =================================================================== ---- gnome-control-center-3.3.91.orig/panels/background/cc-background-panel.c 2012-03-05 15:04:55.000000000 +0100 -+++ gnome-control-center-3.3.91/panels/background/cc-background-panel.c 2012-03-09 18:48:35.752140787 +0100 +--- gnome-control-center-3.3.92.orig/panels/background/cc-background-panel.c 2012-02-14 11:12:23.000000000 +0100 ++++ gnome-control-center-3.3.92/panels/background/cc-background-panel.c 2012-03-22 14:43:54.995112578 +0100 @@ -24,6 +24,7 @@ #include #include @@ -1318,7 +1318,7 @@ gdk_color_parse (cc_background_item_get_pcolor (priv->current_background), &pcolor); gdk_color_parse (cc_background_item_get_scolor (priv->current_background), &scolor); -@@ -1162,12 +1215,534 @@ +@@ -1162,12 +1215,500 @@ g_strfreev(uris); } @@ -1684,7 +1684,8 @@ + + value = gtk_adjustment_get_value (adj); + -+ if (event->direction == GDK_SCROLL_UP) ++ if ((event->direction == GDK_SCROLL_UP) || ++ (event->direction == GDK_SCROLL_SMOOTH && event->delta_y < 0)) + { + if (value + delta/8 > iconsize_values->max) + value = iconsize_values->max; @@ -1692,7 +1693,8 @@ + value = value + delta/8; + gtk_adjustment_set_value (adj, value); + } -+ else if (event->direction == GDK_SCROLL_DOWN) ++ else if ((event->direction == GDK_SCROLL_DOWN) || ++ (event->direction == GDK_SCROLL_SMOOTH && event->delta_y > 0)) + { + if (value - delta/8 < iconsize_values->min) + value = iconsize_values->min; @@ -1704,34 +1706,6 @@ + return TRUE; +} + -+static gboolean -+on_scale_button_press_event (GtkWidget *widget, -+ GdkEventButton *event, -+ gpointer *data) -+{ -+ /* HACK: we want the behaviour you get with the middle button, so we -+ * mangle the event. clicking with other buttons moves the slider in -+ * step increments, clicking with the middle button moves the slider to -+ * the location of the click. -+ */ -+ if (event->button == 1) -+ event->button = 2; -+ -+ return FALSE; -+} -+ -+static gboolean -+on_scale_button_release_event (GtkWidget *widget, -+ GdkEventButton *event, -+ gpointer *data) -+{ -+ /* HACK: see on_scale_button_press_event() */ -+ if (event->button == 1) -+ event->button = 2; -+ -+ return FALSE; -+} -+ +/* */ + +static void @@ -1779,10 +1753,6 @@ + + g_signal_connect (iconsize_adj, "value_changed", + G_CALLBACK (on_iconsize_changed), NULL); -+ g_signal_connect (G_OBJECT (iconsize_scale), "button-press-event", -+ G_CALLBACK (on_scale_button_press_event), NULL); -+ g_signal_connect (G_OBJECT (iconsize_scale), "button-release-event", -+ G_CALLBACK (on_scale_button_release_event), NULL); + g_signal_connect (G_OBJECT (iconsize_scale), "scroll-event", + G_CALLBACK (on_scale_scroll_event), &iconsize_values); + @@ -1802,10 +1772,6 @@ + NULL, NULL))); + g_signal_connect (launcher_sensitivity_adj, "value_changed", + G_CALLBACK (on_launchersensitivity_changed), NULL); -+ g_signal_connect (G_OBJECT (launcher_sensitivity_scale), "button-press-event", -+ G_CALLBACK (on_scale_button_press_event), NULL); -+ g_signal_connect (G_OBJECT (launcher_sensitivity_scale), "button-release-event", -+ G_CALLBACK (on_scale_button_release_event), NULL); + g_signal_connect (G_OBJECT (launcher_sensitivity_scale), "scroll-event", + G_CALLBACK (on_scale_scroll_event), &launchersensitivity_values); + launcher_sensitivity_widget_refresh (launcher_sensitivity_adj); @@ -1854,7 +1820,7 @@ GError *err = NULL; GtkWidget *widget; GtkListStore *store; -@@ -1177,9 +1752,14 @@ +@@ -1177,9 +1718,14 @@ priv->builder = gtk_builder_new (); @@ -1872,7 +1838,7 @@ if (err) { -@@ -1230,7 +1810,10 @@ +@@ -1230,7 +1776,10 @@ /* add the top level widget */ @@ -1884,7 +1850,7 @@ gtk_container_add (GTK_CONTAINER (self), widget); gtk_widget_show_all (GTK_WIDGET (self)); -@@ -1301,6 +1884,16 @@ +@@ -1301,6 +1850,16 @@ /* Setup the edit box with our current settings */ source_update_edit_box (priv, TRUE); @@ -1901,10 +1867,10 @@ } void -Index: gnome-control-center-3.3.91/panels/background/gnome-background-panel.desktop.in.in +Index: gnome-control-center-3.3.92/panels/background/gnome-background-panel.desktop.in.in =================================================================== ---- gnome-control-center-3.3.91.orig/panels/background/gnome-background-panel.desktop.in.in 2012-03-05 15:04:55.000000000 +0100 -+++ gnome-control-center-3.3.91/panels/background/gnome-background-panel.desktop.in.in 2012-03-09 18:48:08.980139682 +0100 +--- gnome-control-center-3.3.92.orig/panels/background/gnome-background-panel.desktop.in.in 2012-02-14 11:13:17.000000000 +0100 ++++ gnome-control-center-3.3.92/panels/background/gnome-background-panel.desktop.in.in 2012-03-22 14:43:28.262980021 +0100 @@ -1,6 +1,6 @@ [Desktop Entry] -_Name=Background diff -Nru gnome-control-center-3.3.92/debian/patches/51_unity_options_in_display_panel.patch gnome-control-center-3.3.92/debian/patches/51_unity_options_in_display_panel.patch --- gnome-control-center-3.3.92/debian/patches/51_unity_options_in_display_panel.patch 1970-01-01 00:00:00.000000000 +0000 +++ gnome-control-center-3.3.92/debian/patches/51_unity_options_in_display_panel.patch 2012-03-23 14:43:39.000000000 +0000 @@ -0,0 +1,617 @@ +Index: gnome-control-center-3.3.92/configure.ac +=================================================================== +--- gnome-control-center-3.3.92.orig/configure.ac 2012-03-21 15:32:01.277658076 +0100 ++++ gnome-control-center-3.3.92/configure.ac 2012-03-21 15:36:57.915129015 +0100 +@@ -98,7 +98,7 @@ + gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION + polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION + gdk-pixbuf-2.0 >= $GDKPIXBUF_REQUIRED_VERSION) +-PKG_CHECK_MODULES(DISPLAY_PANEL, $COMMON_MODULES gnome-desktop-3.0 >= 3.1.0) ++PKG_CHECK_MODULES(DISPLAY_PANEL, $COMMON_MODULES gnome-desktop-3.0 >= 3.1.0 gconf-2.0) + PKG_CHECK_MODULES(INFO_PANEL, $COMMON_MODULES libgtop-2.0 + polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION) + PKG_CHECK_MODULES(KEYBOARD_PANEL, $COMMON_MODULES x11) +Index: gnome-control-center-3.3.92/panels/display/cc-display-panel.c +=================================================================== +--- gnome-control-center-3.3.92.orig/panels/display/cc-display-panel.c 2012-03-08 11:16:46.000000000 +0100 ++++ gnome-control-center-3.3.92/panels/display/cc-display-panel.c 2012-03-21 15:38:36.207616424 +0100 +@@ -36,6 +36,7 @@ + #include + #include + #include ++#include + + G_DEFINE_DYNAMIC_TYPE (CcDisplayPanel, cc_display_panel, CC_TYPE_PANEL) + +@@ -54,6 +55,12 @@ + #define MINIMUM_WIDTH 675 + #define MINIMUM_HEIGHT 530 + ++#define UNITY_GCONF_OPTION_PATH "/apps/compiz-1/plugins/unityshell/screen0/options" ++#define UNITY_LAUNCHER_ALL_MONITORS_KEY UNITY_GCONF_OPTION_PATH"/num_launchers" ++#define UNITY_STICKY_EDGE_KEY UNITY_GCONF_OPTION_PATH"/launcher_capture_mouse" ++#define UNITY2D_GSETTINGS_MAIN "com.canonical.Unity2d" ++#define UNITY2D_GSETTINGS_LAUNCHER "com.canonical.Unity2d.Launcher" ++ + enum { + TEXT_COL, + WIDTH_COL, +@@ -72,6 +79,8 @@ + GnomeRROutputInfo *current_output; + + GSettings *clock_settings; ++ GSettings *unity2d_settings_main; ++ GSettings *unity2d_settings_launcher; + GtkBuilder *builder; + guint focus_id; + +@@ -95,6 +104,8 @@ + + /* These are used while we are waiting for the ApplyConfiguration method to be executed over D-bus */ + GDBusProxy *proxy; ++ ++ GSList *gconf_notify_id; + }; + + typedef struct +@@ -119,6 +130,8 @@ + guint n_properties, + GObjectConstructParam *properties); + static void on_screen_changed (GnomeRRScreen *scr, gpointer data); ++static void refresh_unity_launcher_placement (CcDisplayPanel *self); ++static gboolean unity_launcher_on_all_monitors (void); + + static void + cc_display_panel_get_property (GObject *object, +@@ -158,6 +171,7 @@ + CcDisplayPanel *self; + CcShell *shell; + GtkWidget *toplevel; ++ GSList* iter; + + self = CC_DISPLAY_PANEL (object); + +@@ -168,6 +182,11 @@ + if (self->priv->clock_settings != NULL) + g_object_unref (self->priv->clock_settings); + ++ if (self->priv->unity2d_settings_main != NULL) ++ g_object_unref (self->priv->unity2d_settings_main); ++ if (self->priv->unity2d_settings_launcher != NULL) ++ g_object_unref (self->priv->unity2d_settings_launcher); ++ + shell = cc_panel_get_shell (CC_PANEL (self)); + toplevel = cc_shell_get_toplevel (shell); + g_signal_handler_disconnect (G_OBJECT (toplevel), +@@ -176,6 +195,14 @@ + gnome_rr_labeler_hide (self->priv->labeler); + g_object_unref (self->priv->labeler); + ++ iter = self->priv->gconf_notify_id; ++ while (iter != NULL) ++ { ++ gconf_client_notify_remove(gconf_client_get_default (), (guint) iter->data); ++ iter = g_slist_next (iter); ++ } ++ g_slist_free (self->priv->gconf_notify_id); ++ + G_OBJECT_CLASS (cc_display_panel_parent_class)->finalize (object); + } + +@@ -223,6 +250,12 @@ + } + + static gboolean ++is_unity_session (void) ++{ ++ return (g_strcmp0 (g_getenv("XDG_CURRENT_DESKTOP"), "Unity") == 0); ++} ++ ++static gboolean + should_show_resolution (gint output_width, + gint output_height, + gint width, +@@ -262,6 +295,9 @@ + gnome_rr_labeler_show (self->priv->labeler); + + select_current_output_from_dialog_position (self); ++ ++ if (is_unity_session ()) ++ refresh_unity_launcher_placement (self); + } + + static void +@@ -599,6 +635,10 @@ + gtk_widget_set_sensitive (self->priv->clone_checkbox, mirror_is_supported); + gtk_widget_set_sensitive (self->priv->clone_label, mirror_is_supported); + ++ /* set inactive the launcher placement choice */ ++ gtk_widget_set_sensitive (WID ("launcher_placement_combo"), !mirror_is_active); ++ gtk_widget_set_sensitive (WID ("stickyedge_switch"), !mirror_is_active); ++ + g_signal_handlers_unblock_by_func (self->priv->clone_checkbox, G_CALLBACK (on_clone_changed), self); + } + +@@ -838,6 +878,7 @@ + rebuild_on_off_radios (self); + rebuild_resolution_combo (self); + rebuild_rotation_combo (self); ++ refresh_unity_launcher_placement (self); + + self->priv->ignore_gui_changes = FALSE; + } +@@ -1722,6 +1763,9 @@ + outputs = gnome_rr_config_get_outputs (self->priv->current_configuration); + for (i = 0; outputs[i] != NULL; ++i) + gnome_rr_output_info_set_primary (outputs[i], outputs[i] == output); ++ ++ /* refresh the combobox */ ++ refresh_unity_launcher_placement (self); + } + + static void +@@ -2073,7 +2117,38 @@ + g_object_unref (layout); + cairo_restore (cr); + +- if (gnome_rr_output_info_get_primary (output)) ++ /* top bar for unity settings */ ++ if (is_unity_session ()) ++ { ++ cairo_rectangle (cr, x, y, w * scale + 0.5, TOP_BAR_HEIGHT - 5); ++ cairo_set_source_rgb (cr, 0, 0, 0); ++ foo_scroll_area_add_input_from_fill (FOO_SCROLL_AREA (self->priv->area), ++ cr, ++ (FooScrollAreaEventFunc) on_top_bar_event, ++ self); ++ cairo_fill (cr); ++ /* launcher on all or primary monitor only */ ++ if (gnome_rr_output_info_is_active (output) && (unity_launcher_on_all_monitors () || gnome_rr_output_info_get_primary (output))) ++ { ++ cairo_rectangle (cr, x, y, 10, h * scale + 0.5); ++ cairo_set_source_rgb (cr, 0, 0, 0); ++ foo_scroll_area_add_input_from_fill (FOO_SCROLL_AREA (self->priv->area), ++ cr, ++ (FooScrollAreaEventFunc) on_top_bar_event, ++ self); ++ cairo_fill (cr); ++ ++ cairo_set_source_rgb (cr, 0.25, 0.25, 0.25); ++ cairo_rectangle (cr, x + 1, y + 6, 8, 8); ++ cairo_rectangle (cr, x + 1, y + 16, 8, 8); ++ cairo_rectangle (cr, x + 1, y + 26, 8, 8); ++ cairo_rectangle (cr, x + 1, y + 36, 8, 8); ++ cairo_rectangle (cr, x + 1, y + h * scale + 0.5 - 10, 8, 8); ++ cairo_fill (cr); ++ } ++ } ++ ++ if (gnome_rr_output_info_get_primary (output) && !is_unity_session ()) + { + const char *clock_format; + char *text; +@@ -2125,7 +2200,7 @@ + + pango_cairo_show_layout (cr, layout); + g_object_unref (layout); +- } ++} + + cairo_restore (cr); + } +@@ -2556,6 +2631,228 @@ + } + + static void ++stickyedge_widget_refresh (GtkSwitch *switcher) ++{ ++ gboolean stickyedge_enabled = gconf_client_get_bool (gconf_client_get_default (), UNITY_STICKY_EDGE_KEY, NULL); ++ ++ gtk_switch_set_active (switcher, stickyedge_enabled); ++} ++ ++static void ++ext_stickyedge_changed_callback (GConfClient* client, ++ guint cnxn_id, ++ GConfEntry *entry, ++ gpointer user_data) ++{ ++ stickyedge_widget_refresh (GTK_SWITCH (user_data)); ++} ++ ++static void ++on_stickyedge_changed (GtkSwitch *switcher, GParamSpec *pspec, gpointer user_data) ++{ ++ CcDisplayPanel *self = CC_DISPLAY_PANEL (user_data); ++ gboolean enabled = gtk_switch_get_active (GTK_SWITCH (switcher)); ++ ++ /* 3d */ ++ gconf_client_set_bool (gconf_client_get_default (), UNITY_STICKY_EDGE_KEY, enabled, NULL); ++ /* 2d */ ++ if (self->priv->unity2d_settings_main) ++ g_settings_set_boolean (self->priv->unity2d_settings_main, "sticky-edges", enabled); ++} ++ ++static gboolean ++unity_launcher_on_all_monitors () ++{ ++ gint value = gconf_client_get_int (gconf_client_get_default (), UNITY_LAUNCHER_ALL_MONITORS_KEY, NULL); ++ return (value == 0); ++} ++ ++static GdkPixbuf* ++get_monitor_pixbuf (CcDisplayPanel *self, GnomeRROutputInfo *output) ++{ ++ GdkColor color; ++ cairo_surface_t *cairo_surface; ++ cairo_t *cr; ++ int monitor_width = 30; ++ int monitor_height = 15; ++ ++ gnome_rr_labeler_get_color_for_output (self->priv->labeler, output, &color); ++ ++ cairo_surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, monitor_width, monitor_height); ++ cr = cairo_create (cairo_surface); ++ cairo_surface_destroy (cairo_surface); ++ cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); ++ cairo_paint (cr); ++ ++ cairo_set_operator (cr, CAIRO_OPERATOR_OVER); ++ cairo_set_source_rgb (cr, color.red / 65535.0, color.green / 65535.0, color.blue / 65535.0); ++ cairo_rectangle (cr, 0.5, 0.5, monitor_width - 1, monitor_height - 1); ++ cairo_fill (cr); ++ ++ cairo_set_line_width (cr, 1); ++ cairo_set_source_rgba (cr, 0, 0, 0, 1.0); ++ cairo_rectangle (cr, 0.5, 0.5, monitor_width - 1, monitor_height - 1); ++ cairo_stroke (cr); ++ ++ return gdk_pixbuf_get_from_surface (cairo_get_target (cr), 0, 0, monitor_width, monitor_height); ++} ++ ++static void ++refresh_unity_launcher_placement (CcDisplayPanel *self) ++{ ++ GtkWidget *launcher_placement_combo = WID ("launcher_placement_combo"); ++ GtkListStore *liststore; ++ GtkTreeIter iter; ++ GList *connected_outputs = NULL; ++ GList *list; ++ gboolean launcher_on_all_monitors = unity_launcher_on_all_monitors (); ++ gint index_of_primary_screen = 0; ++ gint i; ++ ++ liststore = (GtkListStore *) gtk_builder_get_object (self->priv->builder, "available_launcher_placement_store"); ++ gtk_list_store_clear (liststore); ++ ++ connected_outputs = list_connected_outputs (self, NULL, NULL); ++ for (list = connected_outputs, i = 0; list != NULL; list = list->next) ++ { ++ char *monitor_name; ++ GdkPixbuf *monitor_pixbuf; ++ GnomeRROutputInfo *output = list->data; ++ ++ if (!gnome_rr_output_info_is_active (output)) ++ continue; ++ ++ gtk_list_store_append (liststore, &iter); ++ monitor_name = g_strdup (gnome_rr_output_info_get_display_name (output)); ++ monitor_pixbuf = get_monitor_pixbuf (self, output); ++ ++ gtk_list_store_set (liststore, &iter, 0, monitor_pixbuf, 1, monitor_name, -1); ++ ++ /* select it if primary and only one launcher */ ++ if (gnome_rr_output_info_get_primary (output) && (!launcher_on_all_monitors)) ++ index_of_primary_screen = i; ++ i++; ++ ++ g_object_unref (monitor_pixbuf); ++ g_free (monitor_name); ++ } ++ ++ // FIXME: check autosort? ++ gtk_list_store_append (liststore, &iter); ++ gtk_list_store_set (liststore, &iter, 0, NULL, 1, _("All displays"), -1); ++ ++ if (launcher_on_all_monitors) ++ index_of_primary_screen = i; ++ ++ gtk_combo_box_set_active (GTK_COMBO_BOX (launcher_placement_combo), index_of_primary_screen); ++} ++ ++static gboolean ++switcher_set_to_launcher_on_all_monitors (CcDisplayPanel *self) ++{ ++ GtkComboBox *combo = GTK_COMBO_BOX (WID ("launcher_placement_combo")); ++ gint active = gtk_combo_box_get_active (combo); ++ gint number_items = gtk_tree_model_iter_n_children (gtk_combo_box_get_model (combo), ++ NULL); ++ return (active == number_items - 1); ++} ++ ++static void ++ext_launcher_placement_changed_callback (GConfClient* client, ++ guint cnxn_id, ++ GConfEntry *entry, ++ gpointer user_data) ++{ ++ // add some crazyness as 2d/3d are not using the same keys ++ CcDisplayPanel *self = CC_DISPLAY_PANEL (user_data); ++ gint launcher_gconf_value = 0; ++ ++ if (! switcher_set_to_launcher_on_all_monitors (self)) ++ launcher_gconf_value = 1; ++ ++ if (gconf_client_get_int (gconf_client_get_default (), UNITY_LAUNCHER_ALL_MONITORS_KEY, NULL) != launcher_gconf_value) ++ refresh_unity_launcher_placement (self); ++} ++ ++static void ++on_launcher_placement_combo_changed (GtkComboBox *combo, CcDisplayPanel *self) ++{ ++ gint active = gtk_combo_box_get_active (combo); ++ gint i; ++ gint index_on_combo = 0; ++ ++ if (active < 0) ++ return; ++ gint value = 0; ++ gboolean on_all_monitors = switcher_set_to_launcher_on_all_monitors (self); ++ ++ if (!on_all_monitors) { ++ value = 1; ++ // set the primary output if needed ++ GnomeRROutputInfo **outputs = gnome_rr_config_get_outputs (self->priv->current_configuration); ++ ++ for (i = 0; outputs[i] != NULL; ++i) ++ { ++ GnomeRROutputInfo *output = outputs[i]; ++ if (!gnome_rr_output_info_is_active (output)) ++ continue; ++ ++ if ((active == index_on_combo) && !gnome_rr_output_info_get_primary (output)) ++ { ++ set_primary_output (self, output); ++ break; ++ } ++ index_on_combo++; ++ } ++ } ++ ++ /* 3d */ ++ gconf_client_set_int (gconf_client_get_default (), UNITY_LAUNCHER_ALL_MONITORS_KEY, value, NULL); ++ /* 2d */ ++ if (self->priv->unity2d_settings_launcher) ++ g_settings_set_boolean (self->priv->unity2d_settings_launcher, "only-one-launcher", !on_all_monitors); ++} ++ ++static void ++setup_unity_settings (CcDisplayPanel *self) ++{ ++ const gchar * const *schemas; ++ self->priv->gconf_notify_id = NULL; ++ ++ /* Only use the unity-2d schema if it's installed */ ++ schemas = g_settings_list_schemas (); ++ while (*schemas != NULL) ++ { ++ if (g_strcmp0 (*schemas, UNITY2D_GSETTINGS_LAUNCHER) == 0) ++ { ++ self->priv->unity2d_settings_main = g_settings_new (UNITY2D_GSETTINGS_MAIN); ++ self->priv->unity2d_settings_launcher = g_settings_new (UNITY2D_GSETTINGS_LAUNCHER); ++ break; ++ } ++ schemas++; ++ } ++ gconf_client_add_dir (gconf_client_get_default (), UNITY_GCONF_OPTION_PATH, 0, NULL); ++ ++ GtkWidget *sticky_edge_switch = WID ("stickyedge_switch"); ++ g_signal_connect (sticky_edge_switch, "notify::active", ++ G_CALLBACK (on_stickyedge_changed), self); ++ self->priv->gconf_notify_id = g_slist_append (self->priv->gconf_notify_id, ++ GINT_TO_POINTER ( ++ gconf_client_notify_add (gconf_client_get_default (), UNITY_STICKY_EDGE_KEY, ++ ext_stickyedge_changed_callback, sticky_edge_switch, ++ NULL, NULL))); ++ stickyedge_widget_refresh (GTK_SWITCH (sticky_edge_switch)); ++ ++ g_signal_connect (G_OBJECT (WID ("launcher_placement_combo")), "changed", ++ G_CALLBACK (on_launcher_placement_combo_changed), self); ++ self->priv->gconf_notify_id = g_slist_append (self->priv->gconf_notify_id, ++ GINT_TO_POINTER ( ++ gconf_client_notify_add (gconf_client_get_default (), UNITY_LAUNCHER_ALL_MONITORS_KEY, ++ ext_launcher_placement_changed_callback, self, ++ NULL, NULL))); ++} ++ ++static void + cc_display_panel_init (CcDisplayPanel *self) + { + } +@@ -2572,7 +2869,7 @@ + CcDisplayPanel *self; + CcShell *shell; + GtkWidget *toplevel; +- gchar *objects[] = {"display-panel", NULL}; ++ gchar *objects[] = {"display-panel", "available_launcher_placement_store", NULL}; + + obj = G_OBJECT_CLASS (cc_display_panel_parent_class)->constructor (gtype, n_properties, properties); + self = CC_DISPLAY_PANEL (obj); +@@ -2661,6 +2958,17 @@ + g_signal_connect_swapped (WID ("apply_button"), + "clicked", G_CALLBACK (apply), self); + ++ /* Unity settings */ ++ if (is_unity_session ()) ++ setup_unity_settings (self); ++ else ++ { ++ gtk_widget_hide (WID ("launcher_placement_label")); ++ gtk_widget_hide (WID ("sticky_edge_label")); ++ gtk_widget_hide (WID ("launcher_placement_combo")); ++ gtk_widget_hide (WID ("stickyedge_switch")); ++ } ++ + gtk_widget_show (self->priv->panel); + gtk_container_add (GTK_CONTAINER (self), self->priv->panel); + +@@ -2675,4 +2983,3 @@ + CC_TYPE_DISPLAY_PANEL, + "display", 0); + } +- +Index: gnome-control-center-3.3.92/panels/display/display-capplet.ui +=================================================================== +--- gnome-control-center-3.3.92.orig/panels/display/display-capplet.ui 2012-02-14 11:13:17.000000000 +0100 ++++ gnome-control-center-3.3.92/panels/display/display-capplet.ui 2012-03-21 15:32:01.449658918 +0100 +@@ -1,6 +1,14 @@ + + + ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -96,27 +104,11 @@ + + + True +- 3 ++ 4 + 2 + 12 + 6 + +- +- True +- +- +- +- +- +- 1 +- 2 +- 2 +- 3 +- +- +- +- +- + + True + 1 +@@ -151,6 +143,42 @@ + + + ++ ++ True ++ 1 ++ L_auncher Placement ++ launcher_placement_combo ++ True ++ ++ ++ ++ 2 ++ 3 ++ GTK_FILL ++ ++ ++ ++ ++ ++ True ++ 1 ++ S_ticky Edge ++ stickyedge_switch ++ True ++ ++ ++ ++ 3 ++ 4 ++ GTK_FILL ++ ++ ++ ++ + + True + +@@ -179,6 +207,63 @@ + + + ++ ++ True ++ False ++ available_launcher_placement_store ++ 1 ++ ++ ++ ++ 0 ++ ++ ++ ++ ++ ++ 1 ++ ++ ++ ++ ++ 1 ++ 2 ++ 2 ++ 3 ++ ++ ++ ++ ++ ++ True ++ 12 ++ ++ ++ True ++ True ++ False ++ True ++ ++ ++ False ++ False ++ end ++ 1 ++ ++ ++ ++ ++ 1 ++ 2 ++ 3 ++ 4 ++ ++ False ++ False ++ 0 ++ ++ ++ + + + diff -Nru gnome-control-center-3.3.92/debian/patches/revert_git_keyboard_gsettings.patch gnome-control-center-3.3.92/debian/patches/revert_git_keyboard_gsettings.patch --- gnome-control-center-3.3.92/debian/patches/revert_git_keyboard_gsettings.patch 2012-03-19 18:39:45.000000000 +0000 +++ gnome-control-center-3.3.92/debian/patches/revert_git_keyboard_gsettings.patch 2012-03-23 14:43:39.000000000 +0000 @@ -1,9 +1,9 @@ Index: gnome-control-center-3.3.92/configure.ac =================================================================== ---- gnome-control-center-3.3.92.orig/configure.ac 2012-03-19 18:48:34.842584969 +0100 -+++ gnome-control-center-3.3.92/configure.ac 2012-03-19 18:48:34.862584969 +0100 +--- gnome-control-center-3.3.92.orig/configure.ac 2012-03-21 13:06:05.678241395 +0100 ++++ gnome-control-center-3.3.92/configure.ac 2012-03-21 13:06:05.694241480 +0100 @@ -109,7 +109,7 @@ - PKG_CHECK_MODULES(DISPLAY_PANEL, $COMMON_MODULES gnome-desktop-3.0 >= 3.1.0) + PKG_CHECK_MODULES(DISPLAY_PANEL, $COMMON_MODULES gnome-desktop-3.0 >= 3.1.0 gconf-2.0) PKG_CHECK_MODULES(INFO_PANEL, $COMMON_MODULES libgtop-2.0 polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION) -PKG_CHECK_MODULES(KEYBOARD_PANEL, $COMMON_MODULES x11) @@ -14,7 +14,7 @@ Index: gnome-control-center-3.3.92/panels/keyboard/cc-keyboard-item.c =================================================================== --- gnome-control-center-3.3.92.orig/panels/keyboard/cc-keyboard-item.c 2012-02-20 20:09:01.000000000 +0100 -+++ gnome-control-center-3.3.92/panels/keyboard/cc-keyboard-item.c 2012-03-19 18:48:34.866584969 +0100 ++++ gnome-control-center-3.3.92/panels/keyboard/cc-keyboard-item.c 2012-03-21 13:06:05.694241480 +0100 @@ -27,12 +27,12 @@ #include #include @@ -313,7 +313,7 @@ Index: gnome-control-center-3.3.92/panels/keyboard/cc-keyboard-item.h =================================================================== --- gnome-control-center-3.3.92.orig/panels/keyboard/cc-keyboard-item.h 2012-02-14 11:13:17.000000000 +0100 -+++ gnome-control-center-3.3.92/panels/keyboard/cc-keyboard-item.h 2012-03-19 18:48:34.866584969 +0100 ++++ gnome-control-center-3.3.92/panels/keyboard/cc-keyboard-item.h 2012-03-21 13:06:05.694241480 +0100 @@ -41,7 +41,8 @@ typedef enum { @@ -373,7 +373,7 @@ Index: gnome-control-center-3.3.92/panels/keyboard/keyboard-shortcuts.c =================================================================== --- gnome-control-center-3.3.92.orig/panels/keyboard/keyboard-shortcuts.c 2012-02-20 10:59:01.000000000 +0100 -+++ gnome-control-center-3.3.92/panels/keyboard/keyboard-shortcuts.c 2012-03-19 18:48:34.870584970 +0100 ++++ gnome-control-center-3.3.92/panels/keyboard/keyboard-shortcuts.c 2012-03-21 13:06:05.694241480 +0100 @@ -22,12 +22,13 @@ #include diff -Nru gnome-control-center-3.3.92/debian/patches/series gnome-control-center-3.3.92/debian/patches/series --- gnome-control-center-3.3.92/debian/patches/series 2012-03-19 18:39:45.000000000 +0000 +++ gnome-control-center-3.3.92/debian/patches/series 2012-03-23 14:43:39.000000000 +0000 @@ -6,6 +6,7 @@ 11_power-configure_lid_action.patch 12_add_never_turn_screen_off.patch 50_ubuntu_systemwide_prefs.patch +51_unity_options_in_display_panel.patch 52_ubuntu_language_list_mods.patch 53_use_ubuntu_help.patch 55_user_accounts_hide_controls.patch