diff -Nru gtk+3.0-3.12.2/debian/changelog gtk+3.0-3.12.2/debian/changelog --- gtk+3.0-3.12.2/debian/changelog 2014-11-03 16:20:24.000000000 +0000 +++ gtk+3.0-3.12.2/debian/changelog 2014-11-05 22:09:05.000000000 +0000 @@ -1,3 +1,10 @@ +gtk+3.0 (3.12.2-0ubuntu15.2) utopic; urgency=medium + + * debian/patches/mir-backend.patch: + - Fix touch events not generating GDK events (LP: #1388875) + + -- Robert Ancell Thu, 06 Nov 2014 09:51:49 +1300 + gtk+3.0 (3.12.2-0ubuntu15.1) utopic; urgency=medium * debian/patches/git_popover_position.patch, diff -Nru gtk+3.0-3.12.2/debian/patches/mir-backend.patch gtk+3.0-3.12.2/debian/patches/mir-backend.patch --- gtk+3.0-3.12.2/debian/patches/mir-backend.patch 2014-11-03 16:20:24.000000000 +0000 +++ gtk+3.0-3.12.2/debian/patches/mir-backend.patch 2014-11-05 22:09:05.000000000 +0000 @@ -1,7 +1,7 @@ -diff --git a/Makefile.am b/Makefile.am -index 4da3fd0..c111d93 100644 ---- a/Makefile.am -+++ b/Makefile.am +Index: gtk+3.0-3.12.2/Makefile.am +=================================================================== +--- gtk+3.0-3.12.2.orig/Makefile.am ++++ gtk+3.0-3.12.2/Makefile.am @@ -33,11 +33,11 @@ MAINTAINERCLEANFILES = \ @@ -31,10 +31,10 @@ gail-3.0.pc \ config.lt -diff --git a/configure.ac b/configure.ac -index fbc264f..ecc194b 100644 ---- a/configure.ac -+++ b/configure.ac +Index: gtk+3.0-3.12.2/configure.ac +=================================================================== +--- gtk+3.0-3.12.2.orig/configure.ac ++++ gtk+3.0-3.12.2/configure.ac @@ -322,6 +322,10 @@ AC_ARG_ENABLE(wayland-backend, [AS_HELP_STRING([--enable-wayland-backend], [enable the wayland gdk backend])], @@ -111,10 +111,10 @@ gdk/gdkversionmacros.h gtk/Makefile gtk/makefile.msc -diff --git a/docs/reference/gtk/Makefile.am b/docs/reference/gtk/Makefile.am -index d5e0c32..94a6443 100644 ---- a/docs/reference/gtk/Makefile.am -+++ b/docs/reference/gtk/Makefile.am +Index: gtk+3.0-3.12.2/docs/reference/gtk/Makefile.am +=================================================================== +--- gtk+3.0-3.12.2.orig/docs/reference/gtk/Makefile.am ++++ gtk+3.0-3.12.2/docs/reference/gtk/Makefile.am @@ -145,6 +145,7 @@ content_files = \ osx.sgml \ broadway.xml \ @@ -123,10 +123,10 @@ question_index.sgml \ resources.sgml \ text_widget.sgml \ -diff --git a/docs/reference/gtk/building.sgml b/docs/reference/gtk/building.sgml -index a945982..c7787a4 100644 ---- a/docs/reference/gtk/building.sgml -+++ b/docs/reference/gtk/building.sgml +Index: gtk+3.0-3.12.2/docs/reference/gtk/building.sgml +=================================================================== +--- gtk+3.0-3.12.2.orig/docs/reference/gtk/building.sgml ++++ gtk+3.0-3.12.2/docs/reference/gtk/building.sgml @@ -395,6 +395,11 @@ How to compile GTK+ itself @@ -152,10 +152,10 @@ Enables specific backends for GDK. If none of these options -diff --git a/docs/reference/gtk/gtk-docs.sgml b/docs/reference/gtk/gtk-docs.sgml -index a33797d..ae27cf2 100644 ---- a/docs/reference/gtk/gtk-docs.sgml -+++ b/docs/reference/gtk/gtk-docs.sgml +Index: gtk+3.0-3.12.2/docs/reference/gtk/gtk-docs.sgml +=================================================================== +--- gtk+3.0-3.12.2.orig/docs/reference/gtk/gtk-docs.sgml ++++ gtk+3.0-3.12.2/docs/reference/gtk/gtk-docs.sgml @@ -394,6 +394,7 @@ @@ -164,11 +164,10 @@ -diff --git a/docs/reference/gtk/mir.xml b/docs/reference/gtk/mir.xml -new file mode 100644 -index 0000000..3a0a52e +Index: gtk+3.0-3.12.2/docs/reference/gtk/mir.xml +=================================================================== --- /dev/null -+++ b/docs/reference/gtk/mir.xml ++++ gtk+3.0-3.12.2/docs/reference/gtk/mir.xml @@ -0,0 +1,35 @@ + + + + -diff --git a/docs/reference/gtk/running.sgml b/docs/reference/gtk/running.sgml -index 05f0510..cade9c9 100644 ---- a/docs/reference/gtk/running.sgml -+++ b/docs/reference/gtk/running.sgml +Index: gtk+3.0-3.12.2/docs/reference/gtk/running.sgml +=================================================================== +--- gtk+3.0-3.12.2.orig/docs/reference/gtk/running.sgml ++++ gtk+3.0-3.12.2/docs/reference/gtk/running.sgml @@ -474,6 +474,11 @@ nevertheless. Selects the Wayland backend for connecting to Wayland display servers @@ -221,10 +220,10 @@ Since 3.10, this environment variable can contain a comma-separated list of backend names, which are tried in order. The list may also contain -diff --git a/gdk/Makefile.am b/gdk/Makefile.am -index ed4540c..1102f4f 100644 ---- a/gdk/Makefile.am -+++ b/gdk/Makefile.am +Index: gtk+3.0-3.12.2/gdk/Makefile.am +=================================================================== +--- gtk+3.0-3.12.2.orig/gdk/Makefile.am ++++ gtk+3.0-3.12.2/gdk/Makefile.am @@ -13,7 +13,7 @@ INTROSPECTION_COMPILER_ARGS = \ SUBDIRS = $(GDK_BACKENDS) . @@ -245,10 +244,10 @@ if HAVE_INTROSPECTION introspection_files = \ -diff --git a/gdk/gdkdisplaymanager.c b/gdk/gdkdisplaymanager.c -index 6163006..2d9f9b5 100644 ---- a/gdk/gdkdisplaymanager.c -+++ b/gdk/gdkdisplaymanager.c +Index: gtk+3.0-3.12.2/gdk/gdkdisplaymanager.c +=================================================================== +--- gtk+3.0-3.12.2.orig/gdk/gdkdisplaymanager.c ++++ gtk+3.0-3.12.2/gdk/gdkdisplaymanager.c @@ -60,6 +60,10 @@ #include "wayland/gdkprivate-wayland.h" #endif @@ -270,11 +269,10 @@ #ifdef GDK_WINDOWING_BROADWAY { "broadway", _gdk_broadway_display_open }, #endif -diff --git a/gdk/mir/Makefile.am b/gdk/mir/Makefile.am -new file mode 100644 -index 0000000..026ce79 +Index: gtk+3.0-3.12.2/gdk/mir/Makefile.am +=================================================================== --- /dev/null -+++ b/gdk/mir/Makefile.am ++++ gtk+3.0-3.12.2/gdk/mir/Makefile.am @@ -0,0 +1,39 @@ +## Process this file with automake to produce Makefile.in +include $(top_srcdir)/Makefile.decl @@ -315,11 +313,10 @@ + gdkmir.h + +-include $(top_srcdir)/git.mk -diff --git a/gdk/mir/gdkmir-debug.c b/gdk/mir/gdkmir-debug.c -new file mode 100644 -index 0000000..ef57eff +Index: gtk+3.0-3.12.2/gdk/mir/gdkmir-debug.c +=================================================================== --- /dev/null -+++ b/gdk/mir/gdkmir-debug.c ++++ gtk+3.0-3.12.2/gdk/mir/gdkmir-debug.c @@ -0,0 +1,293 @@ +/* + * Copyright © 2014 Canonical Ltd @@ -614,11 +611,10 @@ + break; + } +} -diff --git a/gdk/mir/gdkmir-private.h b/gdk/mir/gdkmir-private.h -new file mode 100644 -index 0000000..89a2b40 +Index: gtk+3.0-3.12.2/gdk/mir/gdkmir-private.h +=================================================================== --- /dev/null -+++ b/gdk/mir/gdkmir-private.h ++++ gtk+3.0-3.12.2/gdk/mir/gdkmir-private.h @@ -0,0 +1,86 @@ +/* + * Copyright © 2014 Canonical Ltd @@ -706,11 +702,10 @@ +void _gdk_mir_print_event (const MirEvent *event); + +#endif /* __GDK_PRIVATE_MIR_H__ */ -diff --git a/gdk/mir/gdkmir.h b/gdk/mir/gdkmir.h -new file mode 100644 -index 0000000..1ab0a28 +Index: gtk+3.0-3.12.2/gdk/mir/gdkmir.h +=================================================================== --- /dev/null -+++ b/gdk/mir/gdkmir.h ++++ gtk+3.0-3.12.2/gdk/mir/gdkmir.h @@ -0,0 +1,39 @@ +/* + * Copyright © 2014 Canonical Ltd @@ -751,11 +746,10 @@ +GType gdk_mir_window_get_type (void); + +#endif /* __GDK_MIR_H__ */ -diff --git a/gdk/mir/gdkmircursor.c b/gdk/mir/gdkmircursor.c -new file mode 100644 -index 0000000..bdbce5e +Index: gtk+3.0-3.12.2/gdk/mir/gdkmircursor.c +=================================================================== --- /dev/null -+++ b/gdk/mir/gdkmircursor.c ++++ gtk+3.0-3.12.2/gdk/mir/gdkmircursor.c @@ -0,0 +1,73 @@ +/* + * Copyright © 2014 Canonical Ltd @@ -830,11 +824,10 @@ + + cursor_class->get_surface = gdk_mir_cursor_get_surface; +} -diff --git a/gdk/mir/gdkmirdevicemanager.c b/gdk/mir/gdkmirdevicemanager.c -new file mode 100644 -index 0000000..c94f8a3 +Index: gtk+3.0-3.12.2/gdk/mir/gdkmirdevicemanager.c +=================================================================== --- /dev/null -+++ b/gdk/mir/gdkmirdevicemanager.c ++++ gtk+3.0-3.12.2/gdk/mir/gdkmirdevicemanager.c @@ -0,0 +1,120 @@ +/* + * Copyright © 2014 Canonical Ltd @@ -956,11 +949,10 @@ + device_manager_class->get_client_pointer = gdk_mir_device_manager_get_client_pointer; + object_class->constructed = gdk_mir_device_manager_constructed; +} -diff --git a/gdk/mir/gdkmirdisplay.c b/gdk/mir/gdkmirdisplay.c -new file mode 100644 -index 0000000..4e00984 +Index: gtk+3.0-3.12.2/gdk/mir/gdkmirdisplay.c +=================================================================== --- /dev/null -+++ b/gdk/mir/gdkmirdisplay.c ++++ gtk+3.0-3.12.2/gdk/mir/gdkmirdisplay.c @@ -0,0 +1,571 @@ +/* + * Copyright © 2014 Canonical Ltd @@ -1533,11 +1525,10 @@ + display_class->text_property_to_utf8_list = gdk_mir_display_text_property_to_utf8_list; + display_class->utf8_to_string_target = gdk_mir_display_utf8_to_string_target; +} -diff --git a/gdk/mir/gdkmireventsource.c b/gdk/mir/gdkmireventsource.c -new file mode 100644 -index 0000000..7396eba +Index: gtk+3.0-3.12.2/gdk/mir/gdkmireventsource.c +=================================================================== --- /dev/null -+++ b/gdk/mir/gdkmireventsource.c ++++ gtk+3.0-3.12.2/gdk/mir/gdkmireventsource.c @@ -0,0 +1,624 @@ +/* + * Copyright © 2014 Canonical Ltd @@ -1852,7 +1843,7 @@ + case mir_motion_action_up: + event_type = event->action == mir_motion_action_down ? GDK_BUTTON_PRESS : GDK_BUTTON_RELEASE; + changed_button_state = button_state ^ event->button_state; -+ if ((changed_button_state & mir_motion_button_primary) != 0) ++ if (changed_button_state == 0 || (changed_button_state & mir_motion_button_primary) != 0) + generate_button_event (window, event_type, x, y, GDK_BUTTON_PRIMARY, modifier_state); + if ((changed_button_state & mir_motion_button_secondary) != 0) + generate_button_event (window, event_type, x, y, GDK_BUTTON_SECONDARY, modifier_state); @@ -2163,11 +2154,10 @@ + + g_main_context_wakeup (NULL); +} -diff --git a/gdk/mir/gdkmirkeyboard.c b/gdk/mir/gdkmirkeyboard.c -new file mode 100644 -index 0000000..86c0d9f +Index: gtk+3.0-3.12.2/gdk/mir/gdkmirkeyboard.c +=================================================================== --- /dev/null -+++ b/gdk/mir/gdkmirkeyboard.c ++++ gtk+3.0-3.12.2/gdk/mir/gdkmirkeyboard.c @@ -0,0 +1,173 @@ +/* + * Copyright © 2014 Canonical Ltd @@ -2342,11 +2332,10 @@ + device_class->window_at_position = gdk_mir_keyboard_window_at_position; + device_class->select_window_events = gdk_mir_keyboard_select_window_events; +} -diff --git a/gdk/mir/gdkmirkeymap.c b/gdk/mir/gdkmirkeymap.c -new file mode 100644 -index 0000000..3e8c829 +Index: gtk+3.0-3.12.2/gdk/mir/gdkmirkeymap.c +=================================================================== --- /dev/null -+++ b/gdk/mir/gdkmirkeymap.c ++++ gtk+3.0-3.12.2/gdk/mir/gdkmirkeymap.c @@ -0,0 +1,466 @@ +/* + * Copyright © 2014 Canonical Ltd @@ -2814,11 +2803,10 @@ + keymap_class->map_virtual_modifiers = gdk_mir_keymap_map_virtual_modifiers; + keymap_class->get_modifier_state = gdk_mir_keymap_get_modifier_state; +} -diff --git a/gdk/mir/gdkmirpointer.c b/gdk/mir/gdkmirpointer.c -new file mode 100644 -index 0000000..96c7e74 +Index: gtk+3.0-3.12.2/gdk/mir/gdkmirpointer.c +=================================================================== --- /dev/null -+++ b/gdk/mir/gdkmirpointer.c ++++ gtk+3.0-3.12.2/gdk/mir/gdkmirpointer.c @@ -0,0 +1,250 @@ +/* + * Copyright © 2014 Canonical Ltd @@ -3070,11 +3058,10 @@ + device_class->window_at_position = gdk_mir_pointer_window_at_position; + device_class->select_window_events = gdk_mir_pointer_select_window_events; +} -diff --git a/gdk/mir/gdkmirscreen.c b/gdk/mir/gdkmirscreen.c -new file mode 100644 -index 0000000..befc84c +Index: gtk+3.0-3.12.2/gdk/mir/gdkmirscreen.c +=================================================================== --- /dev/null -+++ b/gdk/mir/gdkmirscreen.c ++++ gtk+3.0-3.12.2/gdk/mir/gdkmirscreen.c @@ -0,0 +1,720 @@ +/* + * Copyright © 2014 Canonical Ltd @@ -3796,11 +3783,10 @@ + screen_class->query_visual_types = gdk_mir_screen_query_visual_types; + screen_class->get_monitor_scale_factor = gdk_mir_screen_get_monitor_scale_factor; +} -diff --git a/gdk/mir/gdkmirwindow.c b/gdk/mir/gdkmirwindow.c -new file mode 100644 -index 0000000..03da7e0 +Index: gtk+3.0-3.12.2/gdk/mir/gdkmirwindow.c +=================================================================== --- /dev/null -+++ b/gdk/mir/gdkmirwindow.c ++++ gtk+3.0-3.12.2/gdk/mir/gdkmirwindow.c @@ -0,0 +1,52 @@ +/* + * Copyright © 2014 Canonical Ltd @@ -3854,11 +3840,10 @@ +gdk_mir_window_class_init (GdkMirWindowClass *klass) +{ +} -diff --git a/gdk/mir/gdkmirwindowimpl.c b/gdk/mir/gdkmirwindowimpl.c -new file mode 100644 -index 0000000..bae7c9e +Index: gtk+3.0-3.12.2/gdk/mir/gdkmirwindowimpl.c +=================================================================== --- /dev/null -+++ b/gdk/mir/gdkmirwindowimpl.c ++++ gtk+3.0-3.12.2/gdk/mir/gdkmirwindowimpl.c @@ -0,0 +1,1269 @@ +/* + * Copyright © 2014 Canonical Ltd @@ -5129,10 +5114,10 @@ + impl_class->set_opaque_region = gdk_mir_window_impl_set_opaque_region; + impl_class->set_shadow_width = gdk_mir_window_impl_set_shadow_width; +} -diff --git a/gtk/gtktooltip.c b/gtk/gtktooltip.c -index 919d6ca..b28d791 100644 ---- a/gtk/gtktooltip.c -+++ b/gtk/gtktooltip.c +Index: gtk+3.0-3.12.2/gtk/gtktooltip.c +=================================================================== +--- gtk+3.0-3.12.2.orig/gtk/gtktooltip.c ++++ gtk+3.0-3.12.2/gtk/gtktooltip.c @@ -39,6 +39,9 @@ #ifdef GDK_WINDOWING_WAYLAND #include "wayland/gdkwayland.h" @@ -5143,10 +5128,16 @@ /** -@@ -1237,6 +1240,19 @@ found: - GTK_WINDOW (toplevel)); - } - #endif +@@ -1231,6 +1234,19 @@ found: + { + GtkWidget *toplevel; + ++ toplevel = gtk_widget_get_toplevel (tooltip->tooltip_widget); ++ if (GTK_IS_WINDOW (toplevel)) ++ gtk_window_set_transient_for (GTK_WINDOW (tooltip->current_window), ++ GTK_WINDOW (toplevel)); ++ } ++#endif +#ifdef GDK_WINDOWING_MIR + /* Set the transient parent on the tooltip when running with the Mir + * backend to allow correct positioning of the tooltip windows */ @@ -5154,12 +5145,6 @@ + { + GtkWidget *toplevel; + -+ toplevel = gtk_widget_get_toplevel (tooltip->tooltip_widget); -+ if (GTK_IS_WINDOW (toplevel)) -+ gtk_window_set_transient_for (GTK_WINDOW (tooltip->current_window), -+ GTK_WINDOW (toplevel)); -+ } -+#endif - - gtk_window_move (GTK_WINDOW (tooltip->current_window), x, y); - gtk_widget_show (GTK_WIDGET (tooltip->current_window)); + toplevel = gtk_widget_get_toplevel (tooltip->tooltip_widget); + if (GTK_IS_WINDOW (toplevel)) + gtk_window_set_transient_for (GTK_WINDOW (tooltip->current_window),