summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Rostovtsev <tetromino@gentoo.org>2012-05-02 06:54:42 +0000
committerAlexandre Rostovtsev <tetromino@gentoo.org>2012-05-02 06:54:42 +0000
commit0dcaa495b84ee7d3ce73bc931dfc601044604008 (patch)
treec1ffedf7ed8b81cc5875198883c1c5993ab54845 /x11-libs/gtk+/files
parentmarked x86 per bug 414163 (diff)
downloadgentoo-2-0dcaa495b84ee7d3ce73bc931dfc601044604008.tar.gz
gentoo-2-0dcaa495b84ee7d3ce73bc931dfc601044604008.tar.bz2
gentoo-2-0dcaa495b84ee7d3ce73bc931dfc601044604008.zip
Fix annotation button in evince (bug #412751, thanks to Geraint Yang). Fix inefficient scrolling.
(Portage version: 2.2.0_alpha101/cvs/Linux x86_64)
Diffstat (limited to 'x11-libs/gtk+/files')
-rw-r--r--x11-libs/gtk+/files/gtk+-3.4.1-extraneous-events-scrolling.patch70
-rw-r--r--x11-libs/gtk+/files/gtk+-3.4.1-toolpalette-adjustment.patch55
-rw-r--r--x11-libs/gtk+/files/gtk+-3.4.1-toolpalette-rename.patch61
3 files changed, 186 insertions, 0 deletions
diff --git a/x11-libs/gtk+/files/gtk+-3.4.1-extraneous-events-scrolling.patch b/x11-libs/gtk+/files/gtk+-3.4.1-extraneous-events-scrolling.patch
new file mode 100644
index 000000000000..ea93d98abfde
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-3.4.1-extraneous-events-scrolling.patch
@@ -0,0 +1,70 @@
+From 37e3722d3a80be13bd8f7a4d3ac8edc923fc2750 Mon Sep 17 00:00:00 2001
+From: Cosimo Cecchi <cosimoc@gnome.org>
+Date: Fri, 20 Apr 2012 17:34:08 -0400
+Subject: [PATCH] xi2: ignore extraneous events for smooth scroll
+
+Since the event will be ignored anyway after it's translated (slave
+devices are disabled), don't let it run in the smooth scroll code path,
+as it will burn our caches for the actual event we're interested in.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=673644
+---
+ gdk/x11/gdkdevicemanager-xi2.c | 23 +++++++++++++++--------
+ 1 files changed, 15 insertions(+), 8 deletions(-)
+
+diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c
+index a34bd09..15f095b 100644
+--- a/gdk/x11/gdkdevicemanager-xi2.c
++++ b/gdk/x11/gdkdevicemanager-xi2.c
+@@ -1305,13 +1305,24 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
+ case XI_Motion:
+ {
+ XIDeviceEvent *xev = (XIDeviceEvent *) ev;
+- GdkDevice *source_device;
++ GdkDevice *source_device, *device;
+ gdouble delta_x, delta_y;
+
+ source_device = g_hash_table_lookup (device_manager->id_table,
+ GUINT_TO_POINTER (xev->sourceid));
++ device = g_hash_table_lookup (device_manager->id_table,
++ GUINT_TO_POINTER (xev->deviceid));
+
+- if (scroll_valuators_changed (GDK_X11_DEVICE_XI2 (source_device),
++ /* When scrolling, X might send events twice here; once with both the
++ * device and the source device set to the physical device, and once
++ * with the device set to the master device.
++ * Since we are only interested in the latter, and
++ * scroll_valuators_changed() updates the valuator cache for the
++ * source device, we need to explicitly ignore the first event in
++ * order to get the correct delta for the second.
++ */
++ if (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_SLAVE &&
++ scroll_valuators_changed (GDK_X11_DEVICE_XI2 (source_device),
+ &xev->valuators, &delta_x, &delta_y))
+ {
+ event->scroll.type = GDK_SCROLL;
+@@ -1333,9 +1344,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
+ event->scroll.delta_x = delta_x;
+ event->scroll.delta_y = delta_y;
+
+- event->scroll.device = g_hash_table_lookup (device_manager->id_table,
+- GUINT_TO_POINTER (xev->deviceid));
+-
++ event->scroll.device = device;
+ gdk_event_set_source_device (event, source_device);
+
+ event->scroll.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
+@@ -1350,9 +1359,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
+ event->motion.x_root = (gdouble) xev->root_x;
+ event->motion.y_root = (gdouble) xev->root_y;
+
+- event->motion.device = g_hash_table_lookup (device_manager->id_table,
+- GINT_TO_POINTER (xev->deviceid));
+-
++ event->motion.device = device;
+ gdk_event_set_source_device (event, source_device);
+
+ event->motion.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
+--
+1.7.8.6
+
diff --git a/x11-libs/gtk+/files/gtk+-3.4.1-toolpalette-adjustment.patch b/x11-libs/gtk+/files/gtk+-3.4.1-toolpalette-adjustment.patch
new file mode 100644
index 000000000000..78b715dc30af
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-3.4.1-toolpalette-adjustment.patch
@@ -0,0 +1,55 @@
+From 67e2e41907add988746f59857ef86d6ea37b8392 Mon Sep 17 00:00:00 2001
+From: Benjamin Otte <otte@redhat.com>
+Date: Fri, 27 Apr 2012 03:33:57 +0200
+Subject: [PATCH] toolpalette: Configure adjustment properly
+
+https://bugzilla.gnome.org/show_bug.cgi?id=673650
+---
+ gtk/gtktoolpalette.c | 17 +++++++----------
+ 1 files changed, 7 insertions(+), 10 deletions(-)
+
+diff --git a/gtk/gtktoolpalette.c b/gtk/gtktoolpalette.c
+index 0dd9b21..0655bff 100644
+--- a/gtk/gtktoolpalette.c
++++ b/gtk/gtktoolpalette.c
+@@ -665,30 +665,27 @@ gtk_tool_palette_size_allocate (GtkWidget *widget,
+ /* update the scrollbar to match the displayed adjustment */
+ if (adjustment)
+ {
+- gdouble value, lower, upper;
++ gdouble lower, upper;
++
++ total_size = MAX (0, total_size);
++ page_size = MIN (total_size, page_size);
+
+ if (GTK_ORIENTATION_VERTICAL == palette->priv->orientation ||
+ GTK_TEXT_DIR_LTR == direction)
+ {
+ lower = 0;
+- upper = MAX (0, total_size);
+-
+- value = MIN (offset, upper - page_size);
+- gtk_adjustment_clamp_page (adjustment, value, offset + page_size);
++ upper = total_size;
+ }
+ else
+ {
+- lower = page_size - MAX (0, total_size);
++ lower = page_size - total_size;
+ upper = page_size;
+
+ offset = -offset;
+-
+- value = MAX (offset, lower);
+- gtk_adjustment_clamp_page (adjustment, offset, value + page_size);
+ }
+
+ gtk_adjustment_configure (adjustment,
+- value,
++ offset,
+ lower,
+ upper,
+ page_size * 0.1,
+--
+1.7.8.6
+
diff --git a/x11-libs/gtk+/files/gtk+-3.4.1-toolpalette-rename.patch b/x11-libs/gtk+/files/gtk+-3.4.1-toolpalette-rename.patch
new file mode 100644
index 000000000000..bdbadc0c263a
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-3.4.1-toolpalette-rename.patch
@@ -0,0 +1,61 @@
+From 27ff5516cce371395c0e8c22ae3e25f91078771c Mon Sep 17 00:00:00 2001
+From: Benjamin Otte <otte@redhat.com>
+Date: Fri, 27 Apr 2012 03:28:22 +0200
+Subject: [PATCH] toolpalette: Rename variable
+
+The variable that holds the total size for all widget allocations
+shouldn't be called page_start.
+---
+ gtk/gtktoolpalette.c | 10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/gtk/gtktoolpalette.c b/gtk/gtktoolpalette.c
+index be6297a..0dd9b21 100644
+--- a/gtk/gtktoolpalette.c
++++ b/gtk/gtktoolpalette.c
+@@ -473,7 +473,7 @@ gtk_tool_palette_size_allocate (GtkWidget *widget,
+ gint remaining_space = 0;
+ gint expand_space = 0;
+
+- gint page_start, page_size = 0;
++ gint total_size, page_size;
+ gint offset = 0;
+ guint i;
+ guint border_width;
+@@ -652,14 +652,14 @@ gtk_tool_palette_size_allocate (GtkWidget *widget,
+ child_allocation.y += border_width;
+ child_allocation.y += offset;
+
+- page_start = child_allocation.y;
++ total_size = child_allocation.y;
+ }
+ else
+ {
+ x += border_width;
+ x += offset;
+
+- page_start = x;
++ total_size = x;
+ }
+
+ /* update the scrollbar to match the displayed adjustment */
+@@ -671,14 +671,14 @@ gtk_tool_palette_size_allocate (GtkWidget *widget,
+ GTK_TEXT_DIR_LTR == direction)
+ {
+ lower = 0;
+- upper = MAX (0, page_start);
++ upper = MAX (0, total_size);
+
+ value = MIN (offset, upper - page_size);
+ gtk_adjustment_clamp_page (adjustment, value, offset + page_size);
+ }
+ else
+ {
+- lower = page_size - MAX (0, page_start);
++ lower = page_size - MAX (0, total_size);
+ upper = page_size;
+
+ offset = -offset;
+--
+1.7.8.6
+