summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO70
-rw-r--r--0001-entry-Undo-ABI-breakage-from-addition-of-insert_emoj.patch37
-rw-r--r--PKGBUILD102
-rw-r--r--gtk-update-icon-cache.hook13
-rw-r--r--gtk-update-icon-cache.script10
-rw-r--r--ubuntu_gtk_custom_menu_items.patch185
6 files changed, 362 insertions, 55 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 71d3f90c7b73..31064394ee88 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,25 +1,30 @@
pkgbase = gtk3-ubuntu
pkgdesc = GObject-based multi-platform toolkit
- pkgver = 3.22.7
- pkgrel = 2
+ pkgver = 3.22.26+47+g3a1a7135a2
+ pkgrel = 1
url = http://www.gtk.org/
install = gtk3.install
- arch = i686
arch = x86_64
license = LGPL
+ makedepends = colord
makedepends = gobject-introspection
+ makedepends = git
makedepends = gtk-doc
makedepends = libcanberra
+ makedepends = rest
+ makedepends = libcups
+ makedepends = glib2-docs
+ makedepends = sassc
depends = adwaita-icon-theme
depends = at-spi2-atk
depends = atk
depends = cairo
- depends = colord
+ depends = cantarell-fonts
+ depends = dconf
depends = desktop-file-utils
depends = gdk-pixbuf2
depends = gtk-update-icon-cache
depends = json-glib
- depends = libcups
depends = libepoxy
depends = librsvg
depends = libxcomposite
@@ -29,22 +34,61 @@ pkgbase = gtk3-ubuntu
depends = libxinerama
depends = libxkbcommon
depends = libxrandr
+ depends = mesa
depends = pango
- depends = rest
depends = shared-mime-info
depends = wayland
depends = wayland-protocols
- optdepends = libcanberra: gtk3-widget-factory demo
- provides = gtk3=3.22.7
- conflicts = gtk3
- source = https://download.gnome.org/sources/gtk+/3.22/gtk+-3.22.7.tar.xz
+ source = git+https://git.gnome.org/browse/gtk+#commit=3a1a7135a276f2b6336c7566f6342da739a41d39
+ source = 0001-entry-Undo-ABI-breakage-from-addition-of-insert_emoj.patch
+ source = ubuntu_gtk_custom_menu_items.patch
source = settings.ini
source = gtk-query-immodules-3.0.hook
- source = http://ppa.launchpad.net/gnome3-team/gnome3-staging/ubuntu/pool/main/g/gtk+3.0/gtk+3.0_3.22.7-1ubuntu2~ubuntu16.10.1.debian.tar.xz
- sha512sums = c4cf49c05a3553290013749e58f8179ff4c5ae74876e62a3d1870784b1da8846b16bad189baa57aabb65b10aa6b687d188eaf0460d83034cf47b7df5d55ddd2c
+ source = gtk-update-icon-cache.hook
+ source = gtk-update-icon-cache.script
+ source = https://launchpad.net/ubuntu/+archive/primary/+files/gtk+3.0_3.22.26+47+g3a1a7135a2-2ubuntu1.debian.tar.xz
+ sha512sums = SKIP
+ sha512sums = aa57f33b55ef858e9ddb305c01ddd4c995c6cbb0ea429844e5b6e77321192909090e6f77de7d4484c46838bdba989105bfefdff594f46dc80544820bcffcfb46
+ sha512sums = d369ea456ee48c371506dedc5e0ca8d60d9bcca9362dc76caaa4d70adf67b32524aabcb2383136cbbf023dadcba0c54a37db25cde89944d1cfe2ae7ac8bd9258
sha512sums = ad2c0b0388f4169592b9574f0b3db673a969b7c4721548c4ac7c438eddbcdc378fcaac04e2b6c858a1562cc23ddf4804e5f7be08068340b7c9365e2b11ddcfb8
sha512sums = f0ffd95544863f2e10fda81488b4727aa9a8a35a7d39fb96872db6664d03442db2b58af788b5990825c7b3a83681f7220ca481409cca5421dfb39b9a3bbac9ac
- sha512sums = f6c998a2c2ad1e1c03d84c506103d952794fde8038780bd7b0294bd0b32bab619815911b3bb531f05cd2a14dae0054f4f6fd2e585a898f7256be6f546d380eb7
+ sha512sums = abfd73de4faa6f53784182800395aa3c39bb98e15a0eb300fb4142073ff7ce565a0836a2363393b2f132060b5293dbc0c30c380a023f38d5bd39c62cb58389c2
+ sha512sums = 5cd50d93bb6bc203438a2a0764bd717409658e124058b18a1da26a21f10ef7564a16f32fc0633a68b45b2e303fa63a5efefeadd6b0bf1d7f474556df8cdb6c58
+ sha512sums = 7b31b41ec7b0b96b69d55bc782921d57cc3329faade0c81522c9ae2be9a143e8a5edfd8ed57c84db404f7301ed89ea59b3d6defec34aa968cc9de8b0f35dd6f7
pkgname = gtk3-ubuntu
+ install = gtk3.install
+ depends = adwaita-icon-theme
+ depends = at-spi2-atk
+ depends = atk
+ depends = cairo
+ depends = cantarell-fonts
+ depends = dconf
+ depends = desktop-file-utils
+ depends = gdk-pixbuf2
+ depends = gtk-update-icon-cache
+ depends = json-glib
+ depends = libepoxy
+ depends = librsvg
+ depends = libxcomposite
+ depends = libxcursor
+ depends = libxdamage
+ depends = libxi
+ depends = libxinerama
+ depends = libxkbcommon
+ depends = libxrandr
+ depends = mesa
+ depends = pango
+ depends = shared-mime-info
+ depends = wayland
+ depends = wayland-protocols
+ depends = gtk-update-icon-cache
+ provides = gtk3-print-backends
+ conflicts = gtk3-print-backends
+ replaces = gtk3-print-backends<=3.22.26-1
+
+pkgname = gtk-update-icon-cache
+ pkgdesc = GTK+ icon cache updater
+ depends = gdk-pixbuf2
+ depends = hicolor-icon-theme
diff --git a/0001-entry-Undo-ABI-breakage-from-addition-of-insert_emoj.patch b/0001-entry-Undo-ABI-breakage-from-addition-of-insert_emoj.patch
new file mode 100644
index 000000000000..7b7a9e0f70e1
--- /dev/null
+++ b/0001-entry-Undo-ABI-breakage-from-addition-of-insert_emoj.patch
@@ -0,0 +1,37 @@
+From 9577618e2ae679988231cfa2162eb48cdb6ce5a0 Mon Sep 17 00:00:00 2001
+Message-Id: <9577618e2ae679988231cfa2162eb48cdb6ce5a0.1511732020.git.jan.steffens@gmail.com>
+From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
+Date: Sun, 26 Nov 2017 22:32:36 +0100
+Subject: [PATCH] entry: Undo ABI breakage from addition of insert_emoji
+
+---
+ gtk/gtkentry.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gtk/gtkentry.h b/gtk/gtkentry.h
+index 073e703d0deea6a6..0372752f2963c940 100644
+--- a/gtk/gtkentry.h
++++ b/gtk/gtkentry.h
+@@ -146,19 +146,19 @@ struct _GtkEntryClass
+ void (* copy_clipboard) (GtkEntry *entry);
+ void (* paste_clipboard) (GtkEntry *entry);
+ void (* toggle_overwrite) (GtkEntry *entry);
+- void (* insert_emoji) (GtkEntry *entry);
+
+ /* hooks to add other objects beside the entry (like in GtkSpinButton) */
+ void (* get_text_area_size) (GtkEntry *entry,
+ gint *x,
+ gint *y,
+ gint *width,
+ gint *height);
+ void (* get_frame_size) (GtkEntry *entry,
+ gint *x,
+ gint *y,
+ gint *width,
+ gint *height);
++ void (* insert_emoji) (GtkEntry *entry);
+
+ /*< private >*/
+
+--
+2.15.0
diff --git a/PKGBUILD b/PKGBUILD
index 3b70a64441b7..2fe8fdfbdbe8 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,47 +2,61 @@
# Contributor: Christopher Reimer <github@creimer.net>
# vercheck-pkgbuild: auto
-# vercheck-ubuntu: name=gtk+3.0, repo=zesty
+# vercheck-ubuntu: name=gtk+3.0, repo=bionic
# vercheck-archlinux: name=gtk3, repo=extra, arch=x86_64
# vercheck-gnome: name=gtk+, majorver=3.22
# vercheck-ppa: name=gtk+3.0, url=ppa:gnome3-team/gnome3-staging
_use_ppa=true
-pkgname=gtk3-ubuntu
-_ubuntu_rel=1ubuntu2~ubuntu16.10.1
-pkgver=3.22.7
-pkgrel=2
+pkgbase=gtk3-ubuntu
+pkgname=(gtk3-ubuntu gtk-update-icon-cache)
+_ubuntu_rel=2ubuntu1
+pkgver=3.22.26+47+g3a1a7135a2
+pkgrel=1
pkgdesc="GObject-based multi-platform toolkit"
-arch=(i686 x86_64)
+arch=(x86_64)
url="http://www.gtk.org/"
install=gtk3.install
-depends=(adwaita-icon-theme at-spi2-atk atk cairo colord desktop-file-utils gdk-pixbuf2
- gtk-update-icon-cache json-glib libcups libepoxy librsvg libxcomposite libxcursor
- libxdamage libxi libxinerama libxkbcommon libxrandr pango rest shared-mime-info wayland
+depends=(adwaita-icon-theme at-spi2-atk atk cairo cantarell-fonts dconf desktop-file-utils
+ gdk-pixbuf2 gtk-update-icon-cache json-glib libepoxy librsvg libxcomposite libxcursor
+ libxdamage libxi libxinerama libxkbcommon libxrandr mesa pango shared-mime-info wayland
wayland-protocols)
-makedepends=(gobject-introspection gtk-doc libcanberra)
-optdepends=('libcanberra: gtk3-widget-factory demo')
-provides=("gtk3=${pkgver}")
-conflicts=(gtk3)
+makedepends=(colord gobject-introspection git gtk-doc libcanberra rest libcups glib2-docs sassc)
license=(LGPL)
-source=("https://download.gnome.org/sources/gtk+/${pkgver%.*}/gtk+-${pkgver}.tar.xz"
+_commit=3a1a7135a276f2b6336c7566f6342da739a41d39 # gtk-3-22
+source=("git+https://git.gnome.org/browse/gtk+#commit=$_commit"
+ 0001-entry-Undo-ABI-breakage-from-addition-of-insert_emoj.patch
+ ubuntu_gtk_custom_menu_items.patch
settings.ini
- gtk-query-immodules-3.0.hook)
+ gtk-query-immodules-3.0.hook
+ gtk-update-icon-cache.hook
+ gtk-update-icon-cache.script)
-if [[ "${_use_ppa}" != "true" ]]; then
- source+=("https://launchpad.net/ubuntu/+archive/primary/+files/gtk+3.0_${_ubuntu_ver:-${pkgver}}-${_ubuntu_rel}.debian.tar.xz")
-else
- source+=("http://ppa.launchpad.net/gnome3-team/gnome3-staging/ubuntu/pool/main/g/gtk+3.0/gtk+3.0_${_ubuntu_ver:-${pkgver}}-${_ubuntu_rel}.debian.tar.xz")
-fi
+source+=("https://launchpad.net/ubuntu/+archive/primary/+files/gtk+3.0_${_ubuntu_ver:-${pkgver}}-${_ubuntu_rel}.debian.tar.xz")
-sha512sums=('c4cf49c05a3553290013749e58f8179ff4c5ae74876e62a3d1870784b1da8846b16bad189baa57aabb65b10aa6b687d188eaf0460d83034cf47b7df5d55ddd2c'
+sha512sums=('SKIP'
+ 'aa57f33b55ef858e9ddb305c01ddd4c995c6cbb0ea429844e5b6e77321192909090e6f77de7d4484c46838bdba989105bfefdff594f46dc80544820bcffcfb46'
+ 'd369ea456ee48c371506dedc5e0ca8d60d9bcca9362dc76caaa4d70adf67b32524aabcb2383136cbbf023dadcba0c54a37db25cde89944d1cfe2ae7ac8bd9258'
'ad2c0b0388f4169592b9574f0b3db673a969b7c4721548c4ac7c438eddbcdc378fcaac04e2b6c858a1562cc23ddf4804e5f7be08068340b7c9365e2b11ddcfb8'
'f0ffd95544863f2e10fda81488b4727aa9a8a35a7d39fb96872db6664d03442db2b58af788b5990825c7b3a83681f7220ca481409cca5421dfb39b9a3bbac9ac'
- 'f6c998a2c2ad1e1c03d84c506103d952794fde8038780bd7b0294bd0b32bab619815911b3bb531f05cd2a14dae0054f4f6fd2e585a898f7256be6f546d380eb7')
+ 'abfd73de4faa6f53784182800395aa3c39bb98e15a0eb300fb4142073ff7ce565a0836a2363393b2f132060b5293dbc0c30c380a023f38d5bd39c62cb58389c2'
+ '5cd50d93bb6bc203438a2a0764bd717409658e124058b18a1da26a21f10ef7564a16f32fc0633a68b45b2e303fa63a5efefeadd6b0bf1d7f474556df8cdb6c58'
+ '7b31b41ec7b0b96b69d55bc782921d57cc3329faade0c81522c9ae2be9a143e8a5edfd8ed57c84db404f7301ed89ea59b3d6defec34aa968cc9de8b0f35dd6f7')
+
+pkgver() {
+ cd gtk+
+ git describe --tags | sed 's/-/+/g'
+}
prepare() {
- cd "gtk+-${pkgver}"
+ cd gtk+
+
+ # https://bugs.archlinux.org/task/56474
+ patch -Np1 -i ../0001-entry-Undo-ABI-breakage-from-addition-of-insert_emoj.patch
+
+ # fix ubuntu_gtk_custom_menu_items patch
+ patch -p1 -i ../ubuntu_gtk_custom_menu_items.patch
local patches=(
016_no_offscreen_widgets_grabbing.patch
@@ -52,7 +66,6 @@ prepare() {
074_eventbox_scroll_mask.patch
no-accessibility-dump.patch
bzg_gtkcellrenderer_grabbing_modifier.patch
- ubuntu_gtk_custom_menu_items.patch
print-dialog-show-options-of-remote-dnssd-printers.patch
uimanager-guard-against-nested-node-updates.patch
x-canonical-accel.patch
@@ -62,7 +75,6 @@ prepare() {
ubuntu_fileselector_behaviour.patch
unity-border-radius.patch
unity-headerbar-maximized-mode.patch
- gtksocket-unscale-before-sending-configurenotify.patch
)
for i in "${patches[@]}"; do
@@ -74,10 +86,9 @@ prepare() {
}
build() {
- cd "gtk+-${pkgver}"
+ cd gtk+
- CXX=/bin/false ./configure \
- --prefix=/usr \
+ CXX=/bin/false ./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-schemas-compile \
@@ -92,22 +103,29 @@ build() {
make
}
-package() {
- cd "gtk+-${pkgver}"
+package_gtk3-ubuntu() {
+ depends+=(gtk-update-icon-cache)
+ provides=(gtk3-print-backends)
+ conflicts=(gtk3-print-backends)
+ replaces=("gtk3-print-backends<=3.22.26-1")
+ install=gtk3.install
+
+ cd gtk+
make DESTDIR="${pkgdir}" install
- install -Dm644 ../settings.ini \
- "${pkgdir}"/usr/share/gtk-3.0/settings.ini
- install -Dm644 ../gtk-query-immodules-3.0.hook \
- "${pkgdir}"/usr/share/libalpm/hooks/gtk-query-immodules-3.0.hook
+ install -Dm644 ../settings.ini "$pkgdir/usr/share/gtk-3.0/settings.ini"
+ install -Dm644 ../gtk-query-immodules-3.0.hook "$pkgdir/usr/share/libalpm/hooks/gtk-query-immodules-3.0.hook"
- rm "${pkgdir}"/usr/bin/gtk-update-icon-cache
+ rm "$pkgdir/usr/bin/gtk-update-icon-cache"
- cd "$pkgdir"
- for _f in usr/lib/*/*/printbackends/*; do
- case $_f in
- *-file.so|*-lpr.so) continue ;;
- *) rm "${_f}" ;;
- esac
- done
+}
+
+package_gtk-update-icon-cache() {
+ pkgdesc="GTK+ icon cache updater"
+ depends=(gdk-pixbuf2 hicolor-icon-theme)
+
+ cd gtk+
+ install -D gtk/gtk-update-icon-cache "$pkgdir/usr/bin/gtk-update-icon-cache"
+ install -Dm644 ../gtk-update-icon-cache.hook "$pkgdir/usr/share/libalpm/hooks/gtk-update-icon-cache.hook"
+ install -D ../gtk-update-icon-cache.script "$pkgdir/usr/share/libalpm/scripts/gtk-update-icon-cache"
}
diff --git a/gtk-update-icon-cache.hook b/gtk-update-icon-cache.hook
new file mode 100644
index 000000000000..fca3fdc47dbb
--- /dev/null
+++ b/gtk-update-icon-cache.hook
@@ -0,0 +1,13 @@
+[Trigger]
+Type = File
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/share/icons/*/
+Target = !usr/share/icons/*/?*
+
+[Action]
+Description = Updating icon theme caches...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/gtk-update-icon-cache
+NeedsTargets
diff --git a/gtk-update-icon-cache.script b/gtk-update-icon-cache.script
new file mode 100644
index 000000000000..ee0f1d12d0b7
--- /dev/null
+++ b/gtk-update-icon-cache.script
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+while read -r f; do
+ if [[ -e ${f}index.theme ]]; then
+ gtk-update-icon-cache -q "$f"
+ elif [[ -d $f ]]; then
+ rm -f "${f}icon-theme.cache"
+ rmdir --ignore-fail-on-non-empty "$f"
+ fi
+done
diff --git a/ubuntu_gtk_custom_menu_items.patch b/ubuntu_gtk_custom_menu_items.patch
new file mode 100644
index 000000000000..70d9d0326b6a
--- /dev/null
+++ b/ubuntu_gtk_custom_menu_items.patch
@@ -0,0 +1,185 @@
+From 59168f3c1a72f610b693cd1ed4cfa5fac281079a Mon Sep 17 00:00:00 2001
+From: Lars Uebernickel <lars.uebernickel@canonical.com>
+Date: Wed, 6 Nov 2013 14:48:19 +0100
+Subject: [PATCH] Add UbuntuMenuItemFactory
+
+UbuntuMenuItemFactory is an interface for creating widgets for menu
+items in a GMenuModel that have an 'x-canonical-type' attribute.
+
+It is needed by unity and should not be considered public API.
+---
+ gtk/Makefile.am | 3 ++
+ gtk/gtkmenushell.c | 69 ++++++++++++++++++++++++++++++++++++++++++++
+ gtk/gtkmenutrackeritem.c | 16 +++++++++++
+ gtk/gtkmenutrackeritem.h | 4 +++
+ gtk/ubuntu-private.h | 32 +++++++++++++++++++++
+ gtk/ubuntumenuitemfactory.c | 70 +++++++++++++++++++++++++++++++++++++++++++++
+ gtk/ubuntumenuitemfactory.h | 61 +++++++++++++++++++++++++++++++++++++++
+ 7 files changed, 255 insertions(+)
+ create mode 100644 gtk/ubuntu-private.h
+ create mode 100644 gtk/ubuntumenuitemfactory.c
+ create mode 100644 gtk/ubuntumenuitemfactory.h
+
+diff --git a/gtk/Makefile.am b/gtk/Makefile.am
+index 51153e6..3c01638 100644
+--- a/gtk/Makefile.am
++++ b/gtk/Makefile.am
+@@ -108,6 +108,8 @@ include $(srcdir)/inspector/Makefile.inc
+ gtk_public_h_sources = \
+ gtk.h \
+ gtk-autocleanups.h \
++ ubuntu-private.h \
++ ubuntumenuitemfactory.h \
+ gtkx.h \
+ gtkx-autocleanups.h \
+ gtk-a11y.h \
+@@ -528,6 +530,7 @@ gtk_base_c_sources = \
+ $(a11y_c_sources) \
+ $(deprecated_c_sources) \
+ $(inspector_c_sources) \
++ ubuntumenuitemfactory.c \
+ gtkactionmuxer.c \
+ gtkactionobserver.c \
+ gtkactionobservable.c \
+diff --git a/gtk/gtkmenushell.c b/gtk/gtkmenushell.c
+index e1ba138..6d7a2f6 100644
+--- a/gtk/gtkmenushell.c
++++ b/gtk/gtkmenushell.c
+@@ -80,6 +80,8 @@
+
+ #include "a11y/gtkmenushellaccessible.h"
+
++#include "ubuntu-private.h"
++
+
+ #define MENU_SHELL_TIMEOUT 500
+ #define MENU_POPUP_DELAY 225
+@@ -2044,6 +2046,58 @@ gtk_menu_shell_tracker_remove_func (gint position,
+ gtk_widget_destroy (child);
+ }
+
++static GtkWidget *
++create_custom_menu_item (GMenuItem *item,
++ GtkWidget *parent,
++ const gchar *action_namespace)
++{
++ gchar *type;
++ GActionGroup *actions;
++ GtkMenuItem *widget = NULL;
++ GList *it;
++
++ g_menu_item_get_attribute (item, "x-canonical-type", "s", &type);
++
++ if (action_namespace)
++ {
++ gchar *action;
++
++ /* Rewrite the menu item to include the fully qualified action
++ * name to make writing widgets easier. This won't break, as
++ * we don't use the tracker item for custom items.
++ */
++ if (g_menu_item_get_attribute (item, "action", "s", &action))
++ {
++ gchar *fullname;
++
++ fullname = g_strconcat (action_namespace, ".", action, NULL);
++ g_menu_item_set_attribute (item, "action", "s", fullname);
++
++ g_free (fullname);
++ g_free (action);
++ }
++ }
++
++ /* Passing the parent muxer is wrong, but we'll only have access
++ * to the menuitem's muxer after the widget has been created.
++ * Thus we'd need some other form of passing the action group to
++ * the widget, which would complicate things for no practical
++ * reason: the panel service is the only consumer of this API and
++ * it will never call gtk_widget_insert_action_group() on the
++ * returned menu item.
++ */
++ actions = G_ACTION_GROUP (_gtk_widget_get_action_muxer (parent, TRUE));
++
++ for (it = ubuntu_menu_item_factory_get_all (); it != NULL && widget == NULL; it = it->next)
++ widget = ubuntu_menu_item_factory_create_menu_item (it->data, type, item, actions);
++
++ if (widget == NULL)
++ g_warning ("Cannot create custom menu item of type '%s'", type);
++
++ g_free (type);
++ return GTK_WIDGET (widget);
++}
++
+ static void
+ gtk_menu_shell_tracker_insert_func (GtkMenuTrackerItem *item,
+ gint position,
+@@ -2051,6 +2105,9 @@ gtk_menu_shell_tracker_insert_func (GtkMenuTrackerItem *item,
+ {
+ GtkMenuShell *menu_shell = user_data;
+ GtkWidget *widget;
++ GMenuItem *menuitem;
++
++ menuitem = gtk_menu_tracker_item_get_menu_item (item);
+
+ if (gtk_menu_tracker_item_get_is_separator (item))
+ {
+@@ -2112,6 +2169,18 @@ gtk_menu_shell_tracker_insert_func (GtkMenuTrackerItem *item,
+
+ gtk_widget_show (widget);
+ }
++ else if (g_menu_item_get_attribute (menuitem, "x-canonical-type", "s", NULL))
++ {
++ const gchar *namespace;
++
++ namespace = gtk_menu_tracker_item_get_action_namespace (item);
++ widget = create_custom_menu_item (menuitem, GTK_WIDGET (menu_shell), namespace);
++
++ if (widget == NULL)
++ return;
++
++ gtk_widget_show (widget);
++ }
+ else
+ {
+ widget = gtk_model_menu_item_new ();
+diff --git a/gtk/gtkmenutrackeritem.c b/gtk/gtkmenutrackeritem.c
+index c304b66..cd0c796 100644
+--- a/gtk/gtkmenutrackeritem.c
++++ b/gtk/gtkmenutrackeritem.c
+@@ -979,3 +979,19 @@ gtk_menu_tracker_item_may_disappear (GtkMenuTrackerItem *self)
+ {
+ return self->hidden_when != HIDDEN_NEVER;
+ }
++
++GMenuItem *
++gtk_menu_tracker_item_get_menu_item (GtkMenuTrackerItem *self)
++{
++ g_return_val_if_fail (GTK_IS_MENU_TRACKER_ITEM (self), NULL);
++
++ return self->item;
++}
++
++const gchar *
++gtk_menu_tracker_item_get_action_namespace (GtkMenuTrackerItem *self)
++{
++ g_return_val_if_fail (GTK_IS_MENU_TRACKER_ITEM (self), NULL);
++
++ return self->action_namespace;
++}
+diff --git a/gtk/gtkmenutrackeritem.h b/gtk/gtkmenutrackeritem.h
+index 6b4fcb5..d74fe92 100644
+--- a/gtk/gtkmenutrackeritem.h
++++ b/gtk/gtkmenutrackeritem.h
+@@ -92,4 +92,8 @@ void gtk_menu_tracker_item_request_submenu_shown (GtkMenu
+
+ gboolean gtk_menu_tracker_item_get_submenu_shown (GtkMenuTrackerItem *self);
+
++GMenuItem * gtk_menu_tracker_item_get_menu_item (GtkMenuTrackerItem *self);
++
++const gchar * gtk_menu_tracker_item_get_action_namespace (GtkMenuTrackerItem *self);
++
+ #endif
+
+--
+2.1.4
+