[Pkg-cairo-dock-devel] Bug#694614: tpu: cairo-dock/3.0.0-3 (pre-approval)
Youhei SASAKI
uwabami at gfd-dennou.org
Wed Nov 28 11:05:58 UTC 2012
Package: release.debian.org
User: release.debian.org at 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 <uwabami at gfd-dennou.org>
<uwabami at debian.or.jp>
GPG fingerprint:
4096/RSA: 66A4 EA70 4FE2 4055 8D6A C2E6 9394 F354 891D 7E07
-------------- next part --------------
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 <iwamatsu at 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 <iwamatsu at debian.org>,
Youhei SASAKI <uwabami at 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 <iwamatsu at debian.org>
-Copyright: 2009, 2010, 2011 Youhei SASAKI <uwabami at gfd-dennou.org>
+ 2009, 2010, 2011 Youhei SASAKI <uwabami at 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
More information about the Pkg-cairo-dock-devel
mailing list