--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Hi,
please unblock gnome-control-center. The new version features all
translations and bugfixes that have been sitting in the stable 3.4
branch of the upstream repository.
Mostly, the current version is broken for many Wacom tablets.
gnome-control-center (1:3.4.2+git20121016.29d7c0-1) unstable; urgency=low
[ Josselin Mouette ]
* Add missing epoch on libxi build-dependency.
[ Michael Biebl ]
* Rebuild with xz compression. Closes: #687279
[ Josselin Mouette ]
* New upstream git snapshot from the stable branch (which will not be
released despite the amount of useful bug fixes).
+ Features loads of wacom-related fixes. Closes: #689868.
+ Escape wallpaper filename before display.
+ Update for a changed DBus interface in g-s-d.
+ Fix the NetworkManager Bluetooth plugin.
* Bump build-dependency on libwacom according to upstream. (This is
not a real requirement, it was put here to force some bugfixes.)
* 11_revert_printer_class.patch: revert an unfortunate change that
leads to an undefined symbol.
Upstream short log follows.
Author: Andreas Nesdal <gedemiti@gmail.com>
Updated Norwegian Nynorsk translation (sync with Ubuntu)
Author: Bastien Nocera <hadess@hadess.net>
bluetooth: Don't use g_clear_pointer()
Author: Cyrus Lien <cyrus.lien@canonical.com>
display: Do not add preferred mode to drop down in clone mode.
Author: Bastien Nocera <hadess@hadess.net>
wacom: Fix warning with libwacom 0.6
Author: Bastien Nocera <hadess@hadess.net>
wacom: Bump minimum libwacom req to 0.6
Author: Michael Terry <michael.terry@canonical.com>
power: Use GCancellable better, to avoid a crash
Author: Bastien Nocera <hadess@hadess.net>
bluetooth: Don't break the custom widgets on connect
Author: Frédéric Péters <fpeters@0d.be>
printers: remove blank class_finalize function
(cherry picked from commit e87c564cdbf7810e0c15b40ed680d9c8bc6734b5)
Author: Ray Strode <rstrode@redhat.com>
online-accounts: set up finalize handler at class init time
Author: Debarshi Ray <debarshir@gnome.org>
online-accounts: Don't show spurious "No online accounts configured"
Author: Matthias Clasen <mclasen@redhat.com>
screen: Fix the build
Author: Shankar Prasad <svenkate@redhat.com>
Updated kn translation
Author: Shankar Prasad <svenkate@redhat.com>
Updated kn translation
Author: Reşat SABIQ <tilde.birlik@gmail.com>
Minor update for Crimean Tatar/Turkish translation
Author: Reşat SABIQ <tilde.birlik@gmail.com>
Updated Crimean Tatar (Crimean Turkish) translation
Author: Shankar Prasad <svenkate@redhat.com>
Updated kn translation
Author: Shankar Prasad <svenkate@redhat.com>
Updated kn translation
Author: Bastien Nocera <hadess@hadess.net>
shell: Don't handle shortcuts with excess modifiers
Author: Bastien Nocera <hadess@hadess.net>
shell: Fix not being able to assign Ctrl+Q to a shortcut
Author: Giovanni Campagna <gcampagna@src.gnome.org>
screen: Fix for gnome-settings-daemon changes
Author: Olivier Fourdan <ofourdan@redhat.com>
wacom: Cancel calibration if window loses focus
Author: Jon McCann <jmccann@redhat.com>
background: Escape wallpaper filename before display
Author: Nilamdyuti Goswami <nilamdyuti@gmail.com>
Assamese translation reviewed
Author: Nilamdyuti Goswami <nilamdyuti@gmail.com>
Assamese translation reviewed
Author: Stef Walter <stefw@gnome.org>
user-accounts: UmAccountDialog shouldn't be valid when shown
Author: Stef Walter <stefw@gnome.org>
user-accounts: Fix memory leak of GtkBuilder in accounts dialog
Author: Marek Černocký <marek@manet.cz>
Updated Czech translation
Author: Bastien Nocera <hadess@hadess.net>
wacom: Update from gnome-settings-daemon
Author: Bastien Nocera <hadess@hadess.net>
wacom: Fix crasher using link to display panel
Author: Peter Hutterer <peter.hutterer@who-t.net>
wacom: update the UI if a new tool comes in
Author: Bastien Nocera <hadess@hadess.net>
wacom: Destroy button mapping dialogue on unplug
Author: Bastien Nocera <hadess@hadess.net>
wacom: Hide "Map Buttons" button if no pad is found
Author: Peter Hutterer <peter.hutterer@who-t.net>
wacom: Make "Calibrate" button insensitive if there is no screen match
Attached, you will find the debdiff for code changes.
unblock gnome-control-center/1:3.4.2+git20121016.29d7c0-1
Thanks,
--
.''`. Josselin Mouette
: :' :
`. `'
`-
--- gnome-control-center-3.4.2/configure.ac 2012-05-15 12:19:58.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/configure.ac 2012-11-07 18:52:59.000000000 +0100
@@ -78,7 +78,7 @@
LIBNOTIFY_REQUIRED_VERSION=0.7.3
GNOME_DESKTOP_REQUIRED_VERSION=3.1.91
SCHEMAS_REQUIRED_VERSION=3.3.0
-LIBWACOM_REQUIRED_VERSION=0.3
+LIBWACOM_REQUIRED_VERSION=0.6
COMMON_MODULES="gtk+-3.0 >= $GTK_REQUIRED_VERSION
glib-2.0 >= $GLIB_REQUIRED_VERSION
--- gnome-control-center-3.4.2/debian/control.in 2012-05-25 07:36:24.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/debian/control.in 2012-11-07 19:52:05.000000000 +0100
@@ -41,8 +41,8 @@
libpulse-dev,
libsocialweb-client-dev,
libupower-glib-dev (>= 0.9.1),
- libwacom-dev (>= 0.3) [linux-any],
- libxi-dev (>= 1.2),
+ libwacom-dev (>= 0.6) [linux-any],
+ libxi-dev (>= 2:1.2),
libx11-dev,
libxft-dev (>= 2.1.2),
libxklavier-dev (>= 5.1),
--- gnome-control-center-3.4.2/debian/patches/11_revert_printer_class.patch 1970-01-01 01:00:00.000000000 +0100
+++ gnome-control-center-3.4.2+git20121016.29d7c0/debian/patches/11_revert_printer_class.patch 2012-11-07 19:52:05.000000000 +0100
@@ -0,0 +1,17 @@
+Revert upstream patch a39b9219652c14bb7a39a8639d03ab1462d311c5
+Index: gnome-control-center-3.4.2+git20121016.29d7c0/panels/printers/cc-printers-panel.c
+===================================================================
+--- gnome-control-center-3.4.2+git20121016.29d7c0.orig/panels/printers/cc-printers-panel.c 2012-11-07 18:52:59.000000000 +0100
++++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/printers/cc-printers-panel.c 2012-11-07 19:25:59.292279172 +0100
+@@ -216,6 +216,11 @@ cc_printers_panel_class_init (CcPrinters
+ }
+
+ static void
++cc_printers_panel_class_finalize (CcPrintersPanelClass *klass)
++{
++}
++
++static void
+ on_cups_notification (GDBusConnection *connection,
+ const char *sender_name,
+ const char *object_path,
--- gnome-control-center-3.4.2/debian/patches/series 2012-05-25 07:36:24.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/debian/patches/series 2012-11-07 19:52:05.000000000 +0100
@@ -2,5 +2,6 @@
02_no_assert_on_null_streams.patch
06_handle_passwd_with_ldap.patch
10_optional_wacom_support.patch
+11_revert_printer_class.patch
90_force_fallback.patch
revert_git_datetime_port.patch
--- gnome-control-center-3.4.2/panels/background/cc-background-panel.c 2012-03-05 15:04:55.000000000 +0100
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/background/cc-background-panel.c 2012-11-07 18:52:59.000000000 +0100
@@ -340,8 +340,12 @@
if (priv->current_background)
{
GdkColor pcolor, scolor;
+ char *escaped;
+
+ escaped = g_markup_escape_text (cc_background_item_get_name (priv->current_background), -1);
+ markup = g_strdup_printf ("<b>%s</b>", escaped);
+ g_free (escaped);
- markup = g_strdup_printf ("<b>%s</b>", cc_background_item_get_name (priv->current_background));
gtk_label_set_markup (GTK_LABEL (WID ("background-label")), markup);
g_free (markup);
--- gnome-control-center-3.4.2/panels/background/gdesktop-enums-types.c 2012-05-15 12:20:49.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/background/gdesktop-enums-types.c 2012-11-07 18:58:36.000000000 +0100
@@ -5,7 +5,7 @@
#include "gdesktop-enums-types.h"
#include "cc-background-item.h"
-/* enumerations from "/home/hadess/Projects/gnome-install/include/gsettings-desktop-schemas/gdesktop-enums.h" */
+/* enumerations from "/usr/include/gsettings-desktop-schemas/gdesktop-enums.h" */
GType
g_desktop_proxy_mode_get_type (void)
{
--- gnome-control-center-3.4.2/panels/background/gdesktop-enums-types.h 2012-02-07 19:43:20.000000000 +0100
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/background/gdesktop-enums-types.h 2012-11-07 18:58:36.000000000 +0100
@@ -7,7 +7,7 @@
#include <glib-object.h>
G_BEGIN_DECLS
-/* enumerations from "/home/hadess/Projects/gnome-install/include/gsettings-desktop-schemas/gdesktop-enums.h" */
+/* enumerations from "/usr/include/gsettings-desktop-schemas/gdesktop-enums.h" */
GType g_desktop_proxy_mode_get_type (void) G_GNUC_CONST;
#define G_DESKTOP_TYPE_DESKTOP_PROXY_MODE (g_desktop_proxy_mode_get_type())
GType g_desktop_toolbar_style_get_type (void) G_GNUC_CONST;
--- gnome-control-center-3.4.2/panels/bluetooth/cc-bluetooth-panel.c 2012-03-05 15:04:55.000000000 +0100
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/bluetooth/cc-bluetooth-panel.c 2012-11-07 18:52:59.000000000 +0100
@@ -50,6 +50,7 @@
struct CcBluetoothPanelPrivate {
GtkBuilder *builder;
GtkWidget *chooser;
+ char *selected_bdaddr;
BluetoothClient *client;
BluetoothKillswitch *killswitch;
gboolean debug;
@@ -103,6 +104,10 @@
g_object_unref (self->priv->client);
self->priv->client = NULL;
}
+ if (self->priv->selected_bdaddr) {
+ g_free (self->priv->selected_bdaddr);
+ self->priv->selected_bdaddr = NULL;
+ }
G_OBJECT_CLASS (cc_bluetooth_panel_parent_class)->finalize (object);
}
@@ -251,10 +256,12 @@
gtk_widget_hide (WID ("browse_box"));
gtk_widget_hide (WID ("send_box"));
+ bdaddr = bluetooth_chooser_get_selected_device (BLUETOOTH_CHOOSER (self->priv->chooser));
+
/* Remove the extra setup widgets */
- remove_extra_setup_widgets (self);
+ if (g_strcmp0 (self->priv->selected_bdaddr, bdaddr) != 0)
+ remove_extra_setup_widgets (self);
- bdaddr = bluetooth_chooser_get_selected_device (BLUETOOTH_CHOOSER (self->priv->chooser));
if (bdaddr == NULL) {
gtk_widget_set_sensitive (WID ("properties_vbox"), FALSE);
gtk_switch_set_active (button, FALSE);
@@ -325,15 +332,18 @@
}
/* Extra widgets */
- add_extra_setup_widgets (self, bdaddr);
+ if (g_strcmp0 (self->priv->selected_bdaddr, bdaddr) != 0)
+ add_extra_setup_widgets (self, bdaddr);
gtk_label_set_text (GTK_LABEL (WID ("address_label")), bdaddr);
- g_free (bdaddr);
gtk_widget_set_sensitive (WID ("button_delete"), TRUE);
set_notebook_page (self, NOTEBOOK_PAGE_PROPS);
}
+ g_free (self->priv->selected_bdaddr);
+ self->priv->selected_bdaddr = bdaddr;
+
g_signal_handlers_unblock_by_func (button, switch_connected_active_changed, self);
}
--- gnome-control-center-3.4.2/panels/datetime/timedated.c 2012-03-05 21:09:53.000000000 +0100
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/datetime/timedated.c 2012-11-07 18:58:41.000000000 +0100
@@ -1,5 +1,5 @@
/*
- * Generated by gdbus-codegen 2.31.19. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.32.4. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
@@ -10,6 +10,7 @@
#include "timedated.h"
+#include <string.h>
#ifdef G_OS_UNIX
# include <gio/gunixfdlist.h>
#endif
@@ -124,7 +125,12 @@
ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
break;
case G_TYPE_DOUBLE:
- ret = (g_value_get_double (a) == g_value_get_double (b));
+ {
+ /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
+ gdouble da = g_value_get_double (a);
+ gdouble db = g_value_get_double (b);
+ ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
+ }
break;
case G_TYPE_STRING:
ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
--- gnome-control-center-3.4.2/panels/datetime/timedated.h 2012-03-05 21:09:53.000000000 +0100
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/datetime/timedated.h 2012-11-07 18:58:41.000000000 +0100
@@ -1,5 +1,5 @@
/*
- * Generated by gdbus-codegen 2.31.19. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.32.4. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
--- gnome-control-center-3.4.2/panels/display/cc-display-panel.c 2012-05-15 12:18:30.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/display/cc-display-panel.c 2012-11-07 18:52:59.000000000 +0100
@@ -804,8 +804,10 @@
for (i = 0; modes[i] != NULL; ++i)
add_mode (self, modes[i], output_width, output_height, preferred_id);
- /* And force the preferred mode in the drop-down */
- add_mode (self, mode, output_width, output_height, preferred_id);
+ /* And force the preferred mode in the drop-down (when not in clone mode)
+ * https://bugzilla.gnome.org/show_bug.cgi?id=680969 */
+ if (!gnome_rr_config_get_clone (self->priv->current_configuration))
+ add_mode (self, mode, output_width, output_height, preferred_id);
current = make_resolution_string (output_width, output_height);
--- gnome-control-center-3.4.2/panels/display/foo-marshal.c 2011-08-25 19:54:08.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/display/foo-marshal.c 2012-11-07 18:58:37.000000000 +0100
@@ -8,7 +8,7 @@
#ifdef G_ENABLE_DEBUG
#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)
-#define g_marshal_value_peek_char(v) g_value_get_char (v)
+#define g_marshal_value_peek_char(v) g_value_get_schar (v)
#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v)
#define g_marshal_value_peek_int(v) g_value_get_int (v)
#define g_marshal_value_peek_uint(v) g_value_get_uint (v)
--- gnome-control-center-3.4.2/panels/online-accounts/cc-online-accounts-panel.c 2012-05-15 12:18:30.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/online-accounts/cc-online-accounts-panel.c 2012-11-07 18:52:59.000000000 +0100
@@ -57,6 +57,14 @@
CcPanelClass parent_class;
};
+static void on_model_row_deleted (GtkTreeModel *tree_model,
+ GtkTreePath *path,
+ gpointer user_data);
+static void on_model_row_inserted (GtkTreeModel *tree_model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer user_data);
+
static void on_tree_view_selection_changed (GtkTreeSelection *selection,
gpointer user_data);
@@ -80,7 +88,12 @@
G_CALLBACK (on_tree_view_selection_changed),
panel);
if (panel->accounts_model != NULL)
- g_object_unref (panel->accounts_model);
+ {
+ g_signal_handlers_disconnect_by_func (panel->accounts_model, G_CALLBACK (on_model_row_deleted), panel);
+ g_signal_handlers_disconnect_by_func (panel->accounts_model, G_CALLBACK (on_model_row_inserted), panel);
+ g_clear_object (&panel->accounts_model);
+ }
+
if (panel->client != NULL)
{
g_signal_handlers_disconnect_by_func (panel->client,
@@ -159,6 +172,8 @@
panel->accounts_model = goa_panel_accounts_model_new (panel->client);
gtk_tree_view_set_model (GTK_TREE_VIEW (panel->accounts_treeview), GTK_TREE_MODEL (panel->accounts_model));
+ g_signal_connect (panel->accounts_model, "row-deleted", G_CALLBACK (on_model_row_deleted), panel);
+ g_signal_connect (panel->accounts_model, "row-inserted", G_CALLBACK (on_model_row_inserted), panel);
column = gtk_tree_view_column_new ();
gtk_tree_view_append_column (GTK_TREE_VIEW (panel->accounts_treeview), column);
@@ -205,15 +220,13 @@
static void
goa_panel_class_init (GoaPanelClass *klass)
{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ object_class->finalize = goa_panel_finalize;
}
static void
goa_panel_class_finalize (GoaPanelClass *klass)
{
- GObjectClass *gobject_class;
-
- gobject_class = G_OBJECT_CLASS (klass);
- gobject_class->finalize = goa_panel_finalize;
}
/* ---------------------------------------------------------------------------------------------------- */
@@ -425,6 +438,58 @@
}
/* ---------------------------------------------------------------------------------------------------- */
+
+static void
+on_model_row_changed (GtkTreeModel *tree_model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer user_data)
+{
+ GtkTreeSelection *selection = GTK_TREE_SELECTION (user_data);
+
+ gtk_tree_selection_select_iter (selection, iter);
+ g_signal_handlers_disconnect_by_func (tree_model, G_CALLBACK (on_model_row_changed), user_data);
+}
+
+static void
+on_model_row_deleted (GtkTreeModel *tree_model,
+ GtkTreePath *path,
+ gpointer user_data)
+{
+ GoaPanel *panel = GOA_PANEL (user_data);
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+
+ if (!gtk_tree_model_get_iter (tree_model, &iter, path))
+ {
+ if (!gtk_tree_path_prev (path))
+ return;
+ }
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (panel->accounts_treeview));
+ gtk_tree_selection_select_path (selection, path);
+}
+
+static void
+on_model_row_inserted (GtkTreeModel *tree_model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer user_data)
+{
+ GoaPanel *panel = GOA_PANEL (user_data);
+ GtkTreeSelection *selection;
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (panel->accounts_treeview));
+ if (gtk_tree_selection_get_selected (selection, NULL, NULL))
+ return;
+
+ /* An empty row has been inserted and is going to be filled in, so
+ * we expect selection to stay valid.
+ */
+ g_signal_connect (tree_model, "row-changed", G_CALLBACK (on_model_row_changed), selection);
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
static void
on_toolbar_add_button_clicked (GtkToolButton *button,
--- gnome-control-center-3.4.2/panels/power/cc-power-panel.c 2012-05-15 12:18:30.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/power/cc-power-panel.c 2012-11-07 18:52:59.000000000 +0100
@@ -92,6 +92,7 @@
}
if (priv->cancellable != NULL)
{
+ g_cancellable_cancel (priv->cancellable);
g_object_unref (priv->cancellable);
priv->cancellable = NULL;
}
@@ -115,14 +116,6 @@
}
static void
-cc_power_panel_finalize (GObject *object)
-{
- CcPowerPanelPrivate *priv = CC_POWER_PANEL (object)->priv;
- g_cancellable_cancel (priv->cancellable);
- G_OBJECT_CLASS (cc_power_panel_parent_class)->finalize (object);
-}
-
-static void
on_lock_settings_changed (GSettings *settings,
const char *key,
CcPowerPanel *panel)
@@ -139,7 +132,6 @@
object_class->get_property = cc_power_panel_get_property;
object_class->set_property = cc_power_panel_set_property;
object_class->dispose = cc_power_panel_dispose;
- object_class->finalize = cc_power_panel_finalize;
}
static void
@@ -636,8 +628,8 @@
static void
get_devices_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
{
- CcPowerPanel *panel = CC_POWER_PANEL (user_data);
- CcPowerPanelPrivate *priv = panel->priv;
+ CcPowerPanel *panel;
+ CcPowerPanelPrivate *priv;
gboolean got_primary = FALSE;
gboolean ups_as_primary_device = FALSE;
GError *error = NULL;
@@ -653,6 +645,16 @@
UpDeviceKind kind;
UpDeviceState state;
+ result = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object), res, &error);
+ if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ {
+ g_error_free (error);
+ return; /* Must exit before accessing freed memory */
+ }
+
+ panel = CC_POWER_PANEL (user_data);
+ priv = panel->priv;
+
/* empty the secondary box */
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
"grid_secondary"));
@@ -669,7 +671,6 @@
"box_secondary"));
gtk_widget_hide (widget);
- result = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object), res, &error);
if (result == NULL)
{
g_printerr ("Error getting devices: %s\n", error->message);
@@ -768,16 +769,22 @@
got_power_proxy_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
{
GError *error = NULL;
- CcPowerPanelPrivate *priv = CC_POWER_PANEL (user_data)->priv;
+ GDBusProxy *proxy;
+ CcPowerPanelPrivate *priv;
- priv->proxy = g_dbus_proxy_new_for_bus_finish (res, &error);
- if (priv->proxy == NULL)
+ proxy = g_dbus_proxy_new_for_bus_finish (res, &error);
+ if (proxy == NULL)
{
g_printerr ("Error creating proxy: %s\n", error->message);
g_error_free (error);
return;
}
+ /* Access user_data after checking for error because user_data might be
+ disposed already. */
+ priv = CC_POWER_PANEL (user_data)->priv;
+ priv->proxy = proxy;
+
/* we want to change the primary device changes */
g_signal_connect (priv->proxy,
"g-properties-changed",
--- gnome-control-center-3.4.2/panels/printers/cc-printers-panel.c 2012-04-10 17:01:29.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/printers/cc-printers-panel.c 2012-11-07 18:52:59.000000000 +0100
@@ -216,11 +216,6 @@
}
static void
-cc_printers_panel_class_finalize (CcPrintersPanelClass *klass)
-{
-}
-
-static void
on_cups_notification (GDBusConnection *connection,
const char *sender_name,
const char *object_path,
--- gnome-control-center-3.4.2/panels/screen/cc-screen-panel.c 2011-10-07 16:22:47.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/screen/cc-screen-panel.c 2012-11-07 18:52:59.000000000 +0100
@@ -169,33 +169,6 @@
}
static void
-on_signal (GDBusProxy *proxy,
- gchar *sender_name,
- gchar *signal_name,
- GVariant *parameters,
- gpointer user_data)
-{
- CcScreenPanel *self = CC_SCREEN_PANEL (user_data);
-
- if (g_strcmp0 (signal_name, "BrightnessChanged") == 0)
- {
- guint brightness;
- GtkRange *range;
-
- /* changed, but ignoring */
- if (self->priv->setting_brightness)
- return;
-
- /* update the bar */
- g_variant_get (parameters,
- "(u)",
- &brightness);
- range = GTK_RANGE (WID ("screen_brightness_hscale"));
- gtk_range_set_value (range, brightness);
- }
-}
-
-static void
set_brightness_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
{
GError *error = NULL;
@@ -276,6 +249,33 @@
}
static void
+on_signal (GDBusProxy *proxy,
+ gchar *sender_name,
+ gchar *signal_name,
+ GVariant *parameters,
+ gpointer user_data)
+{
+ CcScreenPanel *self = CC_SCREEN_PANEL (user_data);
+
+ if (g_strcmp0 (signal_name, "Changed") == 0)
+ {
+ /* changed, but ignoring */
+ if (self->priv->setting_brightness)
+ return;
+
+ /* retrieve the value again from g-s-d */
+ g_dbus_proxy_call (self->priv->proxy,
+ "GetPercentage",
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ 200, /* we don't want to randomly move the bar */
+ self->priv->cancellable,
+ get_brightness_cb,
+ user_data);
+ }
+}
+
+static void
got_power_proxy_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
{
GError *error = NULL;
--- gnome-control-center-3.4.2/panels/user-accounts/um-account-dialog.c 2011-09-01 12:01:01.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/user-accounts/um-account-dialog.c 2012-11-07 18:52:59.000000000 +0100
@@ -220,6 +220,7 @@
widget = (GtkWidget *) gtk_builder_get_object (builder, "account-type-combo");
um->account_type_combo = widget;
+ g_object_unref (builder);
return um;
}
@@ -248,7 +249,8 @@
gtk_window_present (GTK_WINDOW (um->dialog));
gtk_widget_grab_focus (um->name_entry);
- um->valid_name = um->valid_username = TRUE;
+ um->valid_name = um->valid_username = FALSE;
+ gtk_widget_set_sensitive (um->ok_button, um->valid_name && um->valid_username);
um->user_created_callback = user_created_callback;
um->user_created_data = user_created_data;
--- gnome-control-center-3.4.2/panels/wacom/calibrator/gui_gtk.c 2012-03-05 15:04:55.000000000 +0100
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/wacom/calibrator/gui_gtk.c 2012-11-07 18:52:59.000000000 +0100
@@ -301,6 +301,17 @@
}
static gboolean
+on_focus_out_event (GtkWidget *widget,
+ GdkEvent *event,
+ CalibArea *area)
+{
+ /* If the calibrator window looses focus, simply bail out... */
+ on_delete_event (widget, NULL, area);
+
+ return FALSE;
+}
+
+static gboolean
on_timer_signal(CalibArea *area)
{
GdkWindow *win;
@@ -388,6 +399,7 @@
gtk_widget_add_events (calib_area->window, GDK_KEY_RELEASE_MASK | GDK_BUTTON_PRESS_MASK);
gtk_widget_set_can_focus (calib_area->window, TRUE);
gtk_window_fullscreen (GTK_WINDOW (calib_area->window));
+ gtk_window_set_keep_above (GTK_WINDOW (calib_area->window), TRUE);
/* Connect callbacks */
g_signal_connect (calib_area->window, "draw",
@@ -398,6 +410,8 @@
G_CALLBACK(on_key_release_event), calib_area);
g_signal_connect (calib_area->window, "delete-event",
G_CALLBACK(on_delete_event), calib_area);
+ g_signal_connect (calib_area->window, "focus-out-event",
+ G_CALLBACK(on_focus_out_event), calib_area);
/* Setup timer for animation */
calib_area->anim_id = g_timeout_add(TIME_STEP, (GSourceFunc)on_timer_signal, calib_area);
--- gnome-control-center-3.4.2/panels/wacom/cc-wacom-page.c 2012-05-15 12:18:30.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/wacom/cc-wacom-page.c 2012-11-07 18:52:59.000000000 +0100
@@ -69,6 +69,7 @@
/* Button mapping */
GtkBuilder *mapping_builder;
+ GtkWidget *button_map;
/* Display mapping */
GtkWidget *mapping;
@@ -95,6 +96,32 @@
MODE_RELATIVE, /* stylus + eraser relative */
};
+/* Different types of layout for the tablet config */
+enum {
+ LAYOUT_NORMAL, /* tracking mode, button mapping */
+ LAYOUT_REVERSIBLE, /* tracking mode, button mapping, left-hand orientation */
+ LAYOUT_SCREEN /* button mapping, calibration, display resolution */
+};
+
+static void
+update_tablet_ui (CcWacomPage *page,
+ int layout);
+
+static int
+get_layout_type (GsdWacomDevice *device)
+{
+ int layout;
+
+ if (gsd_wacom_device_is_screen_tablet (device))
+ layout = LAYOUT_SCREEN;
+ else if (gsd_wacom_device_reversible (device))
+ layout = LAYOUT_REVERSIBLE;
+ else
+ layout = LAYOUT_NORMAL;
+
+ return layout;
+}
+
static void
set_calibration (gint *cal,
gsize ncal,
@@ -653,6 +680,9 @@
G_CALLBACK (button_mapping_dialog_closed), page);
gtk_widget_show (dialog);
+
+ priv->button_map = dialog;
+ g_object_add_weak_pointer (G_OBJECT (dialog), (gpointer *) &priv->button_map);
}
static void
@@ -661,11 +691,14 @@
CcWacomPage *page)
{
CcWacomPagePrivate *priv;
+ int layout;
priv = page->priv;
gtk_widget_destroy (priv->dialog);
priv->dialog = NULL;
priv->mapping = NULL;
+ layout = get_layout_type (priv->stylus);
+ update_tablet_ui (page, layout);
}
static void
@@ -806,11 +839,17 @@
priv->area = NULL;
}
+ if (priv->button_map) {
+ gtk_widget_destroy (priv->button_map);
+ priv->button_map = NULL;
+ }
+
if (priv->builder) {
g_object_unref (priv->builder);
priv->builder = NULL;
}
+ priv->panel = NULL;
G_OBJECT_CLASS (cc_wacom_page_parent_class)->dispose (object);
}
@@ -981,13 +1020,6 @@
gsd_wacom_stylus_get_name (stylus));
}
-/* Different types of layout for the tablet config */
-enum {
- LAYOUT_NORMAL, /* tracking mode, button mapping */
- LAYOUT_REVERSIBLE, /* tracking mode, button mapping, left-hand orientation */
- LAYOUT_SCREEN /* button mapping, calibration, display resolution */
-};
-
static void
remove_left_handed (CcWacomPagePrivate *priv)
{
@@ -1010,10 +1042,12 @@
int layout)
{
CcWacomPagePrivate *priv;
+ gboolean has_monitor = FALSE;
priv = page->priv;
- /* FIXME Handle ->pad being NULL and hide the pad buttons */
+ /* Hide the pad buttons if no pad is present */
+ gtk_widget_set_visible (WID ("map-buttons-button"), priv->pad != NULL);
switch (layout) {
case LAYOUT_NORMAL:
@@ -1031,6 +1065,9 @@
gtk_widget_destroy (WID ("display-mapping-button"));
gtk_widget_show (WID ("button-calibrate"));
+ if (gsd_wacom_device_get_display_monitor (page->priv->stylus) >= 0)
+ has_monitor = TRUE;
+ gtk_widget_set_sensitive (WID ("button-calibrate"), has_monitor);
gtk_widget_show (WID ("display-link"));
gtk_container_child_set (CWID ("main-grid"),
@@ -1045,6 +1082,33 @@
}
}
+gboolean
+cc_wacom_page_update_tools (CcWacomPage *page,
+ GsdWacomDevice *stylus,
+ GsdWacomDevice *eraser,
+ GsdWacomDevice *pad)
+{
+ CcWacomPagePrivate *priv;
+ int layout;
+ gboolean changed;
+
+ /* Type of layout */
+ layout = get_layout_type (stylus);
+
+ priv = page->priv;
+ changed = (priv->stylus != stylus || priv->eraser != eraser || priv->pad != pad);
+ if (!changed)
+ return FALSE;
+
+ priv->stylus = stylus;
+ priv->eraser = eraser;
+ priv->pad = pad;
+
+ update_tablet_ui (CC_WACOM_PAGE (page), layout);
+
+ return TRUE;
+}
+
GtkWidget *
cc_wacom_page_new (CcWacomPanel *panel,
GsdWacomDevice *stylus,
@@ -1053,7 +1117,6 @@
{
CcWacomPage *page;
CcWacomPagePrivate *priv;
- int layout;
g_return_val_if_fail (GSD_IS_WACOM_DEVICE (stylus), NULL);
g_return_val_if_fail (gsd_wacom_device_get_device_type (stylus) == WACOM_TYPE_STYLUS, NULL);
@@ -1068,9 +1131,8 @@
priv = page->priv;
priv->panel = panel;
- priv->stylus = stylus;
- priv->eraser = eraser;
- priv->pad = pad;
+
+ cc_wacom_page_update_tools (page, stylus, eraser, pad);
/* FIXME move this to construct */
priv->wacom_settings = gsd_wacom_device_get_settings (stylus);
@@ -1079,16 +1141,6 @@
/* Tablet name */
gtk_label_set_text (GTK_LABEL (WID ("label-tabletmodel")), gsd_wacom_device_get_name (stylus));
- /* Type of layout */
- if (gsd_wacom_device_is_screen_tablet (stylus))
- layout = LAYOUT_SCREEN;
- else if (gsd_wacom_device_reversible (stylus))
- layout = LAYOUT_REVERSIBLE;
- else
- layout = LAYOUT_NORMAL;
-
- update_tablet_ui (page, layout);
-
/* Left-handedness */
if (gsd_wacom_device_reversible (stylus))
set_left_handed_from_gsettings (page);
--- gnome-control-center-3.4.2/panels/wacom/cc-wacom-page.h 2012-05-15 12:18:30.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/wacom/cc-wacom-page.h 2012-11-07 18:09:12.000000000 +0100
@@ -74,6 +74,11 @@
GsdWacomDevice *eraser,
GsdWacomDevice *pad);
+gboolean cc_wacom_page_update_tools (CcWacomPage *page,
+ GsdWacomDevice *stylus,
+ GsdWacomDevice *eraser,
+ GsdWacomDevice *pad);
+
void cc_wacom_page_set_navigation (CcWacomPage *page,
GtkNotebook *notebook,
gboolean ignore_first_page);
--- gnome-control-center-3.4.2/panels/wacom/cc-wacom-panel.c 2012-05-15 12:18:30.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/wacom/cc-wacom-panel.c 2012-11-07 18:52:59.000000000 +0100
@@ -200,12 +200,11 @@
tablets = g_hash_table_get_values (ht);
for (l = tablets; l; l = l->next) {
Tablet *tablet;
+ GtkWidget *page;
tablet = l->data;
if (tablet->stylus == NULL ||
tablet->eraser == NULL) {
- GtkWidget *page;
-
page = g_hash_table_lookup (priv->pages, tablet->name);
if (page != NULL) {
remove_page (GTK_NOTEBOOK (priv->notebook), page);
@@ -215,9 +214,9 @@
}
continue;
}
-
- if (g_hash_table_lookup (priv->pages, tablet->name) == NULL) {
- GtkWidget *page;
+ /* this code is called once the stylus + eraser were set up, but the pad does not exist yet */
+ page = g_hash_table_lookup (priv->pages, tablet->name);
+ if (page == NULL) {
page = cc_wacom_page_new (self, tablet->stylus, tablet->eraser, tablet->pad);
cc_wacom_page_set_navigation (CC_WACOM_PAGE (page), GTK_NOTEBOOK (priv->notebook), TRUE);
gtk_widget_show (page);
@@ -225,6 +224,8 @@
g_hash_table_insert (priv->pages, g_strdup (tablet->name), page);
changed = TRUE;
+ } else {
+ cc_wacom_page_update_tools (CC_WACOM_PAGE (page), tablet->stylus, tablet->eraser, tablet->pad);
}
}
g_list_free (tablets);
@@ -293,6 +294,8 @@
CcShell *shell;
GError *error = NULL;
+ g_return_if_fail (self);
+
shell = cc_panel_get_shell (CC_PANEL (self));
if (cc_shell_set_active_panel_from_id (shell, panel, NULL, &error) == FALSE)
{
--- gnome-control-center-3.4.2/panels/wacom/gsd-input-helper.c 2012-05-15 12:18:30.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/wacom/gsd-input-helper.c 2012-11-07 18:52:59.000000000 +0100
@@ -83,6 +83,8 @@
xdevice, prop, realtype, realformat,
PropModeReplace, data, nitems);
+ XFree (data);
+
if (gdk_error_trap_pop ()) {
g_warning ("Error in setting \"%s\" for \"%s\"", property->name, device_name);
return FALSE;
@@ -129,7 +131,14 @@
if (XIQueryVersion (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &major, &minor) != Success) {
gdk_error_trap_pop_ignored ();
- return FALSE;
+ /* try for 2.2, maybe gtk has already announced 2.2 support */
+ gdk_error_trap_push ();
+ major = 2;
+ minor = 2;
+ if (XIQueryVersion (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &major, &minor) != Success) {
+ gdk_error_trap_pop_ignored ();
+ return FALSE;
+ }
}
gdk_error_trap_pop_ignored ();
@@ -328,14 +337,16 @@
if (!prop)
return -1;
+ data = NULL;
+
gdk_error_trap_push ();
- if (!XIGetProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
+ if (XIGetProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
deviceid, prop, 0, 1000, False,
AnyPropertyType, &act_type, &act_format,
- &nitems, &bytes_after, &data) == Success) {
+ &nitems, &bytes_after, &data) != Success) {
gdk_error_trap_pop_ignored ();
- return -1;
+ goto out;
}
if (gdk_error_trap_pop ())
@@ -366,10 +377,11 @@
/* That means that no tool was set down yet */
if (id == STYLUS_DEVICE_ID ||
id == ERASER_DEVICE_ID)
- return 0x0;
+ id = 0x0;
out:
- XFree (data);
+ if (data != NULL)
+ XFree (data);
return id;
}
@@ -433,7 +445,7 @@
{
GSettings *settings;
char *cmd;
- char *argv[5];
+ char *argv[7];
int exit_status;
gboolean rc;
int id;
@@ -451,10 +463,12 @@
g_object_get (device, "device-id", &id, NULL);
argv[0] = cmd;
- argv[1] = g_strdup_printf ("-t %s", custom_command_to_string (command));
- argv[2] = g_strdup_printf ("-i %d", id);
- argv[3] = g_strdup_printf ("%s", gdk_device_get_name (device));
- argv[4] = NULL;
+ argv[1] = "-t";
+ argv[2] = (char *) custom_command_to_string (command);
+ argv[3] = "-i";
+ argv[4] = g_strdup_printf ("%d", id);
+ argv[5] = g_strdup_printf ("%s", gdk_device_get_name (device));
+ argv[6] = NULL;
rc = g_spawn_sync (g_get_home_dir (), argv, NULL, G_SPAWN_SEARCH_PATH,
NULL, NULL, NULL, NULL, &exit_status, NULL);
@@ -463,8 +477,8 @@
g_warning ("Couldn't execute command '%s', verify that this is a valid command.", cmd);
g_free (argv[0]);
- g_free (argv[1]);
- g_free (argv[2]);
+ g_free (argv[4]);
+ g_free (argv[5]);
return (exit_status == 0);
}
--- gnome-control-center-3.4.2/panels/wacom/gsd-wacom-device.c 2012-05-15 12:18:30.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/panels/wacom/gsd-wacom-device.c 2012-11-07 18:52:59.000000000 +0100
@@ -373,6 +373,8 @@
name = XGetAtomName (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), pev->property);
if (name == NULL ||
g_strcmp0 (name, WACOM_SERIAL_IDS_PROP) != 0) {
+ if (name)
+ XFree (name);
return GDK_FILTER_CONTINUE;
}
XFree (name);
@@ -477,10 +479,10 @@
device, prop, 0, 1, False,
XA_ATOM, &realtype, &realformat, &nitems,
&bytes_after, &data);
- if (gdk_error_trap_pop () || rc != Success || realtype == None) {
- XCloseDevice (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), device);
+ XCloseDevice (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), device);
+
+ if (gdk_error_trap_pop () || rc != Success || realtype == None)
ret = WACOM_TYPE_INVALID;
- }
XFree (data);
@@ -572,23 +574,31 @@
GSettings *tablet;
GVariant *display;
const gchar **edid;
+ GnomeRROutputInfo *ret;
if (device == NULL)
return NULL;
+ ret = NULL;
tablet = device->priv->wacom_settings;
display = g_settings_get_value (tablet, "display");
edid = g_variant_get_strv (display, &n);
if (n != 3) {
g_critical ("Expected 'display' key to store %d values; got %"G_GSIZE_FORMAT".", 3, n);
- return NULL;
+ goto out;
}
if (strlen(edid[0]) == 0 || strlen(edid[1]) == 0 || strlen(edid[2]) == 0)
- return NULL;
+ goto out;
- return find_output_by_edid (edid[0], edid[1], edid[2]);
+ ret = find_output_by_edid (edid[0], edid[1], edid[2]);
+
+out:
+ g_free (edid);
+ g_variant_unref (display);
+
+ return ret;
}
static GnomeRROutputInfo*
@@ -909,6 +919,8 @@
name = g_strdup_printf (_("Left Ring Mode #%d"), i);
id = g_strdup_printf ("left-ring-mode-%d", i);
l = g_list_append (l, gsd_wacom_tablet_button_new (name, id, settings_path, WACOM_TABLET_BUTTON_TYPE_ELEVATOR, flags_to_group (WACOM_BUTTON_RING_MODESWITCH), i - 1));
+ g_free (name);
+ g_free (id);
}
} else if ((direction & WACOM_BUTTON_POSITION_RIGHT) && libwacom_has_ring2 (wacom_device)) {
num_modes = libwacom_get_ring2_num_modes (wacom_device);
@@ -916,6 +928,8 @@
name = g_strdup_printf (_("Right Ring Mode #%d"), i);
id = g_strdup_printf ("right-ring-mode-%d", i);
l = g_list_append (l, gsd_wacom_tablet_button_new (name, id, settings_path, WACOM_TABLET_BUTTON_TYPE_ELEVATOR, flags_to_group (WACOM_BUTTON_RING2_MODESWITCH), i - 1));
+ g_free (name);
+ g_free (id);
}
}
@@ -944,6 +958,8 @@
name = g_strdup_printf (_("Left Touchstrip Mode #%d"), i);
id = g_strdup_printf ("left-strip-mode-%d", i);
l = g_list_append (l, gsd_wacom_tablet_button_new (name, id, settings_path, WACOM_TABLET_BUTTON_TYPE_ELEVATOR, flags_to_group (WACOM_BUTTON_TOUCHSTRIP_MODESWITCH), i - 1));
+ g_free (name);
+ g_free (id);
}
} else if ((direction & WACOM_BUTTON_POSITION_RIGHT) && num_strips >= 2) {
num_modes = libwacom_get_strips_num_modes (wacom_device);
@@ -951,6 +967,8 @@
name = g_strdup_printf (_("Right Touchstrip Mode #%d"), i);
id = g_strdup_printf ("right-strip-mode-%d", i);
l = g_list_append (l, gsd_wacom_tablet_button_new (name, id, settings_path, WACOM_TABLET_BUTTON_TYPE_ELEVATOR, flags_to_group (WACOM_BUTTON_TOUCHSTRIP2_MODESWITCH), i - 1));
+ g_free (name);
+ g_free (id);
}
}
@@ -1125,7 +1143,7 @@
if (device->priv->type == WACOM_TYPE_STYLUS ||
device->priv->type == WACOM_TYPE_ERASER) {
- int *ids;
+ const int *ids;
int num_styli;
guint i;
@@ -1322,6 +1340,9 @@
p->wacom_settings = NULL;
}
+ g_list_foreach (p->styli, (GFunc) g_object_unref, NULL);
+ g_list_free (p->styli);
+
g_list_foreach (p->buttons, (GFunc) gsd_wacom_tablet_button_free, NULL);
g_list_free (p->buttons);
--- gnome-control-center-3.4.2/shell/gnome-control-center.c 2012-05-15 12:18:31.000000000 +0200
+++ gnome-control-center-3.4.2+git20121016.29d7c0/shell/gnome-control-center.c 2012-11-07 18:52:59.000000000 +0100
@@ -1058,12 +1058,20 @@
GdkEventKey *event,
GnomeControlCenter *self)
{
+ GdkKeymap *keymap;
gboolean retval;
+ GdkModifierType state;
+
+ if (event->state == 0)
+ return FALSE;
retval = FALSE;
+ state = event->state;
+ keymap = gdk_keymap_get_default ();
+ gdk_keymap_add_virtual_modifiers (keymap, &state);
+ state = state & gtk_accelerator_get_default_mod_mask ();
- if (event->state != 0 &&
- (event->state & GDK_CONTROL_MASK))
+ if (state == GDK_CONTROL_MASK)
{
switch (event->keyval)
{
@@ -1115,8 +1123,8 @@
/* connect various signals */
priv->window = W (priv->builder, "main-window");
g_signal_connect_swapped (priv->window, "delete-event", G_CALLBACK (g_object_unref), self);
- g_signal_connect (priv->window, "key_press_event",
- G_CALLBACK (window_key_press_event), self);
+ g_signal_connect_after (priv->window, "key_press_event",
+ G_CALLBACK (window_key_press_event), self);
priv->notebook = W (priv->builder, "notebook");
priv->scrolled_window = W (priv->builder, "scrolledwindow1");
--- End Message ---