diff options
author | Guido Falsi <madpilot@FreeBSD.org> | 2022-12-16 15:55:57 +0100 |
---|---|---|
committer | Guido Falsi <madpilot@FreeBSD.org> | 2022-12-16 15:55:57 +0100 |
commit | aac41c1d6719790f71e5a3123ad9afdcbfb46e8e (patch) | |
tree | e51f1df0adec490936f687e2ef0a3b2ae43d0325 /x11 | |
parent | www/onlyoffice-documentserver: Fix build after node update (diff) |
Welcome XFCE 4.18 to the FreeBSD ports tree!
Upstream announce: https://xfce.org/about/news/?post=1671062400
Some notes:
- Updated pkg-descr for various packages
- Added some missing dependencies (reported by poudriere Q/A tests)
- Removed patches now included upstream
Diffstat (limited to 'x11')
-rw-r--r-- | x11/libexo/Makefile | 2 | ||||
-rw-r--r-- | x11/libexo/distinfo | 6 | ||||
-rw-r--r-- | x11/libexo/pkg-descr | 8 | ||||
-rw-r--r-- | x11/libexo/pkg-plist | 136 | ||||
-rw-r--r-- | x11/libxfce4menu/Makefile | 7 | ||||
-rw-r--r-- | x11/libxfce4menu/distinfo | 6 | ||||
-rw-r--r-- | x11/libxfce4menu/files/patch-shortcuts-grabber-fix-PR27 | 1324 | ||||
-rw-r--r-- | x11/libxfce4menu/pkg-plist | 3 | ||||
-rw-r--r-- | x11/libxfce4util/Makefile | 2 | ||||
-rw-r--r-- | x11/libxfce4util/distinfo | 6 | ||||
-rw-r--r-- | x11/libxfce4util/pkg-descr | 3 | ||||
-rw-r--r-- | x11/libxfce4util/pkg-plist | 4 | ||||
-rw-r--r-- | x11/xfce4-conf/Makefile | 2 | ||||
-rw-r--r-- | x11/xfce4-conf/distinfo | 6 | ||||
-rw-r--r-- | x11/xfce4-conf/pkg-descr | 3 | ||||
-rw-r--r-- | x11/xfce4-conf/pkg-plist | 2 | ||||
-rw-r--r-- | x11/xfce4-goodies/Makefile | 3 |
17 files changed, 106 insertions, 1417 deletions
diff --git a/x11/libexo/Makefile b/x11/libexo/Makefile index c0eebc4bf54c..5d0872a53091 100644 --- a/x11/libexo/Makefile +++ b/x11/libexo/Makefile @@ -1,5 +1,5 @@ PORTNAME= libexo -PORTVERSION= 4.16.4 +PORTVERSION= 4.18.0 CATEGORIES= x11 xfce MASTER_SITES= XFCE DISTNAME= exo-${DISTVERSIONFULL} diff --git a/x11/libexo/distinfo b/x11/libexo/distinfo index fcac81df4508..dad12aa01c93 100644 --- a/x11/libexo/distinfo +++ b/x11/libexo/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1654934890 -SHA256 (xfce4/exo-4.16.4.tar.bz2) = 82a50c67e78f1e5c420b7615515bcca759b86eeab99224ab8eca4306b89d2eca -SIZE (xfce4/exo-4.16.4.tar.bz2) = 876080 +TIMESTAMP = 1671097667 +SHA256 (xfce4/exo-4.18.0.tar.bz2) = 4f2c61d045a888cdb64297fd0ae20cc23da9b97ffb82562ed12806ed21da7d55 +SIZE (xfce4/exo-4.18.0.tar.bz2) = 896849 diff --git a/x11/libexo/pkg-descr b/x11/libexo/pkg-descr index 140fe10c3cbd..77c6a4a46308 100644 --- a/x11/libexo/pkg-descr +++ b/x11/libexo/pkg-descr @@ -1,4 +1,4 @@ -Exo is an Xfce library targeted at application development. It contains -various custom widgets and APIs extending the functionality of GLib and -GTK+. It also ships utilities for defining preferred applications, -mounting storage devices and more. +Exo is an Xfce library targeted at application development. It +contains various custom widgets and APIs extending the functionality +of GLib and GTK. It also ships utilities for defining preferred +applications, mounting storage devices and more. diff --git a/x11/libexo/pkg-plist b/x11/libexo/pkg-plist index 885a5032e0e2..f176ac2e70b2 100644 --- a/x11/libexo/pkg-plist +++ b/x11/libexo/pkg-plist @@ -24,71 +24,73 @@ lib/libexo-2.so.0 lib/libexo-2.so.0.1.0 libdata/pkgconfig/exo-2.pc man/man1/exo-open.1.gz -share/icons/hicolor/24x24/apps/preferences-desktop-default-applications.png -share/icons/hicolor/48x48/apps/preferences-desktop-default-applications.png -%%NLS%%share/locale/am/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/ar/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/ast/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/be/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/bg/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/bn/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/ca/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/cs/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/da/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/de/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/el/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/en_AU/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/en_GB/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/es/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/et/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/eu/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/fa_IR/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/fi/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/fr/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/gl/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/he/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/hr/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/hu/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/hy/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/hy_AM/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/hye/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/id/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/ie/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/is/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/it/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/ja/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/kab/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/kk/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/kn/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/ko/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/lt/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/lv/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/ms/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/nb/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/nl/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/nn/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/oc/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/pa/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/pl/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/pt/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/pt_BR/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/ro/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/ru/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/si/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/sk/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/sl/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/sq/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/sr/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/sv/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/te/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/th/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/tr/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/ug/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/uk/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/ur/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/ur_PK/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/vi/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/zh_CN/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/zh_HK/LC_MESSAGES/exo-2.mo -%%NLS%%share/locale/zh_TW/LC_MESSAGES/exo-2.mo +%%NLS%%share/locale/am/LC_MESSAGES/exo.mo +%%NLS%%share/locale/ar/LC_MESSAGES/exo.mo +%%NLS%%share/locale/ast/LC_MESSAGES/exo.mo +%%NLS%%share/locale/az/LC_MESSAGES/exo.mo +%%NLS%%share/locale/az_AZ/LC_MESSAGES/exo.mo +%%NLS%%share/locale/be/LC_MESSAGES/exo.mo +%%NLS%%share/locale/bg/LC_MESSAGES/exo.mo +%%NLS%%share/locale/bn/LC_MESSAGES/exo.mo +%%NLS%%share/locale/ca/LC_MESSAGES/exo.mo +%%NLS%%share/locale/cs/LC_MESSAGES/exo.mo +%%NLS%%share/locale/cy/LC_MESSAGES/exo.mo +%%NLS%%share/locale/da/LC_MESSAGES/exo.mo +%%NLS%%share/locale/de/LC_MESSAGES/exo.mo +%%NLS%%share/locale/el/LC_MESSAGES/exo.mo +%%NLS%%share/locale/en_AU/LC_MESSAGES/exo.mo +%%NLS%%share/locale/en_GB/LC_MESSAGES/exo.mo +%%NLS%%share/locale/es/LC_MESSAGES/exo.mo +%%NLS%%share/locale/et/LC_MESSAGES/exo.mo +%%NLS%%share/locale/eu/LC_MESSAGES/exo.mo +%%NLS%%share/locale/fa_IR/LC_MESSAGES/exo.mo +%%NLS%%share/locale/fi/LC_MESSAGES/exo.mo +%%NLS%%share/locale/fr/LC_MESSAGES/exo.mo +%%NLS%%share/locale/gl/LC_MESSAGES/exo.mo +%%NLS%%share/locale/he/LC_MESSAGES/exo.mo +%%NLS%%share/locale/hr/LC_MESSAGES/exo.mo +%%NLS%%share/locale/hu/LC_MESSAGES/exo.mo +%%NLS%%share/locale/hy/LC_MESSAGES/exo.mo +%%NLS%%share/locale/hy_AM/LC_MESSAGES/exo.mo +%%NLS%%share/locale/hye/LC_MESSAGES/exo.mo +%%NLS%%share/locale/id/LC_MESSAGES/exo.mo +%%NLS%%share/locale/ie/LC_MESSAGES/exo.mo +%%NLS%%share/locale/is/LC_MESSAGES/exo.mo +%%NLS%%share/locale/it/LC_MESSAGES/exo.mo +%%NLS%%share/locale/ja/LC_MESSAGES/exo.mo +%%NLS%%share/locale/ka/LC_MESSAGES/exo.mo +%%NLS%%share/locale/kab/LC_MESSAGES/exo.mo +%%NLS%%share/locale/kk/LC_MESSAGES/exo.mo +%%NLS%%share/locale/kn/LC_MESSAGES/exo.mo +%%NLS%%share/locale/ko/LC_MESSAGES/exo.mo +%%NLS%%share/locale/lt/LC_MESSAGES/exo.mo +%%NLS%%share/locale/lv/LC_MESSAGES/exo.mo +%%NLS%%share/locale/ms/LC_MESSAGES/exo.mo +%%NLS%%share/locale/nb/LC_MESSAGES/exo.mo +%%NLS%%share/locale/nl/LC_MESSAGES/exo.mo +%%NLS%%share/locale/nn/LC_MESSAGES/exo.mo +%%NLS%%share/locale/oc/LC_MESSAGES/exo.mo +%%NLS%%share/locale/pa/LC_MESSAGES/exo.mo +%%NLS%%share/locale/pl/LC_MESSAGES/exo.mo +%%NLS%%share/locale/pt/LC_MESSAGES/exo.mo +%%NLS%%share/locale/pt_BR/LC_MESSAGES/exo.mo +%%NLS%%share/locale/ro/LC_MESSAGES/exo.mo +%%NLS%%share/locale/ru/LC_MESSAGES/exo.mo +%%NLS%%share/locale/si/LC_MESSAGES/exo.mo +%%NLS%%share/locale/sk/LC_MESSAGES/exo.mo +%%NLS%%share/locale/sl/LC_MESSAGES/exo.mo +%%NLS%%share/locale/sq/LC_MESSAGES/exo.mo +%%NLS%%share/locale/sr/LC_MESSAGES/exo.mo +%%NLS%%share/locale/sv/LC_MESSAGES/exo.mo +%%NLS%%share/locale/te/LC_MESSAGES/exo.mo +%%NLS%%share/locale/th/LC_MESSAGES/exo.mo +%%NLS%%share/locale/tr/LC_MESSAGES/exo.mo +%%NLS%%share/locale/ug/LC_MESSAGES/exo.mo +%%NLS%%share/locale/uk/LC_MESSAGES/exo.mo +%%NLS%%share/locale/ur/LC_MESSAGES/exo.mo +%%NLS%%share/locale/ur_PK/LC_MESSAGES/exo.mo +%%NLS%%share/locale/vi/LC_MESSAGES/exo.mo +%%NLS%%share/locale/zh_CN/LC_MESSAGES/exo.mo +%%NLS%%share/locale/zh_HK/LC_MESSAGES/exo.mo +%%NLS%%share/locale/zh_TW/LC_MESSAGES/exo.mo share/pixmaps/exo/exo-thumbnail-frame.png diff --git a/x11/libxfce4menu/Makefile b/x11/libxfce4menu/Makefile index 057f115839df..9563296040f4 100644 --- a/x11/libxfce4menu/Makefile +++ b/x11/libxfce4menu/Makefile @@ -1,5 +1,5 @@ PORTNAME= libxfce4menu -PORTVERSION= 4.16.1 +PORTVERSION= 4.18.0 CATEGORIES= x11 xfce MASTER_SITES= XFCE DISTNAME= libxfce4ui-${DISTVERSIONFULL} @@ -14,11 +14,12 @@ LICENSE= GPLv2 LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ libfreetype.so:print/freetype2 \ libepoxy.so:graphics/libepoxy \ - libgtop-2.0.so:devel/libgtop + libgtop-2.0.so:devel/libgtop \ + libharfbuzz.so:print/harfbuzz USES= compiler:c11 gettext-tools gmake gnome libtool pathfix \ pkgconfig tar:bzip2 xfce xorg -USE_GNOME= cairo glib20 gtk30 intltool +USE_GNOME= cairo gdkpixbuf2 glib20 gtk30 intltool USE_LDCONFIG= yes USE_XFCE= xfconf USE_XORG= ice sm x11 diff --git a/x11/libxfce4menu/distinfo b/x11/libxfce4menu/distinfo index d42ad719d279..d2eb686bb909 100644 --- a/x11/libxfce4menu/distinfo +++ b/x11/libxfce4menu/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1630881123 -SHA256 (xfce4/libxfce4ui-4.16.1.tar.bz2) = d96946ae5af6bf078dda415419e0021909f763ee0020b42f3e26f603e51585f6 -SIZE (xfce4/libxfce4ui-4.16.1.tar.bz2) = 785811 +TIMESTAMP = 1671097021 +SHA256 (xfce4/libxfce4ui-4.18.0.tar.bz2) = 532247c4387c17bb9ef94a73147039b8d013c3131c95cdbd2fa85fbcc848d06b +SIZE (xfce4/libxfce4ui-4.18.0.tar.bz2) = 896351 diff --git a/x11/libxfce4menu/files/patch-shortcuts-grabber-fix-PR27 b/x11/libxfce4menu/files/patch-shortcuts-grabber-fix-PR27 deleted file mode 100644 index c50922d4a68a..000000000000 --- a/x11/libxfce4menu/files/patch-shortcuts-grabber-fix-PR27 +++ /dev/null @@ -1,1324 +0,0 @@ -From 7c1e0e71899d13f75fe4177454656049d3f35d54 Mon Sep 17 00:00:00 2001 -From: Jan Ziak <0xe2.0x9a.0x9b@gmail.com> -Date: Mon, 4 Jan 2021 17:01:04 +0100 -Subject: [PATCH 1/5] shortcuts-grabber: Record xkb state group (Bug #33) - -XkbGroupForCoreState(xevent->xkey.state) returns 0 even after a keyboard -layout switch. Instead of using the XkbGroupForCoreState() function, this -patch watches for XkbStateNotify events from which it obtains the xkb state -group. - -Closes: https://gitlab.xfce.org/xfce/libxfce4ui/-/issues/33 -See also: https://gitlab.xfce.org/xfce/libxfce4ui/-/merge_requests/33 ---- - libxfce4kbd-private/xfce-shortcuts-grabber.c | 38 ++++++++++++++++---- - 1 file changed, 31 insertions(+), 7 deletions(-) - -diff --git a/libxfce4kbd-private/xfce-shortcuts-grabber.c b/libxfce4kbd-private/xfce-shortcuts-grabber.c -index 60ddfd7..9df45c3 100644 ---- libxfce4kbd-private/xfce-shortcuts-grabber.c -+++ libxfce4kbd-private/xfce-shortcuts-grabber.c -@@ -61,13 +61,14 @@ static void xfce_shortcuts_grabber_grab (XfceShortcutsGra - gboolean grab); - static GdkFilterReturn xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, - GdkEvent *event, -- XfceShortcutsGrabber *grabber); -+ gpointer data); - - - - struct _XfceShortcutsGrabberPrivate - { - GHashTable *keys; -+ gint xkbEventType, xkbStateGroup; - }; - - typedef enum -@@ -141,20 +142,26 @@ static void - xfce_shortcuts_grabber_constructed (GObject *object) - { - GdkDisplay *display; -+ Display *xdisplay; - GdkKeymap *keymap; - - XfceShortcutsGrabber *grabber = XFCE_SHORTCUTS_GRABBER (object); - - display = gdk_display_get_default (); -+ xdisplay = GDK_DISPLAY_XDISPLAY (display); - keymap = gdk_keymap_get_for_display (display); - g_signal_connect (keymap, "keys-changed", G_CALLBACK (xfce_shortcuts_grabber_keys_changed), - grabber); - -+ if (G_UNLIKELY (!XkbQueryExtension (xdisplay, 0, &grabber->priv->xkbEventType, 0, 0, 0))) -+ grabber->priv->xkbEventType = -1; -+ grabber->priv->xkbStateGroup = -1; -+ - /* Flush events before adding the event filter */ -- XAllowEvents (GDK_DISPLAY_XDISPLAY (display), AsyncBoth, CurrentTime); -+ XAllowEvents (xdisplay, AsyncBoth, CurrentTime); - - /* Add event filter */ -- gdk_window_add_filter (NULL, (GdkFilterFunc) xfce_shortcuts_grabber_event_filter, grabber); -+ gdk_window_add_filter (NULL, xfce_shortcuts_grabber_event_filter, grabber); - } - - -@@ -417,10 +424,11 @@ find_event_key (const gchar *shortcut, - - - static GdkFilterReturn --xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, -- GdkEvent *event, -- XfceShortcutsGrabber *grabber) -+xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, -+ GdkEvent *event, -+ gpointer data) - { -+ XfceShortcutsGrabber *const grabber = data; - struct EventKeyFindContext context; - GdkKeymap *keymap; - GdkModifierType consumed, modifiers; -@@ -434,6 +442,22 @@ xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, - - xevent = (XEvent *) gdk_xevent; - -+ if (xevent->type == grabber->priv->xkbEventType) -+ { -+ const XkbEvent *e = (const XkbEvent*) xevent; -+ TRACE ("xkb event: any.xkb_type=%d", e->any.xkb_type); -+ if (e->any.xkb_type == XkbStateNotify) -+ { -+ TRACE ("xkb event: any.xkb_type=XkbStateNotify, state.group=%d", e->state.group); -+ if (grabber->priv->xkbStateGroup != e->state.group) -+ { -+ grabber->priv->xkbStateGroup = e->state.group; -+ xfce_shortcuts_grabber_ungrab_all (grabber); -+ xfce_shortcuts_grabber_grab_all (grabber); -+ } -+ } -+ } -+ - if (xevent->type != KeyPress) - return GDK_FILTER_CONTINUE; - -@@ -450,7 +474,7 @@ xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, - - gdk_keymap_translate_keyboard_state (keymap, xevent->xkey.keycode, - modifiers, -- XkbGroupForCoreState (xevent->xkey.state), -+ grabber->priv->xkbStateGroup, - &keyval, NULL, NULL, &consumed); - - /* We want Alt + Print to be Alt + Print not SysReq. See bug #7897 */ --- -GitLab - - -From 5d34aac693e160de3d22d1700b89664dcac12394 Mon Sep 17 00:00:00 2001 -From: Jan Ziak <0xe2.0x9a.0x9b@gmail.com> -Date: Fri, 26 Feb 2021 05:27:16 +0100 -Subject: [PATCH 2/5] shortcuts: Fix a memory leak - ---- - libxfce4kbd-private/xfce-shortcuts-provider.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/libxfce4kbd-private/xfce-shortcuts-provider.c b/libxfce4kbd-private/xfce-shortcuts-provider.c -index b7f7a47..83ab6c0 100644 ---- libxfce4kbd-private/xfce-shortcuts-provider.c -+++ libxfce4kbd-private/xfce-shortcuts-provider.c -@@ -711,6 +711,7 @@ void - xfce_shortcuts_free (GList *shortcuts) - { - g_list_foreach (shortcuts, (GFunc) (void (*)(void)) xfce_shortcut_free, NULL); -+ g_list_free (shortcuts); - } - - --- -GitLab - - -From c18f068ab2bd69647af6519e389d76728c1f924e Mon Sep 17 00:00:00 2001 -From: Jan Ziak <0xe2.0x9a.0x9b@gmail.com> -Date: Fri, 26 Feb 2021 05:57:42 +0100 -Subject: [PATCH 3/5] shortcuts-grabber: Stop search when the first match is - found - ---- - libxfce4kbd-private/xfce-shortcuts-grabber.c | 14 ++++++-------- - 1 file changed, 6 insertions(+), 8 deletions(-) - -diff --git a/libxfce4kbd-private/xfce-shortcuts-grabber.c b/libxfce4kbd-private/xfce-shortcuts-grabber.c -index 9df45c3..61f8ef8 100644 ---- libxfce4kbd-private/xfce-shortcuts-grabber.c -+++ libxfce4kbd-private/xfce-shortcuts-grabber.c -@@ -391,10 +391,9 @@ xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber, - - struct EventKeyFindContext - { -- XfceShortcutsGrabber *grabber; -- GdkModifierType modifiers; -- guint keyval; -- const gchar *result; -+ GdkModifierType modifiers; -+ guint keyval; -+ const gchar *result; - }; - - -@@ -461,7 +460,6 @@ xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, - if (xevent->type != KeyPress) - return GDK_FILTER_CONTINUE; - -- context.grabber = grabber; - context.result = NULL; - timestamp = xevent->xkey.time; - -@@ -520,9 +518,9 @@ xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, - TRACE ("Looking for %s", raw_shortcut_name); - g_free (raw_shortcut_name); - -- g_hash_table_foreach (grabber->priv->keys, -- (GHFunc) (void (*)(void)) find_event_key, -- &context); -+ g_hash_table_find (grabber->priv->keys, -+ (GHRFunc) (void (*)(void)) find_event_key, -+ &context); - - if (G_LIKELY (context.result != NULL)) - /* We had a positive match */ --- -GitLab - - -From 51deff8231b94f040060f663bcdb1c65d090884e Mon Sep 17 00:00:00 2001 -From: Jan Ziak <0xe2.0x9a.0x9b@gmail.com> -Date: Fri, 26 Feb 2021 06:52:04 +0100 -Subject: [PATCH 4/5] shortcuts-grabber: Redesign shortcut regrabbing (Bug #33) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch hopes to fix shortcut grabbing issues related to keyboard -layouts while maintaining high performance. - -The implementation uses a new hash-table for tracking the keycodes grabbed -from the X server. The grabbed X11/Xorg keys are reference counted: -X11 XGrabKey() is called once per a keycode+modifiers combination and -X11 XUngrabKey() is called when the reference count of the combination -drops to zero. It is common for the reference counts to, for example, -reach the value of 4 if the user is using 4 keyboard layouts, in which -case the new implementation will use a single XGrabKey() call compared -to 4 such calls in previous implementations. - -The grab_all() function has been removed and has been replaced by an -optimized regrab_all() function which is more efficient than the sequence -ungrab_all()+grab_all(). - -Tested keyboard layouts: - - English - - English (Colemak) - - French (BÉPO) - - Slovak (QWERTY) - -Test environments: - - Arch Linux (FR-BÉPO) - - FreeBSD (basic testing) - - Gentoo Linux (EN, EN-Colemak, SK-QWERTY) - - Xubuntu (basic testing) - -Closes: https://gitlab.xfce.org/xfce/libxfce4ui/-/issues/33 ---- - libxfce4kbd-private/xfce-shortcuts-grabber.c | 598 ++++++++++++++----- - 1 file changed, 449 insertions(+), 149 deletions(-) - -diff --git a/libxfce4kbd-private/xfce-shortcuts-grabber.c b/libxfce4kbd-private/xfce-shortcuts-grabber.c -index 61f8ef8..1de5929 100644 ---- libxfce4kbd-private/xfce-shortcuts-grabber.c -+++ libxfce4kbd-private/xfce-shortcuts-grabber.c -@@ -54,11 +54,13 @@ static void xfce_shortcuts_grabber_constructed (GObject - static void xfce_shortcuts_grabber_finalize (GObject *object); - static void xfce_shortcuts_grabber_keys_changed (GdkKeymap *keymap, - XfceShortcutsGrabber *grabber); --static void xfce_shortcuts_grabber_grab_all (XfceShortcutsGrabber *grabber); -+static void xfce_shortcuts_grabber_regrab_all (XfceShortcutsGrabber *grabber); - static void xfce_shortcuts_grabber_ungrab_all (XfceShortcutsGrabber *grabber); - static void xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber, -+ XfceKey *key); -+static void xfce_shortcuts_grabber_ungrab (XfceShortcutsGrabber *grabber, - XfceKey *key, -- gboolean grab); -+ gboolean trace); - static GdkFilterReturn xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, - GdkEvent *event, - gpointer data); -@@ -67,25 +69,37 @@ static GdkFilterReturn xfce_shortcuts_grabber_event_filter (GdkXEvent - - struct _XfceShortcutsGrabberPrivate - { -+ /* Maps a shortcut string to a pointer to XfceKey */ - GHashTable *keys; -- gint xkbEventType, xkbStateGroup; --}; - --typedef enum --{ -- UNDEFINED_GRAB_STATE = 0, /* Initial value after g_new0(XfceKey) */ -- NOT_GRABBED, -- GRABBED, --} XfceKeyGrabState; -+ /* Maps an XfceXGrab to a reference count. -+ * The reference count tracks the number of shortcuts that grab the XfceXGrab. */ -+ GHashTable *grabbed_keycodes; -+ -+ gint xkbEventType, xkbStateGroup; -+}; - - struct _XfceKey - { - guint keyval; -- guint modifiers; -- GArray *keycodes; -- XfceKeyGrabState grab_state; -+ GdkModifierType modifiers; -+ -+ /* Information about how the key has been grabbed */ -+ guint n_keys; /* Equals 0 if the key isn't grabbed */ -+ GdkKeymapKey *keys; -+ GdkModifierType non_virtual_modifiers; -+ guint numlock_modifier; - }; - -+typedef struct -+{ -+ guint keycode; -+ GdkModifierType non_virtual_modifiers; -+ guint numlock_modifier; -+} XfceXGrab; -+ -+typedef guint XfceXGrabRefcount; -+ - - - G_DEFINE_TYPE (XfceShortcutsGrabber, xfce_shortcuts_grabber, G_TYPE_OBJECT) -@@ -117,6 +131,45 @@ xfce_shortcuts_grabber_class_init (XfceShortcutsGrabberClass *klass) - - - -+static void -+free_key (gpointer data) -+{ -+ XfceKey *key = data; -+ g_free (key->keys); -+ g_free (key); -+} -+ -+static gboolean -+xgrab_equal (gconstpointer data1, gconstpointer data2) -+{ -+ const XfceXGrab *a = data1; -+ const XfceXGrab *b = data2; -+ -+ if (a == b) -+ return TRUE; -+ -+ return a->keycode == b->keycode && -+ a->non_virtual_modifiers == b->non_virtual_modifiers && -+ a->numlock_modifier == b->numlock_modifier; -+} -+ -+static void -+xgrab_free (gpointer data) -+{ -+ XfceXGrab *g = data; -+ g_free (g); -+} -+ -+static guint -+xgrab_hash (gconstpointer data) -+{ -+ const XfceXGrab *g = data; -+ return g->keycode ^ g->non_virtual_modifiers ^ g->numlock_modifier; -+} -+ -+ -+ -+ - static void - xfce_shortcuts_grabber_init (XfceShortcutsGrabber *grabber) - { -@@ -124,7 +177,8 @@ xfce_shortcuts_grabber_init (XfceShortcutsGrabber *grabber) - GdkKeymap *keymap; - - grabber->priv = XFCE_SHORTCUTS_GRABBER_GET_PRIVATE (grabber); -- grabber->priv->keys = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); -+ grabber->priv->keys = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, free_key); -+ grabber->priv->grabbed_keycodes = g_hash_table_new_full (xgrab_hash, xgrab_equal, xgrab_free, g_free); - - /* Workaround: Make sure modmap is up to date - * There is possibly a bug in GTK+ where virtual modifiers are not -@@ -173,6 +227,7 @@ xfce_shortcuts_grabber_finalize (GObject *object) - - xfce_shortcuts_grabber_ungrab_all (grabber); - g_hash_table_unref (grabber->priv->keys); -+ g_hash_table_unref (grabber->priv->grabbed_keycodes); - - (*G_OBJECT_CLASS (xfce_shortcuts_grabber_parent_class)->finalize) (object); - } -@@ -187,29 +242,73 @@ xfce_shortcuts_grabber_keys_changed (GdkKeymap *keymap, - - TRACE ("Keys changed, regrabbing"); - -- xfce_shortcuts_grabber_grab_all (grabber); -+ xfce_shortcuts_grabber_regrab_all (grabber); - } - - - - static gboolean --grab_key (const gchar *shortcut, -- XfceKey *key, -- XfceShortcutsGrabber *grabber) -+xfce_shortcuts_grabber_xgrab (XfceXGrab g, gboolean grab) - { -- xfce_shortcuts_grabber_grab (grabber, key, TRUE); -- return FALSE; --} -+ GdkDisplay *display = gdk_display_get_default (); -+ Display *xdisplay = GDK_DISPLAY_XDISPLAY (display); -+ Window root_window; -+ guint k; -+ gboolean success = TRUE; -+ -+ /* Ignorable modifiers */ -+ const guint mod_masks [] = { -+ 0, -+ GDK_MOD2_MASK, -+ g.numlock_modifier | GDK_MOD2_MASK, -+ GDK_LOCK_MASK, -+ g.numlock_modifier | GDK_LOCK_MASK, -+ GDK_MOD5_MASK, -+ g.numlock_modifier | GDK_MOD5_MASK, -+ GDK_MOD2_MASK | GDK_LOCK_MASK, -+ g.numlock_modifier | GDK_MOD2_MASK | GDK_LOCK_MASK, -+ GDK_MOD2_MASK | GDK_MOD5_MASK, -+ g.numlock_modifier | GDK_MOD2_MASK | GDK_MOD5_MASK, -+ GDK_LOCK_MASK | GDK_MOD5_MASK, -+ g.numlock_modifier | GDK_LOCK_MASK | GDK_MOD5_MASK, -+ GDK_MOD2_MASK | GDK_LOCK_MASK | GDK_MOD5_MASK, -+ g.numlock_modifier | GDK_MOD2_MASK | GDK_LOCK_MASK | GDK_MOD5_MASK, -+ }; -+ -+ /* Retrieve the root window of the screen */ -+ root_window = GDK_WINDOW_XID (gdk_screen_get_root_window (gdk_display_get_default_screen (display))); -+ -+ TRACE ("%s keycode %u, non_virtual_modifiers 0x%x", -+ grab ? "Grabbing" : "Ungrabbing", -+ g.keycode, g.non_virtual_modifiers); - -+ gdk_x11_display_error_trap_push (display); - -+ for (k = 0; k < G_N_ELEMENTS (mod_masks); k++) -+ { -+ /* Take ignorable modifiers into account when grabbing/ungrabbing */ -+ if (grab) -+ XGrabKey (xdisplay, -+ g.keycode, -+ g.non_virtual_modifiers | mod_masks [k], -+ root_window, -+ False, GrabModeAsync, GrabModeAsync); -+ else -+ XUngrabKey (xdisplay, -+ g.keycode, -+ g.non_virtual_modifiers | mod_masks [k], -+ root_window); -+ } - --static void --xfce_shortcuts_grabber_grab_all (XfceShortcutsGrabber *grabber) --{ -- g_return_if_fail (XFCE_IS_SHORTCUTS_GRABBER (grabber)); -- g_hash_table_foreach (grabber->priv->keys, -- (GHFunc) (void (*)(void)) grab_key, -- grabber); -+ gdk_display_flush (display); -+ if (gdk_x11_display_error_trap_pop (display)) -+ { -+ g_warning ("Failed to %s keycode %u", -+ grab ? "grab" : "ungrab", g.keycode); -+ success = FALSE; -+ } -+ -+ return success; - } - - -@@ -219,7 +318,7 @@ ungrab_key (const gchar *shortcut, - XfceKey *key, - XfceShortcutsGrabber *grabber) - { -- xfce_shortcuts_grabber_grab (grabber, key, FALSE); -+ xfce_shortcuts_grabber_ungrab (grabber, key, TRUE); - return FALSE; - } - -@@ -236,155 +335,358 @@ xfce_shortcuts_grabber_ungrab_all (XfceShortcutsGrabber *grabber) - - - -+static gboolean -+get_entries_for_keyval (GdkKeymap *keymap, -+ guint keyval, -+ GdkKeymapKey **keys, -+ gint *n_keys) -+{ -+ /* Get all keys generating keyval */ -+ if (!gdk_keymap_get_entries_for_keyval (keymap, keyval, keys, n_keys)) -+ { -+ TRACE ("Got no keys for keyval"); -+ return FALSE; -+ } -+ -+ if (G_UNLIKELY (*n_keys <= 0)) -+ { -+ g_free (*keys); -+ return FALSE; -+ } -+ -+ return TRUE; -+} -+ -+ -+ -+static gboolean -+map_virtual_modifiers (GdkKeymap *keymap, -+ GdkModifierType virtual_modifiers, -+ GdkModifierType *non_virtual_modifiers) -+{ -+ /* Map virtual modifiers to non-virtual modifiers */ -+ GdkModifierType non_virtual = virtual_modifiers; -+ if (!gdk_keymap_map_virtual_modifiers (keymap, &non_virtual)) -+ return FALSE; -+ -+ if (non_virtual == virtual_modifiers && -+ (GDK_SUPER_MASK | GDK_HYPER_MASK | GDK_META_MASK) & non_virtual) -+ { -+ TRACE ("Failed to map virtual modifiers"); -+ return FALSE; -+ } -+ -+ *non_virtual_modifiers = non_virtual; -+ return TRUE; -+} -+ -+ -+ -+ - static void --xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber, -- XfceKey *key, -- gboolean grab) -+xfce_shortcuts_grabber_regrab_all (XfceShortcutsGrabber *grabber) - { -- GdkModifierType numlock_modifier; -- GdkKeymapKey *keys; -- GdkDisplay *display; -- GdkKeymap *keymap; -- gchar *shortcut_name; -- guint modifiers; -- guint k; -- gint i; -- gint j; -- gint n_keys; -- gint screens; -+ GdkDisplay *display; -+ Display *xdisplay; -+ GdkKeymap *keymap; -+ guint numlock_modifier; -+ GHashTable *grabbed_keycodes; -+ GHashTableIter iter; -+ gpointer hash_value; -+ guint n_already_grabbed = 0; -+ guint n_regrab = 0; -+ XfceKey **regrab; /* list of keys to re-grab */ -+ guint i; - - g_return_if_fail (XFCE_IS_SHORTCUTS_GRABBER (grabber)); -- g_return_if_fail (key != NULL); -- -- if (key->grab_state == (grab ? GRABBED : NOT_GRABBED)) { -- TRACE (grab ? "Key already grabbed" : "Key already ungrabbed"); -- return; -- } -- key->grab_state = UNDEFINED_GRAB_STATE; - - display = gdk_display_get_default (); -- screens = 1; -+ xdisplay = GDK_DISPLAY_XDISPLAY (display); - keymap = gdk_keymap_get_for_display (display); -+ numlock_modifier = XkbKeysymToModifiers (xdisplay, GDK_KEY_Num_Lock); -+ grabbed_keycodes = grabber->priv->grabbed_keycodes; -+ -+ regrab = g_malloc (g_hash_table_size (grabber->priv->keys) * sizeof (*regrab)); -+ -+ /* Phase 1: Ungrab all keys that need to be re-grabbed -+ * and collect them into the 'regrab' list */ -+ g_hash_table_iter_init (&iter, grabber->priv->keys); -+ while (g_hash_table_iter_next (&iter, NULL, &hash_value)) -+ { -+ XfceKey *const key = hash_value; -+ GdkKeymapKey *keys; -+ GdkModifierType non_virtual_modifiers; -+ gint n_keys; -+ gboolean already_grabbed; -+ -+ if (!map_virtual_modifiers (keymap, key->modifiers, &non_virtual_modifiers)) -+ continue; -+ if (!get_entries_for_keyval (keymap, key->keyval, &keys, &n_keys)) -+ continue; -+ -+ already_grabbed = TRUE; -+ if (key->n_keys == (guint) n_keys && -+ key->non_virtual_modifiers == non_virtual_modifiers && -+ key->numlock_modifier == numlock_modifier) -+ { -+ gint j; -+ for (j = 0; j < n_keys; j++) -+ if (memcmp (&key->keys[j], &keys[j], sizeof(*keys)) != 0) -+ { -+ already_grabbed = FALSE; -+ break; -+ } -+ } -+ else -+ already_grabbed = FALSE; -+ -+ if (already_grabbed) -+ { -+ n_already_grabbed++; -+ g_free (keys); -+ } -+ else -+ { -+ /* Undo current X11 grabs of the key */ -+ xfce_shortcuts_grabber_ungrab (grabber, key, FALSE); -+ -+ /* Set key->keys to the keycodes that need to be grabbed in phase 2 */ -+ if (G_UNLIKELY (key->keys)) -+ { -+ g_free (key->keys); -+ key->keys = NULL; -+ } -+ key->n_keys = n_keys; -+ if (n_keys != 0) -+ key->keys = keys; -+ else -+ g_free (keys); -+ key->non_virtual_modifiers = non_virtual_modifiers; -+ key->numlock_modifier = numlock_modifier; -+ -+ /* Remember to grab the key in phase 2 */ -+ regrab[n_regrab++] = key; -+ } -+ } - -- /* Map virtual modifiers to non-virtual modifiers */ -- modifiers = key->modifiers; -- gdk_keymap_map_virtual_modifiers (keymap, &modifiers); -+ TRACE ("n_already_grabbed=%u, n_regrab=%u", n_already_grabbed, n_regrab); -+ -+ /* Phase 2: Grab all keys that have been stored in the 'regrab' list */ -+ for (i = 0; i < n_regrab; i++) -+ { -+ XfceKey *const key = regrab[i]; -+ guint j; -+ -+#ifdef DEBUG_TRACE -+ gchar *shortcut_name = gtk_accelerator_name (key->keyval, key->non_virtual_modifiers); -+ TRACE (key->n_keys==0 ? "Grabbing %s" : "Regrabbing %s", shortcut_name); -+ TRACE (" key->keyval: %d", key->keyval); -+ TRACE (" key->modifiers: 0x%x", key->modifiers); -+ TRACE (" key->non_virtual_modifiers: 0x%x", key->non_virtual_modifiers); -+ TRACE (" key->n_keys: %d", key->n_keys); -+ g_free (shortcut_name); -+ shortcut_name = NULL; -+#endif - -- /* Debugging information */ -- shortcut_name = gtk_accelerator_name (key->keyval, modifiers); -+ /* Grab all hardware keys generating keyval */ -+ for (j = 0; j < key->n_keys;) -+ { -+ XfceXGrab g; -+ gpointer refcount; -+ -+ g.keycode = key->keys[j].keycode; -+ g.non_virtual_modifiers = key->non_virtual_modifiers; -+ g.numlock_modifier = key->numlock_modifier; -+ if (!g_hash_table_lookup_extended (grabbed_keycodes, &g, NULL, &refcount)) -+ { -+ if (xfce_shortcuts_grabber_xgrab (g, TRUE)) -+ { -+ XfceXGrab *g1 = g_new (XfceXGrab, 1); -+ XfceXGrabRefcount *refcount1 = g_new (XfceXGrabRefcount, 1); -+ *g1 = g; -+ *refcount1 = 1; -+ g_hash_table_insert (grabbed_keycodes, g1, refcount1); -+ j++; -+ } -+ else -+ /* Failed to grab key->keys[j], remove it from key->keys */ -+ key->keys[j] = key->keys[--key->n_keys]; -+ } -+ else -+ { -+ // 'g' has already been grabbed, increment its refcount only -+ XfceXGrabRefcount *refcount1 = refcount; -+ (*refcount1)++; -+ TRACE ("keycode %u, non_virtual_modifiers 0x%x: ++refcount = %u", -+ g.keycode, g.non_virtual_modifiers, *refcount1); -+ j++; -+ } -+ } -+ -+ if (key->n_keys == 0 && key->keys != NULL) -+ { -+ g_free (key->keys); -+ key->keys = NULL; -+ } -+ } - -- TRACE (grab ? "Grabbing %s" : "Ungrabbing %s", shortcut_name); -- TRACE ("Keyval: %d", key->keyval); -- TRACE ("Modifiers: 0x%x", modifiers); -+ g_free (regrab); -+} - -+ -+ -+static void -+xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber, XfceKey *key) -+{ -+ GdkDisplay *display; -+ Display *xdisplay; -+ GdkKeymap *keymap; -+ guint numlock_modifier; -+ GHashTable *grabbed_keycodes; -+ GdkKeymapKey *keys; -+ GdkModifierType non_virtual_modifiers; -+ gint i, n_keys; -+#ifdef DEBUG_TRACE -+ gchar *shortcut_name; -+#endif -+ -+ display = gdk_display_get_default (); -+ xdisplay = GDK_DISPLAY_XDISPLAY (display); -+ keymap = gdk_keymap_get_for_display (display); -+ numlock_modifier = XkbKeysymToModifiers (xdisplay, GDK_KEY_Num_Lock); -+ grabbed_keycodes = grabber->priv->grabbed_keycodes; -+ -+ if (!map_virtual_modifiers (keymap, key->modifiers, &non_virtual_modifiers)) -+ return; -+ if (!get_entries_for_keyval (keymap, key->keyval, &keys, &n_keys)) -+ return; -+ -+#ifdef DEBUG_TRACE -+ shortcut_name = gtk_accelerator_name (key->keyval, non_virtual_modifiers); -+ TRACE (key->n_keys==0 ? "Grabbing %s" : "Regrabbing %s", shortcut_name); -+ TRACE (" key->keyval: %d", key->keyval); -+ TRACE (" key->modifiers: 0x%x", key->modifiers); -+ TRACE (" non_virtual_modifiers: 0x%x", non_virtual_modifiers); -+ TRACE (" n_keys: %d", n_keys); - g_free (shortcut_name); -+ shortcut_name = NULL; -+#endif - -- if (modifiers == key->modifiers && -- (GDK_SUPER_MASK | GDK_HYPER_MASK | GDK_META_MASK) & modifiers) -+ /* Undo old grabs (just in case there are some old grabs) */ -+ if (G_UNLIKELY (key->n_keys != 0)) - { -- TRACE ("Failed to map virtual modifiers"); -- return; -+ g_warning ("keyval %u already grabbed", key->keyval); -+ xfce_shortcuts_grabber_ungrab (grabber, key, TRUE); - } - -- /* Get all keys generating keyval */ -- if (!gdk_keymap_get_entries_for_keyval (keymap,key->keyval, -- &keys, &n_keys)) -+ /* Grab all hardware keys generating keyval */ -+ for (i = 0; i < n_keys;) - { -- TRACE ("Got no keys for keyval"); -- return; -+ XfceXGrab g; -+ gpointer refcount; -+ -+ g.keycode = keys[i].keycode; -+ g.non_virtual_modifiers = non_virtual_modifiers; -+ g.numlock_modifier = numlock_modifier; -+ if (!g_hash_table_lookup_extended (grabbed_keycodes, &g, NULL, &refcount)) -+ { -+ if (xfce_shortcuts_grabber_xgrab (g, TRUE)) -+ { -+ XfceXGrab *g1 = g_new (XfceXGrab, 1); -+ XfceXGrabRefcount *refcount1 = g_new (XfceXGrabRefcount, 1); -+ *g1 = g; -+ *refcount1 = 1; -+ g_hash_table_insert (grabbed_keycodes, g1, refcount1); -+ TRACE ("[group %d] keycode %u, non_virtual_modifiers 0x%x: refcount := %u", -+ keys[i].group, g.keycode, g.non_virtual_modifiers, *refcount1); -+ i++; -+ } -+ else -+ /* Failed to grab keys[i], remove it from keys */ -+ keys[i] = keys[--n_keys]; -+ } -+ else -+ { -+ // 'g' has already been grabbed, increment its refcount only -+ XfceXGrabRefcount *refcount1 = refcount; -+ (*refcount1)++; -+ TRACE ("[group %d] keycode %u, non_virtual_modifiers 0x%x: ++refcount = %u", -+ keys[i].group, g.keycode, g.non_virtual_modifiers, *refcount1); -+ i++; -+ } - } - -- if (n_keys == 0) -- { -- g_free (keys); -+ /* Set key->keys to the list of keys that been succesfully grabbed */ -+ g_free (key->keys); -+ key->keys = NULL; -+ key->n_keys = n_keys; -+ if (n_keys != 0) -+ key->keys = keys; -+ else -+ g_free (keys); -+ key->non_virtual_modifiers = non_virtual_modifiers; -+ key->numlock_modifier = numlock_modifier; -+} - -- TRACE ("Got 0 keys for keyval"); -- return; -- } -+static void -+xfce_shortcuts_grabber_ungrab (XfceShortcutsGrabber *grabber, XfceKey *key, -+ gboolean trace) -+{ -+ GHashTable *grabbed_keycodes; -+ guint i; - -- numlock_modifier = -- XkbKeysymToModifiers (GDK_DISPLAY_XDISPLAY (display), GDK_KEY_Num_Lock); -+ grabbed_keycodes = grabber->priv->grabbed_keycodes; - -- key->grab_state = (grab ? GRABBED : NOT_GRABBED); -- for (i = 0; i < n_keys; i ++) -+ if (trace) - { -- /* Grab all hardware keys generating keyval */ -+ gchar *shortcut_name = gtk_accelerator_name (key->keyval, key->non_virtual_modifiers); -+ TRACE ("Ungrabbing %s", shortcut_name); -+ TRACE (" key->keyval: %d", key->keyval); -+ TRACE (" key->modifiers: 0x%x", key->modifiers); -+ TRACE (" key->non_virtual_modifiers: 0x%x", key->non_virtual_modifiers); -+ TRACE (" key->n_keys: %u", key->n_keys); -+ g_free (shortcut_name); -+ } - -- TRACE ("Keycode: %d", keys[i].keycode); -+ for (i = 0; i < key->n_keys; i++) -+ { -+ XfceXGrab g; -+ gpointer refcount; - -- for (j = 0; j < screens; j++) -+ g.keycode = key->keys[i].keycode; -+ g.non_virtual_modifiers = key->non_virtual_modifiers; -+ g.numlock_modifier = key->numlock_modifier; -+ if (G_LIKELY (g_hash_table_lookup_extended (grabbed_keycodes, &g, NULL, &refcount))) - { -- /* Do the grab on all screens */ -- Window root_window; -- -- /* Ignorable modifiers */ -- guint mod_masks [] = { -- 0, -- GDK_MOD2_MASK, -- numlock_modifier | GDK_MOD2_MASK, -- GDK_LOCK_MASK, -- numlock_modifier | GDK_LOCK_MASK, -- GDK_MOD5_MASK, -- numlock_modifier | GDK_MOD5_MASK, -- GDK_MOD2_MASK | GDK_LOCK_MASK, -- numlock_modifier | GDK_MOD2_MASK | GDK_LOCK_MASK, -- GDK_MOD2_MASK | GDK_MOD5_MASK, -- numlock_modifier | GDK_MOD2_MASK | GDK_MOD5_MASK, -- GDK_LOCK_MASK | GDK_MOD5_MASK, -- numlock_modifier | GDK_LOCK_MASK | GDK_MOD5_MASK, -- GDK_MOD2_MASK | GDK_LOCK_MASK | GDK_MOD5_MASK, -- numlock_modifier | GDK_MOD2_MASK | GDK_LOCK_MASK | GDK_MOD5_MASK, -- }; -- -- /* Retrieve the root window of the screen */ -- root_window = GDK_WINDOW_XID (gdk_screen_get_root_window (gdk_display_get_default_screen (display))); -- gdk_x11_display_error_trap_push (display); -- -- for (k = 0; k < G_N_ELEMENTS (mod_masks); k++) -+ XfceXGrabRefcount *refcount1 = refcount; -+ if (G_LIKELY (*refcount1 != 0)) - { -- /* Take ignorable modifiers into account when grabbing */ -- if (grab) -- XGrabKey (GDK_DISPLAY_XDISPLAY (display), -- keys[i].keycode, -- modifiers | mod_masks [k], -- root_window, -- False, -- GrabModeAsync, -- GrabModeAsync); -- else -+ (*refcount1)--; -+ if (trace) -+ TRACE ("[group %d] keycode %u, non_virtual_modifiers 0x%x: --refcount = %u", -+ key->keys[i].group, g.keycode, g.non_virtual_modifiers, *refcount1); -+ if(*refcount1 == 0) - { -- if (i >= (gint) key->keycodes->len) -- break; -- XUngrabKey (GDK_DISPLAY_XDISPLAY (display), -- g_array_index (key->keycodes, guint, i), -- modifiers | mod_masks [k], -- root_window); -+ xfce_shortcuts_grabber_xgrab (g, FALSE); -+ g_hash_table_remove (grabbed_keycodes, &g); - } - } -- -- gdk_display_flush (display); -- -- if (gdk_x11_display_error_trap_pop (display)) -+ else - { -- TRACE (grab ? "Failed to grab" : "Failed to ungrab"); -- key->grab_state = UNDEFINED_GRAB_STATE; -+ g_warning ("corrupted refcount"); - } - } -- /* Remember the old keycode, as we need it to ungrab. */ -- if (grab) -- g_array_append_val (key->keycodes, keys[i].keycode); - else -- g_array_index (key->keycodes, guint, i) = UINT_MAX; -- } -- -- /* Cleanup elements containing UINT_MAX from the key->keycodes array */ -- for (i = key->keycodes->len - 1; i >= 0; i --) -- { -- if (g_array_index (key->keycodes, guint, i) == UINT_MAX) -- g_array_remove_index_fast (key->keycodes, i); -+ { -+ g_warning ("corrupted hashtable"); -+ } - } - -- g_free (keys); -+ g_free (key->keys); -+ key->keys = NULL; -+ key->n_keys = 0; -+ key->non_virtual_modifiers = 0; -+ key->numlock_modifier = 0; - } - - -@@ -451,8 +753,7 @@ xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, - if (grabber->priv->xkbStateGroup != e->state.group) - { - grabber->priv->xkbStateGroup = e->state.group; -- xfce_shortcuts_grabber_ungrab_all (grabber); -- xfce_shortcuts_grabber_grab_all (grabber); -+ xfce_shortcuts_grabber_regrab_all (grabber); - } - } - } -@@ -553,19 +854,18 @@ xfce_shortcuts_grabber_add (XfceShortcutsGrabber *grabber, - g_return_if_fail (shortcut != NULL); - - key = g_new0 (XfceKey, 1); -- key->keycodes = g_array_new (FALSE, TRUE, sizeof (guint)); - - gtk_accelerator_parse (shortcut, &key->keyval, &key->modifiers); -+ TRACE ("parse %s -> keyval=0x%x, modifiers=0x%x", shortcut, key->keyval, key->modifiers); - - if (G_LIKELY (key->keyval != 0)) - { -- xfce_shortcuts_grabber_grab (grabber, key, TRUE); -+ xfce_shortcuts_grabber_grab (grabber, key); - g_hash_table_insert (grabber->priv->keys, g_strdup (shortcut), key); - } - else - { -- g_array_free (key->keycodes, TRUE); -- g_free (key); -+ free_key (key); - } - } - -@@ -584,7 +884,7 @@ xfce_shortcuts_grabber_remove (XfceShortcutsGrabber *grabber, - - if (G_LIKELY (key != NULL)) - { -- xfce_shortcuts_grabber_grab (grabber, key, FALSE); -+ xfce_shortcuts_grabber_ungrab (grabber, key, TRUE); - g_hash_table_remove (grabber->priv->keys, shortcut); - } - } --- -GitLab - - -From 609b60be1ea7db9140a1d96ad4dccf7d9512b7fd Mon Sep 17 00:00:00 2001 -From: Jan Ziak <0xe2.0x9a.0x9b@gmail.com> -Date: Sat, 27 Feb 2021 17:34:41 +0100 -Subject: [PATCH 5/5] shortcuts-grabber: Filter grabbing by key group - -Closes: https://gitlab.xfce.org/xfce/libxfce4ui/-/issues/33 ---- - libxfce4kbd-private/xfce-shortcuts-grabber.c | 162 ++++++++++++------- - 1 file changed, 106 insertions(+), 56 deletions(-) - -diff --git a/libxfce4kbd-private/xfce-shortcuts-grabber.c b/libxfce4kbd-private/xfce-shortcuts-grabber.c -index 1de5929..4d21e4a 100644 ---- libxfce4kbd-private/xfce-shortcuts-grabber.c -+++ libxfce4kbd-private/xfce-shortcuts-grabber.c -@@ -59,8 +59,7 @@ static void xfce_shortcuts_grabber_ungrab_all (XfceShortcutsGra - static void xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber, - XfceKey *key); - static void xfce_shortcuts_grabber_ungrab (XfceShortcutsGrabber *grabber, -- XfceKey *key, -- gboolean trace); -+ XfceKey *key); - static GdkFilterReturn xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, - GdkEvent *event, - gpointer data); -@@ -318,7 +317,7 @@ ungrab_key (const gchar *shortcut, - XfceKey *key, - XfceShortcutsGrabber *grabber) - { -- xfce_shortcuts_grabber_ungrab (grabber, key, TRUE); -+ xfce_shortcuts_grabber_ungrab (grabber, key); - return FALSE; - } - -@@ -337,23 +336,67 @@ xfce_shortcuts_grabber_ungrab_all (XfceShortcutsGrabber *grabber) - - static gboolean - get_entries_for_keyval (GdkKeymap *keymap, -+ gint group, - guint keyval, - GdkKeymapKey **keys, -- gint *n_keys) -+ guint *n_keys) - { -- /* Get all keys generating keyval */ -- if (!gdk_keymap_get_entries_for_keyval (keymap, keyval, keys, n_keys)) -+ GdkKeymapKey *keys1; -+ gint n_keys1; -+ -+ *keys = NULL; -+ *n_keys = 0; -+ -+ /* Get all keys generating keyval */ -+ if (!gdk_keymap_get_entries_for_keyval (keymap, keyval, &keys1, &n_keys1)) - { - TRACE ("Got no keys for keyval"); - return FALSE; - } - -- if (G_UNLIKELY (*n_keys <= 0)) -+ if (G_UNLIKELY (n_keys1 <= 0)) - { -- g_free (*keys); -+ g_free (keys1); - return FALSE; - } - -+ /* Filter keys by group */ -+ { -+ gboolean group0_only; -+ gint i, n_matches; -+ -+ /* For keys such as F12: -+ * keys1[i].group is always 0 (even if n_keys1 >= 2) -+ * and thus n_matches will be zero if group != 0 */ -+ -+ group0_only = TRUE; -+ n_matches = 0; -+ for (i = 0; i < n_keys1; i++) -+ { -+ group0_only &= (keys1[i].group == 0) ? TRUE : FALSE; -+ if (keys1[i].group == group) -+ n_matches++; -+ } -+ -+ if (!group0_only || n_matches != 0) -+ { -+ /* Remove keys that do not match the group*/ -+ for (i = 0; i < n_keys1;) -+ if (keys1[i].group == group) -+ i++; -+ else -+ keys1[i] = keys1[--n_keys1]; -+ } -+ } -+ -+ if (G_UNLIKELY (n_keys1 == 0)) -+ { -+ g_free (keys1); -+ keys1 = NULL; -+ } -+ -+ *keys = keys1; -+ *n_keys = n_keys1; - return TRUE; - } - -@@ -397,6 +440,7 @@ xfce_shortcuts_grabber_regrab_all (XfceShortcutsGrabber *grabber) - guint n_regrab = 0; - XfceKey **regrab; /* list of keys to re-grab */ - guint i; -+ gint group; - - g_return_if_fail (XFCE_IS_SHORTCUTS_GRABBER (grabber)); - -@@ -405,6 +449,9 @@ xfce_shortcuts_grabber_regrab_all (XfceShortcutsGrabber *grabber) - keymap = gdk_keymap_get_for_display (display); - numlock_modifier = XkbKeysymToModifiers (xdisplay, GDK_KEY_Num_Lock); - grabbed_keycodes = grabber->priv->grabbed_keycodes; -+ group = grabber->priv->xkbStateGroup; -+ if (G_UNLIKELY (group == -1)) -+ group = 0; - - regrab = g_malloc (g_hash_table_size (grabber->priv->keys) * sizeof (*regrab)); - -@@ -416,20 +463,20 @@ xfce_shortcuts_grabber_regrab_all (XfceShortcutsGrabber *grabber) - XfceKey *const key = hash_value; - GdkKeymapKey *keys; - GdkModifierType non_virtual_modifiers; -- gint n_keys; -+ guint n_keys; - gboolean already_grabbed; - - if (!map_virtual_modifiers (keymap, key->modifiers, &non_virtual_modifiers)) - continue; -- if (!get_entries_for_keyval (keymap, key->keyval, &keys, &n_keys)) -+ if (!get_entries_for_keyval (keymap, group, key->keyval, &keys, &n_keys)) - continue; - - already_grabbed = TRUE; -- if (key->n_keys == (guint) n_keys && -+ if (key->n_keys == n_keys && - key->non_virtual_modifiers == non_virtual_modifiers && - key->numlock_modifier == numlock_modifier) - { -- gint j; -+ guint j; - for (j = 0; j < n_keys; j++) - if (memcmp (&key->keys[j], &keys[j], sizeof(*keys)) != 0) - { -@@ -448,7 +495,8 @@ xfce_shortcuts_grabber_regrab_all (XfceShortcutsGrabber *grabber) - else - { - /* Undo current X11 grabs of the key */ -- xfce_shortcuts_grabber_ungrab (grabber, key, FALSE); -+ if (key->n_keys != 0) -+ xfce_shortcuts_grabber_ungrab (grabber, key); - - /* Set key->keys to the keycodes that need to be grabbed in phase 2 */ - if (G_UNLIKELY (key->keys)) -@@ -465,7 +513,8 @@ xfce_shortcuts_grabber_regrab_all (XfceShortcutsGrabber *grabber) - key->numlock_modifier = numlock_modifier; - - /* Remember to grab the key in phase 2 */ -- regrab[n_regrab++] = key; -+ if (n_keys != 0) -+ regrab[n_regrab++] = key; - } - } - -@@ -478,14 +527,15 @@ xfce_shortcuts_grabber_regrab_all (XfceShortcutsGrabber *grabber) - guint j; - - #ifdef DEBUG_TRACE -- gchar *shortcut_name = gtk_accelerator_name (key->keyval, key->non_virtual_modifiers); -- TRACE (key->n_keys==0 ? "Grabbing %s" : "Regrabbing %s", shortcut_name); -- TRACE (" key->keyval: %d", key->keyval); -- TRACE (" key->modifiers: 0x%x", key->modifiers); -- TRACE (" key->non_virtual_modifiers: 0x%x", key->non_virtual_modifiers); -- TRACE (" key->n_keys: %d", key->n_keys); -- g_free (shortcut_name); -- shortcut_name = NULL; -+ { -+ gchar *shortcut_name = gtk_accelerator_name (key->keyval, key->non_virtual_modifiers); -+ TRACE (key->n_keys==0 ? "Grabbing %s" : "Regrabbing %s", shortcut_name); -+ TRACE (" key->keyval: %d", key->keyval); -+ TRACE (" key->modifiers: 0x%x", key->modifiers); -+ TRACE (" key->non_virtual_modifiers: 0x%x", key->non_virtual_modifiers); -+ TRACE (" key->n_keys: %u", key->n_keys); -+ g_free (shortcut_name); -+ } - #endif - - /* Grab all hardware keys generating keyval */ -@@ -545,38 +595,40 @@ xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber, XfceKey *key) - GHashTable *grabbed_keycodes; - GdkKeymapKey *keys; - GdkModifierType non_virtual_modifiers; -- gint i, n_keys; --#ifdef DEBUG_TRACE -- gchar *shortcut_name; --#endif -+ guint i, n_keys; -+ gint group; - - display = gdk_display_get_default (); - xdisplay = GDK_DISPLAY_XDISPLAY (display); - keymap = gdk_keymap_get_for_display (display); - numlock_modifier = XkbKeysymToModifiers (xdisplay, GDK_KEY_Num_Lock); - grabbed_keycodes = grabber->priv->grabbed_keycodes; -+ group = grabber->priv->xkbStateGroup; -+ if (G_UNLIKELY (group == -1)) -+ group = 0; - - if (!map_virtual_modifiers (keymap, key->modifiers, &non_virtual_modifiers)) - return; -- if (!get_entries_for_keyval (keymap, key->keyval, &keys, &n_keys)) -+ if (!get_entries_for_keyval (keymap, group, key->keyval, &keys, &n_keys)) - return; - - #ifdef DEBUG_TRACE -- shortcut_name = gtk_accelerator_name (key->keyval, non_virtual_modifiers); -- TRACE (key->n_keys==0 ? "Grabbing %s" : "Regrabbing %s", shortcut_name); -- TRACE (" key->keyval: %d", key->keyval); -- TRACE (" key->modifiers: 0x%x", key->modifiers); -- TRACE (" non_virtual_modifiers: 0x%x", non_virtual_modifiers); -- TRACE (" n_keys: %d", n_keys); -- g_free (shortcut_name); -- shortcut_name = NULL; -+ { -+ char *shortcut_name = gtk_accelerator_name (key->keyval, non_virtual_modifiers); -+ TRACE (key->n_keys==0 ? "Grabbing %s" : "Regrabbing %s", shortcut_name); -+ TRACE (" key->keyval: %d", key->keyval); -+ TRACE (" key->modifiers: 0x%x", key->modifiers); -+ TRACE (" non_virtual_modifiers: 0x%x", non_virtual_modifiers); -+ TRACE (" n_keys: %u", n_keys); -+ g_free (shortcut_name); -+ } - #endif - - /* Undo old grabs (just in case there are some old grabs) */ - if (G_UNLIKELY (key->n_keys != 0)) - { - g_warning ("keyval %u already grabbed", key->keyval); -- xfce_shortcuts_grabber_ungrab (grabber, key, TRUE); -+ xfce_shortcuts_grabber_ungrab (grabber, key); - } - - /* Grab all hardware keys generating keyval */ -@@ -597,7 +649,7 @@ xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber, XfceKey *key) - *g1 = g; - *refcount1 = 1; - g_hash_table_insert (grabbed_keycodes, g1, refcount1); -- TRACE ("[group %d] keycode %u, non_virtual_modifiers 0x%x: refcount := %u", -+ TRACE ("group %d, keycode %u, non_virtual_modifiers 0x%x: refcount := %u", - keys[i].group, g.keycode, g.non_virtual_modifiers, *refcount1); - i++; - } -@@ -610,7 +662,7 @@ xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber, XfceKey *key) - // 'g' has already been grabbed, increment its refcount only - XfceXGrabRefcount *refcount1 = refcount; - (*refcount1)++; -- TRACE ("[group %d] keycode %u, non_virtual_modifiers 0x%x: ++refcount = %u", -+ TRACE ("group %d, keycode %u, non_virtual_modifiers 0x%x: ++refcount = %u", - keys[i].group, g.keycode, g.non_virtual_modifiers, *refcount1); - i++; - } -@@ -629,24 +681,24 @@ xfce_shortcuts_grabber_grab (XfceShortcutsGrabber *grabber, XfceKey *key) - } - - static void --xfce_shortcuts_grabber_ungrab (XfceShortcutsGrabber *grabber, XfceKey *key, -- gboolean trace) -+xfce_shortcuts_grabber_ungrab (XfceShortcutsGrabber *grabber, XfceKey *key) - { - GHashTable *grabbed_keycodes; - guint i; - - grabbed_keycodes = grabber->priv->grabbed_keycodes; - -- if (trace) -- { -- gchar *shortcut_name = gtk_accelerator_name (key->keyval, key->non_virtual_modifiers); -- TRACE ("Ungrabbing %s", shortcut_name); -- TRACE (" key->keyval: %d", key->keyval); -- TRACE (" key->modifiers: 0x%x", key->modifiers); -- TRACE (" key->non_virtual_modifiers: 0x%x", key->non_virtual_modifiers); -- TRACE (" key->n_keys: %u", key->n_keys); -- g_free (shortcut_name); -- } -+#ifdef DEBUG_TRACE -+ { -+ gchar *shortcut_name = gtk_accelerator_name (key->keyval, key->non_virtual_modifiers); -+ TRACE ("Ungrabbing %s", shortcut_name); -+ TRACE (" key->keyval: %d", key->keyval); -+ TRACE (" key->modifiers: 0x%x", key->modifiers); -+ TRACE (" key->non_virtual_modifiers: 0x%x", key->non_virtual_modifiers); -+ TRACE (" key->n_keys: %u", key->n_keys); -+ g_free (shortcut_name); -+ } -+#endif - - for (i = 0; i < key->n_keys; i++) - { -@@ -662,9 +714,8 @@ xfce_shortcuts_grabber_ungrab (XfceShortcutsGrabber *grabber, XfceKey *key, - if (G_LIKELY (*refcount1 != 0)) - { - (*refcount1)--; -- if (trace) -- TRACE ("[group %d] keycode %u, non_virtual_modifiers 0x%x: --refcount = %u", -- key->keys[i].group, g.keycode, g.non_virtual_modifiers, *refcount1); -+ TRACE ("group %d, keycode %u, non_virtual_modifiers 0x%x: --refcount = %u", -+ key->keys[i].group, g.keycode, g.non_virtual_modifiers, *refcount1); - if(*refcount1 == 0) - { - xfce_shortcuts_grabber_xgrab (g, FALSE); -@@ -746,12 +797,11 @@ xfce_shortcuts_grabber_event_filter (GdkXEvent *gdk_xevent, - if (xevent->type == grabber->priv->xkbEventType) - { - const XkbEvent *e = (const XkbEvent*) xevent; -- TRACE ("xkb event: any.xkb_type=%d", e->any.xkb_type); - if (e->any.xkb_type == XkbStateNotify) - { -- TRACE ("xkb event: any.xkb_type=XkbStateNotify, state.group=%d", e->state.group); - if (grabber->priv->xkbStateGroup != e->state.group) - { -+ TRACE ("xkb event: any.xkb_type=XkbStateNotify, state.group=%d", e->state.group); - grabber->priv->xkbStateGroup = e->state.group; - xfce_shortcuts_grabber_regrab_all (grabber); - } -@@ -884,7 +934,7 @@ xfce_shortcuts_grabber_remove (XfceShortcutsGrabber *grabber, - - if (G_LIKELY (key != NULL)) - { -- xfce_shortcuts_grabber_ungrab (grabber, key, TRUE); -+ xfce_shortcuts_grabber_ungrab (grabber, key); - g_hash_table_remove (grabber->priv->keys, shortcut); - } - } --- -GitLab - diff --git a/x11/libxfce4menu/pkg-plist b/x11/libxfce4menu/pkg-plist index a28920ed01f5..5e17f2fbbb65 100644 --- a/x11/libxfce4menu/pkg-plist +++ b/x11/libxfce4menu/pkg-plist @@ -1,6 +1,8 @@ bin/xfce4-about etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml include/xfce4/libxfce4kbd-private-3/libxfce4kbd-private/xfce-shortcut-dialog.h +include/xfce4/libxfce4kbd-private-3/libxfce4kbd-private/xfce-shortcuts-editor-dialog.h +include/xfce4/libxfce4kbd-private-3/libxfce4kbd-private/xfce-shortcuts-editor.h include/xfce4/libxfce4kbd-private-3/libxfce4kbd-private/xfce-shortcuts-grabber.h include/xfce4/libxfce4kbd-private-3/libxfce4kbd-private/xfce-shortcuts-provider.h include/xfce4/libxfce4kbd-private-3/libxfce4kbd-private/xfce-shortcuts-xfwm4.h @@ -41,6 +43,7 @@ share/icons/hicolor/scalable/apps/xfce4-logo.svg %%NLS%%share/locale/am/LC_MESSAGES/libxfce4ui.mo %%NLS%%share/locale/ar/LC_MESSAGES/libxfce4ui.mo %%NLS%%share/locale/ast/LC_MESSAGES/libxfce4ui.mo +%%NLS%%share/locale/az/LC_MESSAGES/libxfce4ui.mo %%NLS%%share/locale/be/LC_MESSAGES/libxfce4ui.mo %%NLS%%share/locale/bg/LC_MESSAGES/libxfce4ui.mo %%NLS%%share/locale/bn/LC_MESSAGES/libxfce4ui.mo diff --git a/x11/libxfce4util/Makefile b/x11/libxfce4util/Makefile index 7bbc76d6f20e..b2dc9a8f19de 100644 --- a/x11/libxfce4util/Makefile +++ b/x11/libxfce4util/Makefile @@ -1,5 +1,5 @@ PORTNAME= libxfce4util -PORTVERSION= 4.16.0 +PORTVERSION= 4.18.0 CATEGORIES= x11 xfce MASTER_SITES= XFCE DIST_SUBDIR= xfce4 diff --git a/x11/libxfce4util/distinfo b/x11/libxfce4util/distinfo index 53ac743f6d7f..4929bac7c7e7 100644 --- a/x11/libxfce4util/distinfo +++ b/x11/libxfce4util/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1608682260 -SHA256 (xfce4/libxfce4util-4.16.0.tar.bz2) = 60598d745d1fc81ff5ad3cecc3a8d1b85990dd22023e7743f55abd87d8b55b83 -SIZE (xfce4/libxfce4util-4.16.0.tar.bz2) = 508328 +TIMESTAMP = 1671097440 +SHA256 (xfce4/libxfce4util-4.18.0.tar.bz2) = 1157ca717fd3dd1da7724a6432a4fb24af9cd922f738e971fd1fd36dfaeac3c9 +SIZE (xfce4/libxfce4util-4.18.0.tar.bz2) = 511384 diff --git a/x11/libxfce4util/pkg-descr b/x11/libxfce4util/pkg-descr index 7c7cf5e63cde..39188c733c06 100644 --- a/x11/libxfce4util/pkg-descr +++ b/x11/libxfce4util/pkg-descr @@ -1 +1,2 @@ -Xfce 4 library providing basic utilities. +libxfce4util is used to share commonly used non-GTK utilities among +the Xfce applications. diff --git a/x11/libxfce4util/pkg-plist b/x11/libxfce4util/pkg-plist index e21e7933bd3f..1f693701919c 100644 --- a/x11/libxfce4util/pkg-plist +++ b/x11/libxfce4util/pkg-plist @@ -3,6 +3,7 @@ include/xfce4/libxfce4util/libxfce4util.h include/xfce4/libxfce4util/xfce-debug.h include/xfce4/libxfce4util/xfce-fileutils.h include/xfce4/libxfce4util/xfce-generics.h +include/xfce4/libxfce4util/xfce-gio-extensions.h include/xfce4/libxfce4util/xfce-i18n.h include/xfce4/libxfce4util/xfce-kiosk.h include/xfce4/libxfce4util/xfce-license.h @@ -10,6 +11,7 @@ include/xfce4/libxfce4util/xfce-miscutils.h include/xfce4/libxfce4util/xfce-posix-signal-handler.h include/xfce4/libxfce4util/xfce-rc.h include/xfce4/libxfce4util/xfce-resource.h +include/xfce4/libxfce4util/xfce-string.h include/xfce4/libxfce4util/xfce-utf8.h %%GIR%%lib/girepository-1.0/Libxfce4util-1.0.typelib lib/libxfce4util.so @@ -21,6 +23,7 @@ sbin/xfce4-kiosk-query %%NLS%%share/locale/am/LC_MESSAGES/libxfce4util.mo %%NLS%%share/locale/ar/LC_MESSAGES/libxfce4util.mo %%NLS%%share/locale/ast/LC_MESSAGES/libxfce4util.mo +%%NLS%%share/locale/az/LC_MESSAGES/libxfce4util.mo %%NLS%%share/locale/be/LC_MESSAGES/libxfce4util.mo %%NLS%%share/locale/bg/LC_MESSAGES/libxfce4util.mo %%NLS%%share/locale/bn/LC_MESSAGES/libxfce4util.mo @@ -50,6 +53,7 @@ sbin/xfce4-kiosk-query %%NLS%%share/locale/is/LC_MESSAGES/libxfce4util.mo %%NLS%%share/locale/it/LC_MESSAGES/libxfce4util.mo %%NLS%%share/locale/ja/LC_MESSAGES/libxfce4util.mo +%%NLS%%share/locale/ka/LC_MESSAGES/libxfce4util.mo %%NLS%%share/locale/kk/LC_MESSAGES/libxfce4util.mo %%NLS%%share/locale/ko/LC_MESSAGES/libxfce4util.mo %%NLS%%share/locale/lt/LC_MESSAGES/libxfce4util.mo diff --git a/x11/xfce4-conf/Makefile b/x11/xfce4-conf/Makefile index 28bf9668c797..0f183f5d2bb6 100644 --- a/x11/xfce4-conf/Makefile +++ b/x11/xfce4-conf/Makefile @@ -1,5 +1,5 @@ PORTNAME= xfce4-conf -PORTVERSION= 4.16.0 +PORTVERSION= 4.18.0 CATEGORIES= x11 xfce MASTER_SITES= XFCE DISTNAME= xfconf-${DISTVERSIONFULL} diff --git a/x11/xfce4-conf/distinfo b/x11/xfce4-conf/distinfo index 092fcdf08a05..292ad275909c 100644 --- a/x11/xfce4-conf/distinfo +++ b/x11/xfce4-conf/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1608682404 -SHA256 (xfce4/xfconf-4.16.0.tar.bz2) = 652a119007c67d9ba6c0bc7a740c923d33f32d03dc76dfc7ba682584e72a5425 -SIZE (xfce4/xfconf-4.16.0.tar.bz2) = 634858 +TIMESTAMP = 1671097854 +SHA256 (xfce4/xfconf-4.18.0.tar.bz2) = 2e8c50160bf800a807aea094fc9dad81f9f361f42db56607508ed5b4855d2906 +SIZE (xfce4/xfconf-4.18.0.tar.bz2) = 625755 diff --git a/x11/xfce4-conf/pkg-descr b/x11/xfce4-conf/pkg-descr index 7aa95bc79d6e..aced1894ccc3 100644 --- a/x11/xfce4-conf/pkg-descr +++ b/x11/xfce4-conf/pkg-descr @@ -1 +1,2 @@ -D-Bus-based configuration storage system. +Xfconf is a flexible, easy-to-use configuration management system +for the Xfce desktop. diff --git a/x11/xfce4-conf/pkg-plist b/x11/xfce4-conf/pkg-plist index ec744d9de765..89aa9e5c95bf 100644 --- a/x11/xfce4-conf/pkg-plist +++ b/x11/xfce4-conf/pkg-plist @@ -32,6 +32,7 @@ share/dbus-1/services/org.xfce.Xfconf.service %%NLS%%share/locale/fr/LC_MESSAGES/xfconf.mo %%NLS%%share/locale/gl/LC_MESSAGES/xfconf.mo %%NLS%%share/locale/he/LC_MESSAGES/xfconf.mo +%%NLS%%share/locale/hi/LC_MESSAGES/xfconf.mo %%NLS%%share/locale/hr/LC_MESSAGES/xfconf.mo %%NLS%%share/locale/hu/LC_MESSAGES/xfconf.mo %%NLS%%share/locale/hy_AM/LC_MESSAGES/xfconf.mo @@ -40,6 +41,7 @@ share/dbus-1/services/org.xfce.Xfconf.service %%NLS%%share/locale/is/LC_MESSAGES/xfconf.mo %%NLS%%share/locale/it/LC_MESSAGES/xfconf.mo %%NLS%%share/locale/ja/LC_MESSAGES/xfconf.mo +%%NLS%%share/locale/kab/LC_MESSAGES/xfconf.mo %%NLS%%share/locale/kk/LC_MESSAGES/xfconf.mo %%NLS%%share/locale/ko/LC_MESSAGES/xfconf.mo %%NLS%%share/locale/lt/LC_MESSAGES/xfconf.mo diff --git a/x11/xfce4-goodies/Makefile b/x11/xfce4-goodies/Makefile index 71298137d90b..4471f20fe34e 100644 --- a/x11/xfce4-goodies/Makefile +++ b/x11/xfce4-goodies/Makefile @@ -1,6 +1,5 @@ PORTNAME= xfce4-goodies -PORTVERSION= 4.16 -PORTREVISION= 1 +PORTVERSION= 4.18 CATEGORIES= x11 MAINTAINER= xfce@FreeBSD.org |