From 61036211eb7699e606330d9bbbd7556d4620bc3c Mon Sep 17 00:00:00 2001 From: gryf Date: Fri, 28 Apr 2017 15:40:07 +0200 Subject: [PATCH] Added fix for pasting PRIMARY selection on GTK3 --- x11-libs/gtk+/Manifest | 6 +- ...gtk+-3.16.2-remove_update-icon-cache.patch | 24 ++ .../gtk+-3.20.09_enable_paste_selection.patch | 207 +++++++++++++++ x11-libs/gtk+/gtk+-3.20.9-r99.ebuild | 236 ++++++++++++++++++ 4 files changed, 472 insertions(+), 1 deletion(-) create mode 100644 x11-libs/gtk+/files/gtk+-3.16.2-remove_update-icon-cache.patch create mode 100644 x11-libs/gtk+/files/gtk+-3.20.09_enable_paste_selection.patch create mode 100644 x11-libs/gtk+/gtk+-3.20.9-r99.ebuild diff --git a/x11-libs/gtk+/Manifest b/x11-libs/gtk+/Manifest index fdb1b3d..996cc8d 100644 --- a/x11-libs/gtk+/Manifest +++ b/x11-libs/gtk+/Manifest @@ -2,5 +2,9 @@ AUX gtk+-2.24.24-out-of-source.patch 1487 SHA256 3492f3c22df40f7e0696098eb689b94 AUX gtk+-2.24.31-fix-gtkentry-beep.patch 1331 SHA256 d12ab8774f248cdec0eee97763735365c9804fce2bdcc022611f93f32e776afa SHA512 a5fe1474a044299dd2a6e3d238cb1afedc363db095c752cbc9d0435794a6a8f9f6260b7eb96eb3a64ae7fe46b9ca275168c6c39358dca28f7f42203f929c935c WHIRLPOOL 9f7300bcfcfb6855b43f53b6d84cb90247b1bb84c41dbcd50d31c8f43c687ac40824c010cd5d83f08cb2cec3ba22353aa148c2abbb721fa72da996ddd75a46c9 AUX gtk+-2.24.31-update-icon-cache.patch 2504 SHA256 aff2bc60ebed09103d3f5d69a095986afeb5fd2c311f82df6c8fd18478258d4f SHA512 c2a55a410019502b0af3fa5152fc372ce8a555bd63b5cf7f9574ebe5058f3b95e21dc5f14b5b8867d52105e4f6ebca3336a59935c3a7269bfd41aa91edadab48 WHIRLPOOL a77b23f47308e06524418eff422545062f67ba9a1cfe5038c1e4bb67c08b2eeabbf22049301c6beef909542a5adb4c3c6fd312402ae25c41eaadbeb25d755a24 AUX gtk+-2.24.31_enable_paste_selection.patch 7677 SHA256 5f2ecda06f95d217c2d895f62d4a8c3f1d59f4b380b0d34c135cea91cd5e402d SHA512 4de343c43ad2d217ff9817410abd563a62a76c3da358859ada6d2b5b61af7ce9442543530f715f35bca969906b6742e5ace8bceea5686488938cae53623f5e00 WHIRLPOOL 230d79e7b857d4e59bdd082ec8076c6fb2144d80e0567dbc3decaac72ffd5d541e4cbc4f347810194fe5bbe3b27a051dcead88724cd1da39b615d1363bd5fc25 +AUX gtk+-3.16.2-remove_update-icon-cache.patch 554 SHA256 8e188fca21a2a9c2118e754dbeb8f4bd8d8808de68bcf3a404a2e56684276388 SHA512 88396ca13baf46e77c37b94da57ac06edd525a1dee66150427866ed5d7a913481dcd0b664d6e98dec0a7d5b551bd49a4c29a712ed6fd2ec0d677ae2da65b468d WHIRLPOOL 23d2097c69b001b75595a9fff761445d3faf7c74f3e4728b8325eeeb971c2cfaedd28e5a53fea6502caacd96bf867842ad861d783c27c5aadb22483b84ab9004 +AUX gtk+-3.20.09_enable_paste_selection.patch 7967 SHA256 005ec7437d9b4689c5bfec1a418f19ba6a5f94147226c622707b5199f54d533d SHA512 a01c1c1848e64f8e11bb7f973eee95120dc65bb52bbcac3538273a4f14da65626034171bb9013b5881160c8c8001a2b8adbe404b0dfd98dbde5328e8f54b6616 WHIRLPOOL 9030b7b8ef909f5524f4243d5b88fab4e91109d020ba120963a8010ad0c099b5c8aa28a2579bb73d704249d1b8ecb6f57685d8917aa43fbc9696b97413f87761 DIST gtk+-2.24.31.tar.xz 12805344 SHA256 68c1922732c7efc08df4656a5366dcc3afdc8791513400dac276009b40954658 SHA512 75b846661308d94b5236e7e1c367deabf57753792ca87e92f9769822dd5ec90e00cd8d5574adcc12162e3702e1ae6dc152278a1d218f9bd9e4d1c8dc1dd520c1 WHIRLPOOL 6f59d444b28910b0f4cd7d0d0bf04f8e442acd945205679c19e5adf7ca3f8e7406d4095e9ff9ca597882eb937a7551e19af63b6597e7b57c0babe5b061f9110e -EBUILD gtk+-2.24.31-r99.ebuild 10243 SHA256 05c7a76af6d84f4975fc140fd84df9abdc85c707e1eee8c12aa2f58e3a5843a9 SHA512 87ea95a5789c4a588ee2d4920e446b3f2fca6c32d52f21526d66a01ac94ba9a8bce9059963285c97d21a0ccc4fae0d2b1aaffd2f7f62590da8d7b1705e5ed673 WHIRLPOOL 29e463d7b61c9e6b1817b0eec32c5899d2d2e72080079fa6910d2db33b8674a5632af08e73ac3382ad5275e75dd24eb9d004bafc20a75ad390dfcae74a048bde +DIST gtk+-3.20.9.tar.xz 17174872 SHA256 83a609ba2f3424b5509e73967c49c67833af466d6f91081b24ee5c64fce6ac17 SHA512 5848403959f76633511009231c80a814cfe24a7ba07c9429704f432191e51b54d3e6621ce5b578f79999f21993920af3a45c8d03dad6ba03af5f9a342b32626e WHIRLPOOL 7964b82dabf72b5d45a34565874ba02e0dda09b0f358f640ca0c602c3c7aa4618432829d047794f5f202424c34c837bbdc31ccb3c5457768e252f048afd30107 +EBUILD gtk+-2.24.31-r99.ebuild 10251 SHA256 13c55ba76012af6cc9773a5bd64c49fd45a8fc6e0a78e599f9ffe9162efa420c SHA512 6b1647fa06e9535435572c34de03dc53551438d39e3edb58adcf203e16f6e94d40fe532c5c4c713595abf9150cdbb48e617d470455640c795b30eaf3932d2761 WHIRLPOOL 5f5f67cf78666bdd0a5021ed818fecf4c454c3c5f152fb0a10fcc149be9dc9870f193dea232834c44486799d0dada83ac4697a9567543c31351a07cc474dd4fe +EBUILD gtk+-3.20.9-r99.ebuild 7200 SHA256 4697f020555cf7e0485708a67699842c1ead1dc16dbc2ae366edbe5de6dc07a0 SHA512 230e920da9ff3f51f90fb1baf7e1dd2b078dedf6ca85a43eb00850424a55b8e8a05698e6b3d3528e94dc456ce09630b0405162f35d9f77699406895c9b5f5b7e WHIRLPOOL e60d7b9fbd4a735b93dd24910771653e8433b16b8eb0eea4d05d690e5828cd84a4882a2e3e13df4934653dfbb10885cc586df75a5d47afecd7441174ce305cf5 diff --git a/x11-libs/gtk+/files/gtk+-3.16.2-remove_update-icon-cache.patch b/x11-libs/gtk+/files/gtk+-3.16.2-remove_update-icon-cache.patch new file mode 100644 index 0000000..b121dd5 --- /dev/null +++ b/x11-libs/gtk+/files/gtk+-3.16.2-remove_update-icon-cache.patch @@ -0,0 +1,24 @@ +From d83443d10381a53637226b937094454951de44c1 Mon Sep 17 00:00:00 2001 +From: Ole Reifschneider +Date: Thu, 16 Apr 2015 23:51:51 +0200 +Subject: [PATCH] Remove update-icon-cache from bin_PROGRAMS + +--- + gtk/Makefile.am | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/gtk/Makefile.am b/gtk/Makefile.am +index 83dfe31..a5afc03 100644 +--- a/gtk/Makefile.am ++++ b/gtk/Makefile.am +@@ -1380,7 +1380,6 @@ endif + # + bin_PROGRAMS = \ + gtk-query-immodules-3.0 \ +- gtk-update-icon-cache \ + gtk-encode-symbolic-svg \ + gtk-launch + +-- +2.0.5 + diff --git a/x11-libs/gtk+/files/gtk+-3.20.09_enable_paste_selection.patch b/x11-libs/gtk+/files/gtk+-3.20.09_enable_paste_selection.patch new file mode 100644 index 0000000..528d10d --- /dev/null +++ b/x11-libs/gtk+/files/gtk+-3.20.09_enable_paste_selection.patch @@ -0,0 +1,207 @@ +diff -ur gtk+-3.20.9/gtk/gtkentry.c gtk+-3.20.9_patched/gtk/gtkentry.c +--- gtk+-3.20.9/gtk/gtkentry.c 2016-08-04 15:43:36.000000000 +0200 ++++ gtk+-3.20.9_patched/gtk/gtkentry.c 2016-10-10 20:50:18.948444805 +0200 +@@ -315,6 +315,7 @@ + CUT_CLIPBOARD, + COPY_CLIPBOARD, + PASTE_CLIPBOARD, ++ PASTE_SELECTION, + TOGGLE_OVERWRITE, + ICON_PRESS, + ICON_RELEASE, +@@ -541,6 +542,8 @@ + static void gtk_entry_cut_clipboard (GtkEntry *entry); + static void gtk_entry_copy_clipboard (GtkEntry *entry); + static void gtk_entry_paste_clipboard (GtkEntry *entry); ++static void gtk_entry_paste_selection (GtkEntry *entry, ++ const gchar *which); + static void gtk_entry_toggle_overwrite (GtkEntry *entry); + static void gtk_entry_select_all (GtkEntry *entry); + static void gtk_entry_real_activate (GtkEntry *entry); +@@ -805,6 +808,7 @@ + class->cut_clipboard = gtk_entry_cut_clipboard; + class->copy_clipboard = gtk_entry_copy_clipboard; + class->paste_clipboard = gtk_entry_paste_clipboard; ++ class->paste_selection = gtk_entry_paste_selection; + class->toggle_overwrite = gtk_entry_toggle_overwrite; + class->activate = gtk_entry_real_activate; + class->get_text_area_size = gtk_entry_get_text_area_size; +@@ -1792,6 +1796,25 @@ + G_TYPE_NONE, 0); + + /** ++ * GtkEntry::paste-selection: ++ * @entry: the object which received the signal ++ * ++ * The ::paste-selection signal is a ++ * keybinding signal ++ * which gets emitted to paste the contents of the given selection ++ * into the entry. ++ */ ++ signals[PASTE_SELECTION] = ++ g_signal_new (I_("paste-selection"), ++ G_OBJECT_CLASS_TYPE (gobject_class), ++ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, ++ G_STRUCT_OFFSET (GtkEntryClass, paste_selection), ++ NULL, NULL, ++ _gtk_marshal_VOID__STRING, ++ G_TYPE_NONE, 1, ++ G_TYPE_STRING); ++ ++ /** + * GtkEntry::toggle-overwrite: + * @entry: the object which received the signal + * +@@ -5871,6 +5894,27 @@ + } + + static void ++gtk_entry_paste_selection (GtkEntry *entry, ++ const gchar *which) ++{ ++ GtkEntryPrivate *priv = entry->priv; ++ ++ if (priv->editable) ++ { ++ if (g_str_equal(which, "primary")) ++ gtk_entry_paste (entry, GDK_SELECTION_PRIMARY); ++ else if (g_str_equal(which, "secondary")) ++ gtk_entry_paste (entry, GDK_SELECTION_SECONDARY); ++ else if (g_str_equal(which, "clipboard")) ++ gtk_entry_paste (entry, GDK_SELECTION_CLIPBOARD); ++ else ++ gtk_widget_error_bell (GTK_WIDGET (entry)); ++ } ++ else ++ gtk_widget_error_bell (GTK_WIDGET (entry)); ++} ++ ++static void + gtk_entry_delete_cb (GtkEntry *entry) + { + GtkEntryPrivate *priv = entry->priv; +diff -ur gtk+-3.20.9/gtk/gtkentry.h gtk+-3.20.9_patched/gtk/gtkentry.h +--- gtk+-3.20.9/gtk/gtkentry.h 2016-03-26 03:46:38.000000000 +0100 ++++ gtk+-3.20.9_patched/gtk/gtkentry.h 2016-10-10 20:51:54.016446963 +0200 +@@ -145,6 +145,8 @@ + void (* cut_clipboard) (GtkEntry *entry); + void (* copy_clipboard) (GtkEntry *entry); + void (* paste_clipboard) (GtkEntry *entry); ++ void (* paste_selection) (GtkEntry *entry, ++ const gchar *which); + void (* toggle_overwrite) (GtkEntry *entry); + + /* hooks to add other objects beside the entry (like in GtkSpinButton) */ +@@ -168,7 +170,6 @@ + void (*_gtk_reserved4) (void); + void (*_gtk_reserved5) (void); + void (*_gtk_reserved6) (void); +- void (*_gtk_reserved7) (void); + }; + + GDK_AVAILABLE_IN_ALL +diff -ur gtk+-3.20.9/gtk/gtktextview.c gtk+-3.20.9_patched/gtk/gtktextview.c +--- gtk+-3.20.9/gtk/gtktextview.c 2016-08-04 15:39:15.000000000 +0200 ++++ gtk+-3.20.9_patched/gtk/gtktextview.c 2016-10-10 20:55:27.612451814 +0200 +@@ -326,6 +326,7 @@ + CUT_CLIPBOARD, + COPY_CLIPBOARD, + PASTE_CLIPBOARD, ++ PASTE_SELECTION, + TOGGLE_OVERWRITE, + MOVE_VIEWPORT, + SELECT_ALL, +@@ -495,6 +496,8 @@ + static void gtk_text_view_cut_clipboard (GtkTextView *text_view); + static void gtk_text_view_copy_clipboard (GtkTextView *text_view); + static void gtk_text_view_paste_clipboard (GtkTextView *text_view); ++static void gtk_text_view_paste_selection (GtkTextView *text_view, ++ const gchar *which); + static void gtk_text_view_toggle_overwrite (GtkTextView *text_view); + static void gtk_text_view_toggle_cursor_visible (GtkTextView *text_view); + +@@ -782,6 +785,7 @@ + klass->cut_clipboard = gtk_text_view_cut_clipboard; + klass->copy_clipboard = gtk_text_view_copy_clipboard; + klass->paste_clipboard = gtk_text_view_paste_clipboard; ++ klass->paste_selection = gtk_text_view_paste_selection; + klass->toggle_overwrite = gtk_text_view_toggle_overwrite; + klass->create_buffer = gtk_text_view_create_buffer; + klass->extend_selection = gtk_text_view_extend_selection; +@@ -1300,6 +1304,24 @@ + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, 0); ++ /** ++ * GtkTextView::paste-selection: ++ * @text_view: the object which received the signal ++ * ++ * The ::paste-selection signal is a ++ * keybinding signal ++ * which gets emitted to paste the contents of the given selection ++ * into the text view. ++ */ ++ signals[PASTE_SELECTION] = ++ g_signal_new (I_("paste-selection"), ++ G_OBJECT_CLASS_TYPE (gobject_class), ++ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, ++ G_STRUCT_OFFSET (GtkTextViewClass, paste_selection), ++ NULL, NULL, ++ _gtk_marshal_VOID__STRING, ++ G_TYPE_NONE, 1, ++ G_TYPE_STRING); + + /** + * GtkTextView::toggle-overwrite: +@@ -7160,6 +7182,31 @@ + } + + static void ++gtk_text_view_paste_selection (GtkTextView *text_view, ++ const gchar *which) ++{ ++ GtkClipboard *clipboard = NULL; ++ ++ if (g_str_equal (which, "primary")) ++ clipboard = gtk_widget_get_clipboard (GTK_WIDGET (text_view), ++ GDK_SELECTION_PRIMARY); ++ else if (g_str_equal (which, "secondary")) ++ clipboard = gtk_widget_get_clipboard (GTK_WIDGET (text_view), ++ GDK_SELECTION_SECONDARY); ++ else if (g_str_equal (which, "clipboard")) ++ clipboard = gtk_widget_get_clipboard (GTK_WIDGET (text_view), ++ GDK_SELECTION_CLIPBOARD); ++ ++ if (clipboard) ++ gtk_text_buffer_paste_clipboard (get_buffer (text_view), ++ clipboard, ++ NULL, ++ text_view->priv->editable); ++ else ++ gtk_widget_error_bell (GTK_WIDGET (text_view)); ++} ++ ++static void + gtk_text_view_paste_done_handler (GtkTextBuffer *buffer, + GtkClipboard *clipboard, + gpointer data) +diff -ur gtk+-3.20.9/gtk/gtktextview.h gtk+-3.20.9_patched/gtk/gtktextview.h +--- gtk+-3.20.9/gtk/gtktextview.h 2016-05-20 15:23:51.000000000 +0200 ++++ gtk+-3.20.9_patched/gtk/gtktextview.h 2016-10-10 20:56:41.844453500 +0200 +@@ -182,6 +182,8 @@ + void (* cut_clipboard) (GtkTextView *text_view); + void (* copy_clipboard) (GtkTextView *text_view); + void (* paste_clipboard) (GtkTextView *text_view); ++ void (* paste_selection) (GtkTextView *text_view, ++ const gchar *which); + void (* toggle_overwrite) (GtkTextView *text_view); + GtkTextBuffer * (* create_buffer) (GtkTextView *text_view); + void (* draw_layer) (GtkTextView *text_view, +@@ -200,7 +202,6 @@ + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); +- void (*_gtk_reserved5) (void); + }; + + GDK_AVAILABLE_IN_ALL diff --git a/x11-libs/gtk+/gtk+-3.20.9-r99.ebuild b/x11-libs/gtk+/gtk+-3.20.9-r99.ebuild new file mode 100644 index 0000000..bf71b18 --- /dev/null +++ b/x11-libs/gtk+/gtk+-3.20.9-r99.ebuild @@ -0,0 +1,236 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +GNOME2_LA_PUNT="yes" + +inherit autotools eutils flag-o-matic gnome2 multilib virtualx multilib-minimal + +DESCRIPTION="Gimp ToolKit +" +HOMEPAGE="http://www.gtk.org/" + +LICENSE="LGPL-2+" +SLOT="3" +IUSE="aqua broadway cloudprint colord cups examples +introspection test vim-syntax wayland X xinerama" +REQUIRED_USE=" + || ( aqua wayland X ) + xinerama? ( X ) +" + +KEYWORDS="alpha amd64 arm ~arm64 hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" + +# Upstream wants us to do their job: +# https://bugzilla.gnome.org/show_bug.cgi?id=768662#c1 +RESTRICT="test" + +# FIXME: introspection data is built against system installation of gtk+:3, +# bug #???? +# NOTE: cairo[svg] dep is due to bug 291283 (not patched to avoid eautoreconf) +COMMON_DEPEND=" + >=dev-libs/atk-2.15[introspection?,${MULTILIB_USEDEP}] + >=dev-libs/glib-2.45.8:2[${MULTILIB_USEDEP}] + media-libs/fontconfig[${MULTILIB_USEDEP}] + >=media-libs/libepoxy-1.0[X(+)?,${MULTILIB_USEDEP}] + >=x11-libs/cairo-1.14[aqua?,glib,svg,X?,${MULTILIB_USEDEP}] + >=x11-libs/gdk-pixbuf-2.30:2[introspection?,X?,${MULTILIB_USEDEP}] + >=x11-libs/pango-1.37.3[introspection?,${MULTILIB_USEDEP}] + x11-misc/shared-mime-info + + cloudprint? ( + >=net-libs/rest-0.7[${MULTILIB_USEDEP}] + >=dev-libs/json-glib-1.0[${MULTILIB_USEDEP}] ) + colord? ( >=x11-misc/colord-0.1.9:0=[${MULTILIB_USEDEP}] ) + cups? ( >=net-print/cups-1.2[${MULTILIB_USEDEP}] ) + introspection? ( >=dev-libs/gobject-introspection-1.39:= ) + wayland? ( + >=dev-libs/wayland-1.9.91[${MULTILIB_USEDEP}] + >=dev-libs/wayland-protocols-1.0 + media-libs/mesa[wayland,${MULTILIB_USEDEP}] + >=x11-libs/libxkbcommon-0.2[${MULTILIB_USEDEP}] + ) + X? ( + >=app-accessibility/at-spi2-atk-2.5.3[${MULTILIB_USEDEP}] + x11-libs/libXrender[${MULTILIB_USEDEP}] + x11-libs/libX11[${MULTILIB_USEDEP}] + >=x11-libs/libXi-1.3[${MULTILIB_USEDEP}] + x11-libs/libXext[${MULTILIB_USEDEP}] + >=x11-libs/libXrandr-1.5[${MULTILIB_USEDEP}] + x11-libs/libXcursor[${MULTILIB_USEDEP}] + x11-libs/libXfixes[${MULTILIB_USEDEP}] + x11-libs/libXcomposite[${MULTILIB_USEDEP}] + x11-libs/libXdamage[${MULTILIB_USEDEP}] + xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] ) + ) +" +DEPEND="${COMMON_DEPEND} + app-text/docbook-xsl-stylesheets + app-text/docbook-xml-dtd:4.1.2 + dev-libs/libxslt + dev-libs/gobject-introspection-common + >=dev-util/gdbus-codegen-2.38.2 + >=dev-util/gtk-doc-am-1.20 + >=sys-devel/gettext-0.18.3[${MULTILIB_USEDEP}] + virtual/pkgconfig[${MULTILIB_USEDEP}] + X? ( + x11-proto/xextproto[${MULTILIB_USEDEP}] + x11-proto/xproto[${MULTILIB_USEDEP}] + x11-proto/inputproto[${MULTILIB_USEDEP}] + x11-proto/damageproto[${MULTILIB_USEDEP}] + xinerama? ( x11-proto/xineramaproto[${MULTILIB_USEDEP}] ) + ) + test? ( + media-fonts/font-misc-misc + media-fonts/font-cursor-misc ) +" +# gtk+-3.2.2 breaks Alt key handling in <=x11-libs/vte-0.30.1:2.90 +# gtk+-3.3.18 breaks scrolling in <=x11-libs/vte-0.31.0:2.90 +# >=xorg-server-1.11.4 needed for +# https://mail.gnome.org/archives/desktop-devel-list/2012-March/msg00024.html +RDEPEND="${COMMON_DEPEND} + >=dev-util/gtk-update-icon-cache-3 + !=x11-themes/adwaita-icon-theme-3.14 + X? ( !