Package: release.debian.org User: release.debian....@packages.debian.org Usertags: tpu Severity: normal
Hi, I'd like to get your approval about the upload of cairo-dock 3.0.0-3 to testing-proposed-update in order to fix 1 RC bug and enable hardening build. The changes from 3.0.0-2 (in wheezy) to 3.0.3-3 as follows: - RC bug number: #676831 - This bug is already fix newer cairo-dock ( >= 3.1.1, in unstable). - We created patches by cherry-picked from upstream Git repository for cairo-dock (3.0.0-2, in wheezy). - Enable hardening build - Update debhelper >= 9, Add dpkg-dev (>= 1.16.1~) I attached debdiff output. Best Wishes, Youhei -- System Information: Debian Release: wheezy/sid APT prefers testing-updates APT policy: (500, 'testing-updates'), (500, 'testing'), (95, 'unstable'), (90, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 3.2.0-4-amd64 (SMP w/4 CPU cores) Locale: LANG=ja_JP.UTF-8, LC_CTYPE=ja_JP.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash --- Youhei SASAKI <uwab...@gfd-dennou.org> <uwab...@debian.or.jp> GPG fingerprint: 4096/RSA: 66A4 EA70 4FE2 4055 8D6A C2E6 9394 F354 891D 7E07
diff -Nru cairo-dock-3.0.0/debian/changelog cairo-dock-3.0.0/debian/changelog --- cairo-dock-3.0.0/debian/changelog 2012-05-20 21:06:28.000000000 +0900 +++ cairo-dock-3.0.0/debian/changelog 2012-11-27 12:15:55.000000000 +0900 @@ -1,3 +1,13 @@ +cairo-dock (3.0.0-3) unstable; urgency=low + + * Update debhelper to 9. + * Add dpkg-dev (>= 1.16.1~) to Build-Depends. + * Enable hardening. + * Fix syntax error in copyright file. + * Fix segfault when using log out applet. (Closes: #676841) + + -- Nobuhiro Iwamatsu <iwama...@debian.org> Tue, 31 Jul 2012 12:46:41 +0900 + cairo-dock (3.0.0-2) unstable; urgency=low * Set Build-Depends libgtk-3-dev instead of libgtk2.0-dev. diff -Nru cairo-dock-3.0.0/debian/compat cairo-dock-3.0.0/debian/compat --- cairo-dock-3.0.0/debian/compat 2011-02-28 09:44:20.000000000 +0900 +++ cairo-dock-3.0.0/debian/compat 2012-11-27 12:15:55.000000000 +0900 @@ -1 +1 @@ -7 +9 diff -Nru cairo-dock-3.0.0/debian/control cairo-dock-3.0.0/debian/control --- cairo-dock-3.0.0/debian/control 2012-05-20 21:03:28.000000000 +0900 +++ cairo-dock-3.0.0/debian/control 2012-11-27 12:15:55.000000000 +0900 @@ -5,7 +5,7 @@ DM-Upload-Allowed: yes Uploaders: Nobuhiro Iwamatsu <iwama...@debian.org>, Youhei SASAKI <uwab...@gfd-dennou.org> -Build-Depends: cdbs, debhelper (>= 7), autotools-dev, intltool, pkg-config, +Build-Depends: cdbs, debhelper (>= 9), dpkg-dev (>= 1.16.1~), autotools-dev, intltool, pkg-config, libcairo-dev, libdbus-1-dev, librsvg2-dev, libxml2-dev, libxrender-dev, libxtst-dev, libgtkglext1-dev, libcurl4-gnutls-dev, libdbus-glib-1-dev, libgtk-3-dev, quilt, cmake (>= 2.8.0) diff -Nru cairo-dock-3.0.0/debian/copyright cairo-dock-3.0.0/debian/copyright --- cairo-dock-3.0.0/debian/copyright 2011-10-26 13:05:18.000000000 +0900 +++ cairo-dock-3.0.0/debian/copyright 2012-11-27 12:15:55.000000000 +0900 @@ -37,12 +37,12 @@ Files: po/* Copyright: 2007, 2008 Cairo-Dock project -Copyright: 2009, 2010 Rosetta Contributors and Canonical Ltd + 2009, 2010 Rosetta Contributors and Canonical Ltd License: GPL-3+ Files: debian/* Copyright: 2009, 2010, 2011 Nobuhiro Iwamatsu <iwama...@debian.org> -Copyright: 2009, 2010, 2011 Youhei SASAKI <uwab...@gfd-dennou.org> + 2009, 2010, 2011 Youhei SASAKI <uwab...@gfd-dennou.org> License: GPL-3+ License: GPL-3+ diff -Nru cairo-dock-3.0.0/debian/patches/0001-Main-GUI-fixed-a-crash-when-hovering-group-buttons-t.patch cairo-dock-3.0.0/debian/patches/0001-Main-GUI-fixed-a-crash-when-hovering-group-buttons-t.patch --- cairo-dock-3.0.0/debian/patches/0001-Main-GUI-fixed-a-crash-when-hovering-group-buttons-t.patch 1970-01-01 09:00:00.000000000 +0900 +++ cairo-dock-3.0.0/debian/patches/0001-Main-GUI-fixed-a-crash-when-hovering-group-buttons-t.patch 2012-11-27 12:15:55.000000000 +0900 @@ -0,0 +1,47 @@ +Description: Main GUI: fixed a crash when hovering group buttons too quickly (the dialog was not correctly destroyed) +Forwarded: not-needed +rigin: upstream, http://bazaar.launchpad.net/~cairo-dock-team/cairo-dock-core/cairo-dock/revision/1100 +Bug-Debian: http://bugs.debian.org/676841 + +--- + src/cairo-dock-gui-main.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/cairo-dock-gui-main.c b/src/cairo-dock-gui-main.c +index 1983329..52ba76a 100644 +--- a/src/cairo-dock-gui-main.c ++++ b/src/cairo-dock-gui-main.c +@@ -28,6 +28,7 @@ + #include <gdk/gdkx.h> + + #include "config.h" ++#include "cairo-dock-notifications.h" + #include "cairo-dock-module-factory.h" + #include "cairo-dock-icon-facility.h" + #include "cairo-dock-log.h" +@@ -888,10 +889,12 @@ static gboolean _show_group_dialog (CairoDockGroupDescription *pGroupDescription + attr.cText = dgettext (pGroupDescription->cGettextDomain, cDescription != NULL ? cDescription : pGroupDescription->cDescription); + attr.cImageFilePath = pGroupDescription->cIcon; + attr.bNoInput = TRUE; +- attr.pFreeDataFunc = _on_group_dialog_destroyed; + myDialogsParam.dialogTextDescription.bUseMarkup = TRUE; + s_pDialog = cairo_dock_build_dialog (&attr, pIcon, CAIRO_CONTAINER (pDock)); + myDialogsParam.dialogTextDescription.bUseMarkup = FALSE; ++ cairo_dock_register_notification_on_object (s_pDialog, ++ NOTIFICATION_DESTROY, (CairoDockNotificationFunc)_on_group_dialog_destroyed, ++ CAIRO_DOCK_RUN_AFTER, NULL); + + gtk_window_set_transient_for (GTK_WINDOW (s_pDialog->container.pWidget), GTK_WINDOW (s_pMainWindow)); + g_free (cDescription); +@@ -932,7 +935,7 @@ static gboolean _check_group_button (gpointer data) + if (Xid != cairo_dock_get_current_active_window ()) // we're not the active window any more, so the 'leave' event was probably due to an Alt+Tab -> the mouse is really out of the button. + { + gtk_widget_hide (s_pPreviewBox); +- ++ + cairo_dock_dialog_unreference (s_pDialog); + + s_pCurrentButton = NULL; +-- +1.7.10.4 + diff -Nru cairo-dock-3.0.0/debian/patches/0001-main-GUI-fix-a-case-where-the-description-dialog-pre.patch cairo-dock-3.0.0/debian/patches/0001-main-GUI-fix-a-case-where-the-description-dialog-pre.patch --- cairo-dock-3.0.0/debian/patches/0001-main-GUI-fix-a-case-where-the-description-dialog-pre.patch 1970-01-01 09:00:00.000000000 +0900 +++ cairo-dock-3.0.0/debian/patches/0001-main-GUI-fix-a-case-where-the-description-dialog-pre.patch 2012-11-27 12:15:55.000000000 +0900 @@ -0,0 +1,192 @@ +Description: main GUI: fix a case where the description dialog&preview didn't appear when hovering the button +Forwarded: not-needed +rigin: upstream, http://bazaar.launchpad.net/~cairo-dock-team/cairo-dock-core/cairo-dock/revision/1085 +Bug-Debian: http://bugs.debian.org/676841 + +--- + src/cairo-dock-gui-main.c | 101 ++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 82 insertions(+), 19 deletions(-) + +diff --git a/src/cairo-dock-gui-main.c b/src/cairo-dock-gui-main.c +index 50b02f3..1983329 100644 +--- a/src/cairo-dock-gui-main.c ++++ b/src/cairo-dock-gui-main.c +@@ -24,6 +24,9 @@ + #include <glib/gstdio.h> + #include <glib/gi18n.h> + ++ ++#include <gdk/gdkx.h> ++ + #include "config.h" + #include "cairo-dock-module-factory.h" + #include "cairo-dock-icon-facility.h" +@@ -123,7 +126,8 @@ static GtkWidget *s_pStatusBar = NULL; + static GSList *s_path = NULL; + static int s_iPreviewWidth, s_iNbButtonsByRow; + static CairoDialog *s_pDialog = NULL; +-static int s_iSidShowGroupDialog = 0; ++static guint s_iSidShowGroupDialog = 0; ++static guint s_iSidCheckGroupButton = 0; + + static const gchar *s_cCategoriesDescription[2*(CAIRO_DOCK_NB_CATEGORY+1)] = { + N_("Behaviour"), "icon-behavior.svg", +@@ -803,6 +807,10 @@ static void on_click_back_button (GtkButton *button, gpointer data) + _show_group_or_category (pPrevPlace); + } + ++static void _on_group_dialog_destroyed (gpointer data) ++{ ++ s_pDialog = NULL; ++} + static gboolean _show_group_dialog (CairoDockGroupDescription *pGroupDescription) + { + gchar *cDescription = NULL; +@@ -869,9 +877,7 @@ static gboolean _show_group_dialog (CairoDockGroupDescription *pGroupDescription + gdk_pixbuf_unref (pPreviewPixbuf); + } + +- if (s_pDialog != NULL) +- if (! cairo_dock_dialog_unreference (s_pDialog)) +- cairo_dock_dialog_unreference (s_pDialog); ++ cairo_dock_dialog_unreference (s_pDialog); + Icon *pIcon = cairo_dock_get_current_active_icon (); + if (pIcon == NULL || pIcon->cParentDockName == NULL || cairo_dock_icon_is_being_removed (pIcon)) + pIcon = cairo_dock_get_dialogless_icon (); +@@ -882,45 +888,96 @@ static gboolean _show_group_dialog (CairoDockGroupDescription *pGroupDescription + attr.cText = dgettext (pGroupDescription->cGettextDomain, cDescription != NULL ? cDescription : pGroupDescription->cDescription); + attr.cImageFilePath = pGroupDescription->cIcon; + attr.bNoInput = TRUE; ++ attr.pFreeDataFunc = _on_group_dialog_destroyed; + myDialogsParam.dialogTextDescription.bUseMarkup = TRUE; + s_pDialog = cairo_dock_build_dialog (&attr, pIcon, CAIRO_CONTAINER (pDock)); + myDialogsParam.dialogTextDescription.bUseMarkup = FALSE; + +- cairo_dock_dialog_reference (s_pDialog); +- + gtk_window_set_transient_for (GTK_WINDOW (s_pDialog->container.pWidget), GTK_WINDOW (s_pMainWindow)); + g_free (cDescription); + + s_iSidShowGroupDialog = 0; + return FALSE; + } +-static void on_enter_group_button (GtkButton *button, CairoDockGroupDescription *pGroupDescription) ++ ++static GtkButton *s_pCurrentButton = NULL; ++static gboolean on_enter_group_button (GtkButton *button, GdkEventCrossing *pEvent, CairoDockGroupDescription *pGroupDescription) + { +- //g_print ("%s (%s)\n", __func__, pGroupDescription->cDescription); ++ g_print ("%s (%s)\n", __func__, pGroupDescription->cGroupName); + if (g_pPrimaryContainer == NULL) // inutile en maintenance, le dialogue risque d'apparaitre sur la souris. +- return ; ++ return FALSE; + ++ // if we were about to show a dialog, cancel it to reset the timer. + if (s_iSidShowGroupDialog != 0) + g_source_remove (s_iSidShowGroupDialog); + ++ if (s_iSidCheckGroupButton != 0) ++ { ++ g_source_remove (s_iSidCheckGroupButton); ++ s_iSidCheckGroupButton = 0; ++ } ++ ++ // avoid re-entering the same button (can happen if the input shape of the dialog is set a bit late by X, and the dialog spawns under the cursor, which will make us leave the button and re-enter when the input shape is ready). ++ if (s_pCurrentButton == button) ++ return FALSE; ++ s_pCurrentButton = button; // we don't actually use the content of the pointer, only the address value. ++ ++ // show the dialog with a delay. + s_iSidShowGroupDialog = g_timeout_add (330, (GSourceFunc)_show_group_dialog, (gpointer) pGroupDescription); ++ return FALSE; + } +-static void on_leave_group_button (GtkButton *button, gpointer *data) ++static gboolean _check_group_button (gpointer data) + { +- //g_print ("%s ()\n", __func__); ++ Window Xid = GDK_WINDOW_XID (gtk_widget_get_window (s_pMainWindow)); ++ if (Xid != cairo_dock_get_current_active_window ()) // we're not the active window any more, so the 'leave' event was probably due to an Alt+Tab -> the mouse is really out of the button. ++ { ++ gtk_widget_hide (s_pPreviewBox); ++ ++ cairo_dock_dialog_unreference (s_pDialog); ++ ++ s_pCurrentButton = NULL; ++ } ++ s_iSidCheckGroupButton = 0; ++ return FALSE; ++} ++static gboolean on_leave_group_button (GtkButton *button, GdkEventCrossing *pEvent, gpointer data) ++{ ++ g_print ("%s (%d, %d)\n", __func__, pEvent->mode, pEvent->detail); ++ // if we were about to show the dialog, cancel. + if (s_iSidShowGroupDialog != 0) + { + g_source_remove (s_iSidShowGroupDialog); + s_iSidShowGroupDialog = 0; + } +- +- int iPreviewWidgetWidth = s_iPreviewWidth; +- GtkWidget *pPreviewImage = s_pPreviewImage; ++ ++ if (s_iSidCheckGroupButton != 0) ++ { ++ g_source_remove (s_iSidCheckGroupButton); ++ s_iSidCheckGroupButton = 0; ++ } ++ ++ // check that we are really outside of the button (this may be false if the dialog is appearing under the mouse and has not yet its input shape (X lag)). ++ if (pEvent->detail != GDK_NOTIFY_ANCESTOR) // a LeaveNotify event not within the same window (ie, either an Alt+Tab or the dialog that spawned under the cursor) ++ { ++ int x, y; ++ gtk_widget_get_pointer (GTK_WIDGET (button), &x, &y); ++ GtkAllocation allocation; ++ gtk_widget_get_allocation (GTK_WIDGET (button), &allocation); ++ if (x >= 0 && x < allocation.width && y >= 0 && y < allocation.height) // we are actually still inside the button, ignore the event, we'll get an 'enter' event as soon as the dialog's input shape is ready. ++ { ++ s_iSidCheckGroupButton = g_timeout_add (1000, _check_group_button, NULL); // check in a moment if we left the button because of the dialog or because of another window (alt+tab). ++ return FALSE; ++ } ++ } ++ ++ // hide the dialog and the preview box. + gtk_widget_hide (s_pPreviewBox); + +- if (! cairo_dock_dialog_unreference (s_pDialog)) +- cairo_dock_dialog_unreference (s_pDialog); +- s_pDialog = NULL; ++ cairo_dock_dialog_unreference (s_pDialog); ++ ++ s_pCurrentButton = NULL; ++ ++ return FALSE; + } + + +@@ -986,6 +1043,12 @@ static gboolean on_delete_main_gui (GtkWidget *pWidget, gpointer data) + g_source_remove (s_iSidShowGroupDialog); + s_iSidShowGroupDialog = 0; + } ++ cairo_dock_dialog_unreference (s_pDialog); ++ if (s_iSidCheckGroupButton != 0) ++ { ++ g_source_remove (s_iSidCheckGroupButton); ++ s_iSidCheckGroupButton = 0; ++ } + return FALSE; + } + +@@ -1364,8 +1427,8 @@ static inline CairoDockGroupDescription *_add_group_button (const gchar *cGroupN + g_signal_connect (G_OBJECT (pGroupButton), "clicked", G_CALLBACK(on_click_group_button), pGroupDescription); + else + gtk_widget_set_sensitive (pGroupButton, FALSE); +- g_signal_connect (G_OBJECT (pGroupButton), "enter", G_CALLBACK(on_enter_group_button), pGroupDescription); +- g_signal_connect (G_OBJECT (pGroupButton), "leave", G_CALLBACK(on_leave_group_button), NULL); ++ g_signal_connect (G_OBJECT (pGroupButton), "enter-notify-event", G_CALLBACK(on_enter_group_button), pGroupDescription); ++ g_signal_connect (G_OBJECT (pGroupButton), "leave-notify-event", G_CALLBACK(on_leave_group_button), NULL); + + GtkWidget *pButtonHBox = _gtk_hbox_new (CAIRO_DOCK_FRAME_MARGIN); + GtkWidget *pImage = _make_image (cIconPath, CAIRO_DOCK_GROUP_ICON_SIZE); +-- +1.7.10.4 + diff -Nru cairo-dock-3.0.0/debian/patches/series cairo-dock-3.0.0/debian/patches/series --- cairo-dock-3.0.0/debian/patches/series 2012-04-13 20:04:14.000000000 +0900 +++ cairo-dock-3.0.0/debian/patches/series 2012-11-27 12:15:55.000000000 +0900 @@ -1 +1,3 @@ 0001-Fix-GLIB-Single-Include-issue-Closes-665514.patch +0001-main-GUI-fix-a-case-where-the-description-dialog-pre.patch +0001-Main-GUI-fixed-a-crash-when-hovering-group-buttons-t.patch diff -Nru cairo-dock-3.0.0/debian/rules cairo-dock-3.0.0/debian/rules --- cairo-dock-3.0.0/debian/rules 2011-07-05 21:46:15.000000000 +0900 +++ cairo-dock-3.0.0/debian/rules 2012-11-27 12:15:55.000000000 +0900 @@ -1,5 +1,10 @@ #!/usr/bin/make -f +DPKG_EXPORT_BUILDFLAGS = 1 +include /usr/share/dpkg/buildflags.mk +CFLAGS+=$(CPPFLAGS) +CXXFLAGS+=$(CPPFLAGS) + include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/cmake.mk include /usr/share/cdbs/1/rules/patchsys-quilt.mk