diff options
author | 2012-05-02 06:54:42 +0000 | |
---|---|---|
committer | 2012-05-02 06:54:42 +0000 | |
commit | 0dcaa495b84ee7d3ce73bc931dfc601044604008 (patch) | |
tree | c1ffedf7ed8b81cc5875198883c1c5993ab54845 /x11-libs/gtk+/files | |
parent | marked x86 per bug 414163 (diff) | |
download | gentoo-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')
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 + |