gtk3/debian/patches/043_notebook_scroll.patch
Sjoerd Simons ce61c8b596 * New upstream release
* Sync with ubuntu:
  * debian/rules: Make test failures fatal again
  * debian/libgtk-3-0.symbols: Updated
  * debian/rules: Update build-depends
  * debian/libgtk-3-bin.install: Add gtk-launch: A new commandline utility
    to launch an application from its desktop file
  * Add autopkgtest support
* debian/patches/072_statusicon_icon_size.patch:
  * Removed merged upstream
* debian/patches/074_try-harder-to-discriminate-Shift-F10-and-F10.patch:
  * Removed, fixed upstream
* debian/patches/073_transparent_colors.patch
  * Removed, fixed upstream
* debian/control.in: bump glib2.0 build-dep to >= 2.33.14 to trump the dodgy
  version in unstable
2012-09-23 21:06:40 +00:00

212 lines
7.6 KiB
Diff

Reverts ad48f4d52bbac6139dd829fcc421ad16441f34d2
Add back the feature but in a different way:
* requires the Alt modifier
* works from the whole area
See GNOME #630226 and #145244
Index: gtk+-3.2.2/gtk/gtkcalendar.c
===================================================================
--- gtk+-3.2.2.orig/gtk/gtkcalendar.c 2011-11-07 19:47:34.000000000 +0100
+++ gtk+-3.2.2/gtk/gtkcalendar.c 2011-11-13 02:59:34.922905814 +0100
@@ -3161,6 +3161,10 @@
{
GtkCalendar *calendar = GTK_CALENDAR (widget);
+ /* Ignore Alt-scroll to allow it to be taken by GtkNotebook */
+ if (event->state & GDK_MOD1_MASK)
+ return FALSE;
+
if (event->direction == GDK_SCROLL_UP)
{
if (!gtk_widget_has_focus (widget))
Index: gtk+-3.2.2/gtk/gtkcombobox.c
===================================================================
--- gtk+-3.2.2.orig/gtk/gtkcombobox.c 2011-11-11 23:39:31.000000000 +0100
+++ gtk+-3.2.2/gtk/gtkcombobox.c 2011-11-13 02:59:34.926905815 +0100
@@ -3002,6 +3002,10 @@
GtkTreeIter iter;
GtkTreeIter new_iter;
+ /* Ignore Alt-scroll to allow it to be taken by GtkNotebook */
+ if (event->state & GDK_MOD1_MASK)
+ return FALSE;
+
if (!gtk_combo_box_get_active_iter (combo_box, &iter))
return TRUE;
Index: gtk+-3.2.2/gtk/gtkmenu.c
===================================================================
--- gtk+-3.2.2.orig/gtk/gtkmenu.c 2011-11-11 23:39:31.000000000 +0100
+++ gtk+-3.2.2/gtk/gtkmenu.c 2011-11-13 02:59:34.930905815 +0100
@@ -3954,6 +3954,10 @@
{
GtkMenu *menu = GTK_MENU (widget);
+ /* Ignore Alt-scroll to allow it to be taken by GtkNotebook */
+ if (event->state & GDK_MOD1_MASK)
+ return FALSE;
+
switch (event->direction)
{
case GDK_SCROLL_RIGHT:
Index: gtk+-3.2.2/gtk/gtknotebook.c
===================================================================
--- gtk+-3.2.2.orig/gtk/gtknotebook.c 2011-11-12 03:52:24.000000000 +0100
+++ gtk+-3.2.2/gtk/gtknotebook.c 2011-11-13 02:59:34.934905815 +0100
@@ -345,6 +345,8 @@
GtkAllocation *allocation);
static gint gtk_notebook_draw (GtkWidget *widget,
cairo_t *cr);
+static gboolean gtk_notebook_scroll (GtkWidget *widget,
+ GdkEventScroll *event);
static gint gtk_notebook_button_press (GtkWidget *widget,
GdkEventButton *event);
static gint gtk_notebook_button_release (GtkWidget *widget,
@@ -648,6 +650,7 @@
widget_class->get_preferred_height_for_width = gtk_notebook_get_preferred_height_for_width;
widget_class->size_allocate = gtk_notebook_size_allocate;
widget_class->draw = gtk_notebook_draw;
+ widget_class->scroll_event = gtk_notebook_scroll;
widget_class->button_press_event = gtk_notebook_button_press;
widget_class->button_release_event = gtk_notebook_button_release;
widget_class->popup_menu = gtk_notebook_popup_menu;
@@ -1887,7 +1890,8 @@
attributes.event_mask = gtk_widget_get_events (widget);
attributes.event_mask |= (GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK |
- GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK);
+ GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK |
+ GDK_SCROLL_MASK);
attributes_mask = GDK_WA_X | GDK_WA_Y;
priv->event_window = gdk_window_new (gtk_widget_get_parent_window (widget),
@@ -2810,6 +2814,38 @@
return FALSE;
}
+static gboolean
+gtk_notebook_scroll (GtkWidget *widget,
+ GdkEventScroll *event)
+{
+ GtkNotebook *notebook = GTK_NOTEBOOK (widget);
+ GtkNotebookPrivate *priv = notebook->priv;
+ gint i;
+
+ if (!priv->cur_page)
+ return FALSE;
+
+ /* Only actually scroll when Mod1 is pressed.
+ This allows us to scroll from the page contents
+ or the action area too */
+ if (!(event->state & GDK_MOD1_MASK))
+ return FALSE;
+
+ switch (event->direction)
+ {
+ case GDK_SCROLL_RIGHT:
+ case GDK_SCROLL_DOWN:
+ gtk_notebook_next_page (notebook);
+ break;
+ case GDK_SCROLL_LEFT:
+ case GDK_SCROLL_UP:
+ gtk_notebook_prev_page (notebook);
+ break;
+ }
+
+ return TRUE;
+}
+
static GList*
get_tab_at_pos (GtkNotebook *notebook, gint x, gint y)
{
Index: gtk+-3.2.2/gtk/gtkpathbar.c
===================================================================
--- gtk+-3.2.2.orig/gtk/gtkpathbar.c 2011-11-07 19:47:35.000000000 +0100
+++ gtk+-3.2.2/gtk/gtkpathbar.c 2011-11-13 02:59:34.938905813 +0100
@@ -757,6 +757,10 @@
gtk_path_bar_scroll (GtkWidget *widget,
GdkEventScroll *event)
{
+ /* Ignore Alt-scroll to allow it to be taken by GtkNotebook */
+ if (event->state & GDK_MOD1_MASK)
+ return FALSE;
+
switch (event->direction)
{
case GDK_SCROLL_RIGHT:
Index: gtk+-3.2.2/gtk/gtkrange.c
===================================================================
--- gtk+-3.2.2.orig/gtk/gtkrange.c 2011-11-11 23:39:31.000000000 +0100
+++ gtk+-3.2.2/gtk/gtkrange.c 2011-11-13 02:59:34.938905813 +0100
@@ -2748,6 +2748,10 @@
GtkRange *range = GTK_RANGE (widget);
GtkRangePrivate *priv = range->priv;
+ /* Ignore Alt-scroll to allow it to be taken by GtkNotebook */
+ if (event->state & GDK_MOD1_MASK)
+ return FALSE;
+
if (gtk_widget_get_realized (widget))
{
gdouble delta;
Index: gtk+-3.2.2/gtk/gtkscalebutton.c
===================================================================
--- gtk+-3.2.2.orig/gtk/gtkscalebutton.c 2011-11-11 23:39:31.000000000 +0100
+++ gtk+-3.2.2/gtk/gtkscalebutton.c 2011-11-13 02:59:34.942905810 +0100
@@ -848,6 +848,10 @@
if (event->type != GDK_SCROLL)
return FALSE;
+ /* Ignore Alt-scroll to allow it to be taken by GtkNotebook */
+ if (event->state & GDK_MOD1_MASK)
+ return FALSE;
+
d = gtk_scale_button_get_value (button);
if (event->direction == GDK_SCROLL_UP)
{
Index: gtk+-3.2.2/gtk/gtkscrolledwindow.c
===================================================================
--- gtk+-3.2.2.orig/gtk/gtkscrolledwindow.c 2011-11-11 23:39:31.000000000 +0100
+++ gtk+-3.2.2/gtk/gtkscrolledwindow.c 2011-11-13 02:59:34.942905810 +0100
@@ -1852,6 +1852,10 @@
scrolled_window = GTK_SCROLLED_WINDOW (widget);
priv = scrolled_window->priv;
+ /* Ignore Alt-scroll to allow it to be taken by GtkNotebook */
+ if (event->state & GDK_MOD1_MASK)
+ return FALSE;
+
if (event->direction == GDK_SCROLL_UP || event->direction == GDK_SCROLL_DOWN)
range = priv->vscrollbar;
else
Index: gtk+-3.2.2/gtk/gtkspinbutton.c
===================================================================
--- gtk+-3.2.2.orig/gtk/gtkspinbutton.c 2011-11-11 23:39:31.000000000 +0100
+++ gtk+-3.2.2/gtk/gtkspinbutton.c 2011-11-13 02:59:34.946905809 +0100
@@ -1181,6 +1181,10 @@
GtkSpinButton *spin = GTK_SPIN_BUTTON (widget);
GtkSpinButtonPrivate *priv = spin->priv;
+ /* Ignore Alt-scroll to allow it to be taken by GtkNotebook */
+ if (event->state & GDK_MOD1_MASK)
+ return FALSE;
+
if (event->direction == GDK_SCROLL_UP)
{
if (!gtk_widget_has_focus (widget))
Index: gtk+-3.2.2/gtk/gtktreeview.c
===================================================================
--- gtk+-3.2.2.orig/gtk/gtktreeview.c 2011-11-13 02:59:31.902905921 +0100
+++ gtk+-3.2.2/gtk/gtktreeview.c 2011-11-13 02:59:34.950905810 +0100
@@ -15106,6 +15106,10 @@
{
gboolean retval = FALSE;
+ /* Ignore Alt-scroll to allow it to be taken by GtkNotebook */
+ if (event->state & GDK_MOD1_MASK)
+ return FALSE;
+
if (event->direction == GDK_SCROLL_UP)
{
gtk_tree_view_search_move (widget, tree_view, TRUE);