diff --git a/flameshot/APKBUILD b/flameshot/APKBUILD deleted file mode 100644 index 1f6a49a..0000000 --- a/flameshot/APKBUILD +++ /dev/null @@ -1,47 +0,0 @@ -# Contributor: Leo -# Maintainer: -pkgname=flameshot -pkgver=0.420.420 -pkgrel=0 -pkgdesc="Featureful screenshot app" -options="!check" # No test suite -url="https://github.com/lupoDharkael/flameshot" -arch="all" -license="GPL-3.0-or-later" -depends="qt5-qtsvg" -makedepends="cmake qt5-qtsvg-dev qt5-qttools-dev" -subpackages="$pkgname-lang $pkgname-bash-completion $pkgname-zsh-completion $pkgname-doc" -source="$pkgname-master.tar.gz::https://github.com/lupoDharkael/flameshot/archive/master.tar.gz - " -langdir="/usr/share/flameshot/translations" - -# XXX: Temporarily allow textrels on riscv64. -[ "$CARCH" = "riscv64" ] && options="$options textrels" - -build() { - cd flameshot-master || true - if [ "$CBUILD" != "$CHOST" ]; then - CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" - fi - cmake -B build \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_BUILD_TYPE=None \ - -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ - $CMAKE_CROSSOPTS - make -C build -} - -check() { - cd flameshot-master || true - make -C build test -} - -package() { - cd src/flameshot-master || true - pwd - make -C build DESTDIR="$pkgdir" install -} - -sha512sums=" -97400434f940d85a3260fbbb0ffb4fc6758330c646fc26f22532def58cd9d413bac14f203df289a564c27bb5c14eaf06db4a65020138f944723d70103c3f6418 flameshot-master.tar.gz -" diff --git a/gtk+3.0-xdg-decoration/10-Revert-gdkseatdefault-Grab-touch-events-where-applic.patch b/gtk+3.0-xdg-decoration/10-Revert-gdkseatdefault-Grab-touch-events-where-applic.patch deleted file mode 100644 index 22517a7..0000000 --- a/gtk+3.0-xdg-decoration/10-Revert-gdkseatdefault-Grab-touch-events-where-applic.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/gdk/gdkseatdefault.c b/gdk/gdkseatdefault.c -index ce4bdc82d2..9650f4b121 100644 ---- a/gdk/gdkseatdefault.c -+++ b/gdk/gdkseatdefault.c -@@ -134,22 +134,9 @@ gdk_seat_default_grab (GdkSeat *seat, - - if (capabilities & GDK_SEAT_CAPABILITY_ALL_POINTING) - { -- /* ALL_POINTING spans 3 capabilities; get the mask for the ones we have */ -- GdkEventMask pointer_evmask = 0; -- -- /* We let tablet styli take over the pointer cursor */ -- if (capabilities & (GDK_SEAT_CAPABILITY_POINTER | -- GDK_SEAT_CAPABILITY_TABLET_STYLUS)) -- { -- pointer_evmask |= POINTER_EVENTS; -- } -- -- if (capabilities & GDK_SEAT_CAPABILITY_TOUCH) -- pointer_evmask |= TOUCH_EVENTS; -- - status = gdk_device_grab (priv->master_pointer, window, - GDK_OWNERSHIP_NONE, owner_events, -- pointer_evmask, cursor, -+ POINTER_EVENTS, cursor, - evtime); - } - diff --git a/gtk+3.0-xdg-decoration/2191.patch b/gtk+3.0-xdg-decoration/2191.patch deleted file mode 100644 index ce4fd30..0000000 --- a/gtk+3.0-xdg-decoration/2191.patch +++ /dev/null @@ -1,766 +0,0 @@ -From b535e4805725eda92e86d48089457221fa8371fc Mon Sep 17 00:00:00 2001 -From: Isaac Freund -Date: Tue, 30 Jun 2020 00:01:02 +0200 -Subject: [PATCH] wayland: Update to xdg-decoration protocol - -Currently gtk uses the out of date and non-standardized -server-decoration protocol from kde. This commit replaces the -implementation of this old server-decoration protocol with an -implementation of the xdg-decoration protocol standardized in the -wayland-protocols repository. - -Notable changes include: - -- New private GDK API to communicate decoration state changes to GTK - -- Deprecation of gdk_wayland_display_prefers_ssd(). The new protocol -doesn't provide global state, so this function is deprecated and always -returns false. - -- Renaming of gdk_wayland_window_announce_ssd() to -gdk_wayland_window_request_ssd(). The server is not required to -honor requests for ssd. It is however required to honor CSD if the -xdg-decoration protocol object is destroyed. so -gdk_wayland_window_announce_csd() is still an accurate name. ---- - gdk/gdk-private.c | 3 + - gdk/gdk-private.h | 17 +++ - gdk/wayland/Makefile.am | 5 +- - gdk/wayland/gdkdisplay-wayland.c | 38 ++--- - gdk/wayland/gdkdisplay-wayland.h | 6 +- - gdk/wayland/gdkwaylanddisplay.h | 2 +- - gdk/wayland/gdkwaylandwindow.h | 5 +- - gdk/wayland/gdkwindow-wayland.c | 160 ++++++++++++++------- - gdk/wayland/meson.build | 2 +- - gdk/wayland/protocol/server-decoration.xml | 94 ------------ - gtk/gtkwindow.c | 96 +++++++++++-- - 11 files changed, 229 insertions(+), 199 deletions(-) - delete mode 100644 gdk/wayland/protocol/server-decoration.xml - -diff --git a/gdk/gdk-private.c b/gdk/gdk-private.c -index 750edcd374..a53950460b 100644 ---- a/gdk/gdk-private.c -+++ b/gdk/gdk-private.c -@@ -14,6 +14,9 @@ gdk__private__ (void) - gdk_gl_set_flags, - gdk_window_freeze_toplevel_updates, - gdk_window_thaw_toplevel_updates, -+#ifdef GDK_WINDOWING_WAYLAND -+ gdk_wayland_window_set_decoration_listener, -+#endif - gdk_display_get_rendering_mode, - gdk_display_set_rendering_mode, - gdk_display_get_debug_updates, -diff --git a/gdk/gdk-private.h b/gdk/gdk-private.h -index c71abe4634..d7c5250dd8 100644 ---- a/gdk/gdk-private.h -+++ b/gdk/gdk-private.h -@@ -23,6 +23,17 @@ void gdk_gl_set_flags (GdkGLFlags flags); - void gdk_window_freeze_toplevel_updates (GdkWindow *window); - void gdk_window_thaw_toplevel_updates (GdkWindow *window); - -+#ifdef GDK_WINDOWING_WAYLAND -+typedef void (* GdkWindowDecorationNotify) (GdkWindow *window, -+ gboolean ssd, -+ void *user_data); -+ -+void gdk_wayland_window_set_decoration_listener (GdkWindow *window, -+ GdkWindowDecorationNotify callback, -+ void *user_data); -+#endif -+ -+ - GdkRenderingMode gdk_display_get_rendering_mode (GdkDisplay *display); - void gdk_display_set_rendering_mode (GdkDisplay *display, - GdkRenderingMode mode); -@@ -52,6 +63,12 @@ typedef struct { - void (* gdk_window_freeze_toplevel_updates) (GdkWindow *window); - void (* gdk_window_thaw_toplevel_updates) (GdkWindow *window); - -+#ifdef GDK_WINDOWING_WAYLAND -+ void (* gdk_wayland_window_set_decoration_listener) (GdkWindow *window, -+ GdkWindowDecorationNotify callback, -+ void *user_data); -+#endif -+ - GdkRenderingMode (* gdk_display_get_rendering_mode) (GdkDisplay *display); - void (* gdk_display_set_rendering_mode) (GdkDisplay *display, - GdkRenderingMode mode); -diff --git a/gdk/wayland/Makefile.am b/gdk/wayland/Makefile.am -index 6595013d3f..878b50e545 100644 ---- a/gdk/wayland/Makefile.am -+++ b/gdk/wayland/Makefile.am -@@ -37,8 +37,8 @@ BUILT_SOURCES = \ - xdg-output-unstable-v1-client-protocol.h \ - keyboard-shortcuts-inhibit-unstable-v1-client-protocol.h \ - keyboard-shortcuts-inhibit-unstable-v1-protocol.c \ -- server-decoration-client-protocol.h \ -- server-decoration-protocol.c \ -+ xdg-decoration-unstable-v1-client-protocol.h \ -+ xdg-decoration-unstable-v1-protocol.c \ - gtk-shell-client-protocol.h \ - gtk-shell-protocol.c \ - primary-selection-unstable-v1-client-protocol.h \ -@@ -109,7 +109,6 @@ endef - EXTRA_DIST += \ - protocol/gtk-primary-selection.xml \ - protocol/gtk-shell.xml \ -- protocol/server-decoration.xml \ - meson.build - - -include $(top_srcdir)/git.mk -diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c -index dee7632c3a..f0cd6f1248 100644 ---- a/gdk/wayland/gdkdisplay-wayland.c -+++ b/gdk/wayland/gdkdisplay-wayland.c -@@ -47,7 +47,7 @@ - #include "tablet-unstable-v2-client-protocol.h" - #include "xdg-shell-unstable-v6-client-protocol.h" - #include "xdg-foreign-unstable-v1-client-protocol.h" --#include "server-decoration-client-protocol.h" -+#include "xdg-decoration-unstable-v1-client-protocol.h" - - /** - * SECTION:wayland_interaction -@@ -354,32 +354,13 @@ static const struct wl_shm_listener wl_shm_listener = { - wl_shm_format - }; - --static void --server_decoration_manager_default_mode (void *data, -- struct org_kde_kwin_server_decoration_manager *manager, -- uint32_t mode) --{ -- g_assert (mode <= ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_MODE_SERVER); -- const char *modes[] = { -- [ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_MODE_NONE] = "none", -- [ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_MODE_CLIENT] = "client", -- [ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_MODE_SERVER] = "server", -- }; -- GdkWaylandDisplay *display_wayland = data; -- g_debug ("Compositor prefers decoration mode '%s'", modes[mode]); -- display_wayland->server_decoration_mode = mode; --} -- --static const struct org_kde_kwin_server_decoration_manager_listener server_decoration_listener = { -- .default_mode = server_decoration_manager_default_mode --}; -- - gboolean - gdk_wayland_display_prefers_ssd (GdkDisplay *display) - { -- GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display); -- if (display_wayland->server_decoration_manager) -- return display_wayland->server_decoration_mode == ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_MODE_SERVER; -+ /* If the server doesn't implement xdg-decoration, we will just client-side -+ * decorate. If the server does implement xdg-decoration, we will initially -+ * client-side decorate and possibly negotiate a change to server-side -+ * decorations. This function is deprecated as it is no longer useful. */ - return FALSE; - } - -@@ -503,14 +484,11 @@ gdk_registry_handle_global (void *data, - wl_registry_bind (display_wayland->wl_registry, id, - &zwp_keyboard_shortcuts_inhibit_manager_v1_interface, 1); - } -- else if (strcmp (interface, "org_kde_kwin_server_decoration_manager") == 0) -+ else if (strcmp (interface, "zxdg_decoration_manager_v1") == 0) - { -- display_wayland->server_decoration_manager = -+ display_wayland->xdg_decoration_manager = - wl_registry_bind (display_wayland->wl_registry, id, -- &org_kde_kwin_server_decoration_manager_interface, 1); -- org_kde_kwin_server_decoration_manager_add_listener (display_wayland->server_decoration_manager, -- &server_decoration_listener, -- display_wayland); -+ &zxdg_decoration_manager_v1_interface, 1); - } - else if (strcmp(interface, "zxdg_output_manager_v1") == 0) - { -diff --git a/gdk/wayland/gdkdisplay-wayland.h b/gdk/wayland/gdkdisplay-wayland.h -index 62696300d1..2f4381de80 100644 ---- a/gdk/wayland/gdkdisplay-wayland.h -+++ b/gdk/wayland/gdkdisplay-wayland.h -@@ -33,7 +33,7 @@ - #include - #include - #include --#include -+#include - #include - #include - -@@ -95,7 +95,7 @@ struct _GdkWaylandDisplay - struct zxdg_exporter_v1 *xdg_exporter; - struct zxdg_importer_v1 *xdg_importer; - struct zwp_keyboard_shortcuts_inhibit_manager_v1 *keyboard_shortcuts_inhibit; -- struct org_kde_kwin_server_decoration_manager *server_decoration_manager; -+ struct zxdg_decoration_manager_v1 *xdg_decoration_manager; - struct zxdg_output_manager_v1 *xdg_output_manager; - uint32_t xdg_output_version; - -@@ -126,8 +126,6 @@ struct _GdkWaylandDisplay - int gtk_shell_version; - int xdg_output_manager_version; - -- uint32_t server_decoration_mode; -- - struct xkb_context *xkb_context; - - GdkWaylandSelection *selection; -diff --git a/gdk/wayland/gdkwaylanddisplay.h b/gdk/wayland/gdkwaylanddisplay.h -index af9cc896be..d7f40e8757 100644 ---- a/gdk/wayland/gdkwaylanddisplay.h -+++ b/gdk/wayland/gdkwaylanddisplay.h -@@ -57,7 +57,7 @@ GDK_AVAILABLE_IN_3_22 - void gdk_wayland_display_set_startup_notification_id (GdkDisplay *display, - const char *startup_id); - --GDK_AVAILABLE_IN_3_22 -+GDK_DEPRECATED_IN_3_24 - gboolean gdk_wayland_display_prefers_ssd (GdkDisplay *display); - - GDK_AVAILABLE_IN_3_22 -diff --git a/gdk/wayland/gdkwaylandwindow.h b/gdk/wayland/gdkwaylandwindow.h -index b8a8a02243..6a9b37881b 100644 ---- a/gdk/wayland/gdkwaylandwindow.h -+++ b/gdk/wayland/gdkwaylandwindow.h -@@ -84,9 +84,12 @@ void gdk_wayland_window_set_application_id (GdkWindow *windo - GDK_AVAILABLE_IN_3_22 - void gdk_wayland_window_announce_csd (GdkWindow *window); - --GDK_AVAILABLE_IN_3_24 -+GDK_DEPRECATED_IN_3_24_FOR(gdk_wayland_window_request_ssd) - void gdk_wayland_window_announce_ssd (GdkWindow *window); - -+GDK_AVAILABLE_IN_3_24 -+void gdk_wayland_window_request_ssd (GdkWindow *window); -+ - GDK_AVAILABLE_IN_3_24 - void gdk_wayland_window_add_frame_callback_surface (GdkWindow *window, - struct wl_surface *surface); -diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c -index 2d7c42bd7a..44b9440c19 100644 ---- a/gdk/wayland/gdkwindow-wayland.c -+++ b/gdk/wayland/gdkwindow-wayland.c -@@ -28,6 +28,7 @@ - #include "gdkdisplay-wayland.h" - #include "gdkglcontext-wayland.h" - #include "gdkframeclockprivate.h" -+#include "gdk-private.h" - #include "gdkprivate-wayland.h" - #include "gdkprofilerprivate.h" - #include "gdkinternals.h" -@@ -123,6 +124,7 @@ struct _GdkWindowImplWayland - struct xdg_surface *xdg_surface; - struct xdg_toplevel *xdg_toplevel; - struct xdg_popup *xdg_popup; -+ struct zxdg_toplevel_decoration_v1 *xdg_toplevel_decoration; - - /* Legacy xdg-shell unstable v6 fallback support */ - struct zxdg_surface_v6 *zxdg_surface_v6; -@@ -134,7 +136,6 @@ struct _GdkWindowImplWayland - struct wl_egl_window *egl_window; - struct wl_egl_window *dummy_egl_window; - struct zxdg_exported_v1 *xdg_exported; -- struct org_kde_kwin_server_decoration *server_decoration; - } display_server; - - EGLSurface egl_surface; -@@ -239,6 +240,12 @@ struct _GdkWindowImplWayland - - struct wl_callback *surface_callback; - GHashTable *frame_callback_surfaces; -+ -+ struct { -+ gboolean ssd; -+ GdkWindowDecorationNotify callback; -+ void *user_data; -+ } decoration_listener; - }; - - struct _GdkWindowImplWaylandClass -@@ -274,7 +281,6 @@ static void calculate_moved_to_rect_result (GdkWindow *window, - - static gboolean gdk_wayland_window_is_exported (GdkWindow *window); - static void gdk_wayland_window_unexport (GdkWindow *window); --static void gdk_wayland_window_announce_decoration_mode (GdkWindow *window); - - static gboolean should_map_as_subsurface (GdkWindow *window); - static gboolean should_map_as_popup (GdkWindow *window); -@@ -1877,6 +1883,68 @@ static const struct xdg_toplevel_listener xdg_toplevel_listener = { - xdg_toplevel_close, - }; - -+static void -+call_decoration_listener_callback (GdkWindow *window) -+{ -+ GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); -+ -+ if (impl->decoration_listener.callback) -+ impl->decoration_listener.callback (window, -+ impl->decoration_listener.ssd, -+ impl->decoration_listener.user_data); -+} -+ -+static void -+xdg_toplevel_decoration_configure (void *data, -+ struct zxdg_toplevel_decoration_v1 *zxdg_toplevel_decoration_v1, -+ uint32_t mode) -+{ -+ GdkWindow *window = GDK_WINDOW (data); -+ GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); -+ -+ if (mode == ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE) -+ { -+ if (!impl->decoration_listener.ssd) -+ { -+ impl->decoration_listener.ssd = TRUE; -+ call_decoration_listener_callback (window); -+ } -+ } -+ else if (mode == ZXDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE) -+ { -+ if (impl->decoration_listener.ssd) -+ { -+ impl->decoration_listener.ssd = FALSE; -+ call_decoration_listener_callback (window); -+ } -+ } -+ else -+ g_assert_not_reached (); -+} -+ -+static const struct zxdg_toplevel_decoration_v1_listener xdg_toplevel_decoration_listener = { -+ xdg_toplevel_decoration_configure, -+}; -+ -+static void -+create_xdg_toplevel_decoration (GdkWindow *window) -+{ -+ GdkWaylandDisplay *display_wayland = -+ GDK_WAYLAND_DISPLAY (gdk_window_get_display (window)); -+ GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); -+ -+ if (display_wayland->xdg_decoration_manager) -+ { -+ impl->display_server.xdg_toplevel_decoration = -+ zxdg_decoration_manager_v1_get_toplevel_decoration (display_wayland->xdg_decoration_manager, -+ impl->display_server.xdg_toplevel); -+ zxdg_toplevel_decoration_v1_add_listener (impl->display_server.xdg_toplevel_decoration, -+ &xdg_toplevel_decoration_listener, -+ window); -+ zxdg_toplevel_decoration_v1_unset_mode (impl->display_server.xdg_toplevel_decoration); -+ } -+} -+ - static void - create_xdg_toplevel_resources (GdkWindow *window) - { -@@ -1896,6 +1964,8 @@ create_xdg_toplevel_resources (GdkWindow *window) - xdg_toplevel_add_listener (impl->display_server.xdg_toplevel, - &xdg_toplevel_listener, - window); -+ -+ create_xdg_toplevel_decoration(window); - } - - static void -@@ -2299,68 +2369,58 @@ window_anchor_to_gravity_legacy (GdkGravity rect_anchor) - } - } - --static void --kwin_server_decoration_mode_set (void *data, struct org_kde_kwin_server_decoration *org_kde_kwin_server_decoration, uint32_t mode) -+void -+gdk_wayland_window_request_ssd (GdkWindow *window) - { -- GdkWindow *window = GDK_WINDOW (data); - GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); - -- if ((mode == ORG_KDE_KWIN_SERVER_DECORATION_MODE_SERVER && impl->using_csd) || -- (mode == ORG_KDE_KWIN_SERVER_DECORATION_MODE_CLIENT && !impl->using_csd)) -- gdk_wayland_window_announce_decoration_mode (window); --} -+ /* This may have been destroyed in gdk_wayland_window_announce_csd() -+ * so create it again if needed. */ -+ if (!impl->display_server.xdg_toplevel_decoration) -+ create_xdg_toplevel_decoration(window); - --static const struct org_kde_kwin_server_decoration_listener kwin_server_decoration_listener = { -- kwin_server_decoration_mode_set --}; -+ if (impl->display_server.xdg_toplevel_decoration) -+ zxdg_toplevel_decoration_v1_set_mode (impl->display_server.xdg_toplevel_decoration, -+ ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE); -+} - --static void --gdk_wayland_window_announce_decoration_mode (GdkWindow *window) -+void -+gdk_wayland_window_announce_csd (GdkWindow *window) - { -- GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (gdk_window_get_display (window)); - GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); - -- if (!display_wayland->server_decoration_manager) -- return; -- if (!impl->display_server.server_decoration) -+ if (impl->display_server.xdg_toplevel_decoration) - { -- impl->display_server.server_decoration = -- org_kde_kwin_server_decoration_manager_create (display_wayland->server_decoration_manager, -- impl->display_server.wl_surface); -- org_kde_kwin_server_decoration_add_listener (impl->display_server.server_decoration, -- &kwin_server_decoration_listener, -- window); -- } -+ zxdg_toplevel_decoration_v1_destroy(impl->display_server.xdg_toplevel_decoration); -+ impl->display_server.xdg_toplevel_decoration = NULL; -+ } - -- if (impl->display_server.server_decoration) -+ if (impl->decoration_listener.ssd) - { -- if (impl->using_csd) -- org_kde_kwin_server_decoration_request_mode (impl->display_server.server_decoration, -- ORG_KDE_KWIN_SERVER_DECORATION_MODE_CLIENT); -- else -- org_kde_kwin_server_decoration_request_mode (impl->display_server.server_decoration, -- ORG_KDE_KWIN_SERVER_DECORATION_MODE_SERVER); -+ impl->decoration_listener.ssd = FALSE; -+ call_decoration_listener_callback(window); - } - } - - void --gdk_wayland_window_announce_csd (GdkWindow *window) -+gdk_wayland_window_announce_ssd (GdkWindow *window) - { -- GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); -- -- impl->using_csd = TRUE; -- if (impl->mapped) -- gdk_wayland_window_announce_decoration_mode (window); -+ /* deprecated as this no is no longer an annoncement but a request */ -+ gdk_wayland_window_request_ssd (window); - } - --void --gdk_wayland_window_announce_ssd (GdkWindow *window) -+void gdk_wayland_window_set_decoration_listener (GdkWindow *window, -+ GdkWindowDecorationNotify callback, -+ void *user_data) - { - GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); - -- impl->using_csd = FALSE; -- if (impl->mapped) -- gdk_wayland_window_announce_decoration_mode (window); -+ /* Don't support changing the callback once set. This is a private API -+ * and such complexity is not currently needed. */ -+ g_assert(impl->decoration_listener.callback == NULL); -+ -+ impl->decoration_listener.callback = callback; -+ impl->decoration_listener.user_data = user_data; - } - - static GdkWindow * -@@ -3213,13 +3273,11 @@ gdk_wayland_window_map (GdkWindow *window) - else - { - gdk_wayland_window_create_xdg_toplevel (window); -- gdk_wayland_window_announce_decoration_mode (window); - } - } - else - { - gdk_wayland_window_create_xdg_toplevel (window); -- gdk_wayland_window_announce_decoration_mode (window); - } - - impl->mapped = TRUE; -@@ -3321,6 +3379,12 @@ gdk_wayland_window_hide_surface (GdkWindow *window) - - if (impl->display_server.xdg_toplevel) - { -+ if (impl->display_server.xdg_toplevel_decoration) -+ { -+ zxdg_toplevel_decoration_v1_destroy (impl->display_server.xdg_toplevel_decoration); -+ impl->display_server.xdg_toplevel_decoration = NULL; -+ } -+ - xdg_toplevel_destroy (impl->display_server.xdg_toplevel); - impl->display_server.xdg_toplevel = NULL; - } -@@ -3387,12 +3451,6 @@ gdk_wayland_window_hide_surface (GdkWindow *window) - impl->application.was_set = FALSE; - } - -- if (impl->display_server.server_decoration) -- { -- org_kde_kwin_server_decoration_release (impl->display_server.server_decoration); -- impl->display_server.server_decoration = NULL; -- } -- - wl_surface_destroy (impl->display_server.wl_surface); - impl->display_server.wl_surface = NULL; - impl->surface_callback = NULL; -diff --git a/gdk/wayland/meson.build b/gdk/wayland/meson.build -index e66afd7f95..e4906d3641 100644 ---- a/gdk/wayland/meson.build -+++ b/gdk/wayland/meson.build -@@ -54,7 +54,7 @@ proto_sources = [ - ['xdg-foreign', 'unstable', 'v1', ], - ['tablet', 'unstable', 'v2', ], - ['keyboard-shortcuts-inhibit', 'unstable', 'v1', ], -- ['server-decoration', 'private' ], -+ ['xdg-decoration', 'unstable', 'v1', ], - ['xdg-output', 'unstable', 'v1', ], - ['primary-selection', 'unstable', 'v1', ], - ] -diff --git a/gdk/wayland/protocol/server-decoration.xml b/gdk/wayland/protocol/server-decoration.xml -deleted file mode 100644 -index 8bc106c7c4..0000000000 ---- a/gdk/wayland/protocol/server-decoration.xml -+++ /dev/null -@@ -1,94 +0,0 @@ -- -- -- . -- ]]> -- -- -- This interface allows to coordinate whether the server should create -- a server-side window decoration around a wl_surface representing a -- shell surface (wl_shell_surface or similar). By announcing support -- for this interface the server indicates that it supports server -- side decorations. -- -- -- -- When a client creates a server-side decoration object it indicates -- that it supports the protocol. The client is supposed to tell the -- server whether it wants server-side decorations or will provide -- client-side decorations. -- -- If the client does not create a server-side decoration object for -- a surface the server interprets this as lack of support for this -- protocol and considers it as client-side decorated. Nevertheless a -- client-side decorated surface should use this protocol to indicate -- to the server that it does not want a server-side deco. -- -- -- -- -- -- -- -- -- -- -- -- -- This event is emitted directly after binding the interface. It contains -- the default mode for the decoration. When a new server decoration object -- is created this new object will be in the default mode until the first -- request_mode is requested. -- -- The server may change the default mode at any time. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- This event is emitted directly after the decoration is created and -- represents the base decoration policy by the server. E.g. a server -- which wants all surfaces to be client-side decorated will send Client, -- a server which wants server-side decoration will send Server. -- -- The client can request a different mode through the decoration request. -- The server will acknowledge this by another event with the same mode. So -- even if a server prefers server-side decoration it's possible to force a -- client-side decoration. -- -- The server may emit this event at any time. In this case the client can -- again request a different mode. It's the responsibility of the server to -- prevent a feedback loop. -- -- -- -- -- -diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c -index d9c456e304..4bf49580eb 100644 ---- a/gtk/gtkwindow.c -+++ b/gtk/gtkwindow.c -@@ -4166,6 +4166,19 @@ gtk_window_enable_csd (GtkWindow *window) - priv->client_decorated = TRUE; - } - -+static void -+gtk_window_disable_csd (GtkWindow *window) -+{ -+ GtkWindowPrivate *priv = window->priv; -+ GtkWidget *widget = GTK_WIDGET (window); -+ -+ /* Only one of these will actually be set, but removing both is harmless */ -+ gtk_style_context_remove_class (gtk_widget_get_style_context (widget), GTK_STYLE_CLASS_CSD); -+ gtk_style_context_remove_class (gtk_widget_get_style_context (widget), "solid-csd"); -+ -+ priv->client_decorated = FALSE; -+} -+ - static void - on_titlebar_title_notify (GtkHeaderBar *titlebar, - GParamSpec *pspec, -@@ -6119,10 +6132,7 @@ gtk_window_should_use_csd (GtkWindow *window) - - #ifdef GDK_WINDOWING_WAYLAND - if (GDK_IS_WAYLAND_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window)))) -- { -- GdkDisplay *gdk_display = gtk_widget_get_display (GTK_WIDGET (window)); -- return !gdk_wayland_display_prefers_ssd (gdk_display); -- } -+ return TRUE; - #endif - - #ifdef GDK_WINDOWING_WIN32 -@@ -6156,6 +6166,31 @@ create_decoration (GtkWidget *widget) - gtk_widget_show_all (priv->titlebar); - priv->title_box = priv->titlebar; - } -+ else if (priv->title_box == priv->titlebar) -+ gtk_widget_show_all (priv->title_box); -+ -+ update_window_buttons (window); -+} -+ -+static void update_shadow_width (GtkWindow *window, GtkBorder *border); -+ -+static void -+destroy_decoration (GtkWidget *widget) -+{ -+ GtkWindow *window = GTK_WINDOW (widget); -+ GtkWindowPrivate *priv = window->priv; -+ GtkBorder border = {0}; -+ -+ priv->use_client_shadow = FALSE; -+ update_shadow_width(window, &border); -+ -+ gtk_window_disable_csd (window); -+ -+ if (priv->type == GTK_WINDOW_POPUP) -+ return; -+ -+ if (priv->title_box == priv->titlebar) -+ gtk_widget_hide (priv->title_box); - - update_window_buttons (window); - } -@@ -7347,6 +7382,42 @@ update_realized_window_properties (GtkWindow *window, - update_border_windows (window); - } - -+static void -+handle_decoration_state_change (GtkWidget *widget) -+{ -+ GtkAllocation allocation; -+ GdkWindow *window = gtk_widget_get_window (widget); -+ -+ allocation.x = 0; -+ allocation.y = 0; -+ allocation.width = gdk_window_get_width (window); -+ allocation.height = gdk_window_get_height (window); -+ -+ gtk_widget_size_allocate (widget, &allocation); -+ gtk_widget_queue_resize (widget); -+} -+ -+static void -+wayland_handle_decoration (GdkWindow *gdk_window, -+ gboolean ssd, -+ void *user_data) -+{ -+ GtkWidget *widget = user_data; -+ GtkWindow *window = GTK_WINDOW (widget); -+ GtkWindowPrivate *priv = window->priv; -+ -+ if (priv->client_decorated && ssd) -+ { -+ destroy_decoration(widget); -+ handle_decoration_state_change(widget); -+ } -+ else if (!priv->client_decorated && !ssd) -+ { -+ create_decoration(widget); -+ handle_decoration_state_change(widget); -+ } -+} -+ - static void - gtk_window_realize (GtkWidget *widget) - { -@@ -7544,16 +7615,6 @@ gtk_window_realize (GtkWidget *widget) - if (!priv->decorated || priv->client_decorated) - gdk_window_set_decorations (gdk_window, 0); - --#ifdef GDK_WINDOWING_WAYLAND -- if (GDK_IS_WAYLAND_WINDOW (gdk_window)) -- { -- if (priv->client_decorated) -- gdk_wayland_window_announce_csd (gdk_window); -- else -- gdk_wayland_window_announce_ssd (gdk_window); -- } --#endif -- - if (!priv->deletable) - gdk_window_set_functions (gdk_window, GDK_FUNC_ALL | GDK_FUNC_CLOSE); - -@@ -7600,6 +7661,13 @@ gtk_window_realize (GtkWidget *widget) - } - #endif - -+#ifdef GDK_WINDOWING_WAYLAND -+ if (GDK_IS_WAYLAND_DISPLAY (gtk_widget_get_display (widget))) -+ GDK_PRIVATE_CALL (gdk_wayland_window_set_decoration_listener) (gdk_window, -+ wayland_handle_decoration, -+ widget); -+#endif -+ - child_allocation.x = 0; - child_allocation.y = 0; - child_allocation.width = allocation.width; --- -GitLab - diff --git a/gtk+3.0-xdg-decoration/3614.patch b/gtk+3.0-xdg-decoration/3614.patch deleted file mode 100644 index 6dbac10..0000000 --- a/gtk+3.0-xdg-decoration/3614.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 72ab4c46edbcbbf8985f42f5f0cee1b799ce5a91 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Guido=20G=C3=BCnther?= -Date: Wed, 26 May 2021 17:08:03 +0200 -Subject: [PATCH] gtkapplication-dbus: Fetch inital screen saver state async - -Avoid a sync call that can make the application block for no good -reason. - -Fixes 6f6b5faaa216feed666b659d1cdfacd0c5c393d9 ---- - gtk/gtkapplication-dbus.c | 54 +++++++++++++++++++++++---------------- - 1 file changed, 32 insertions(+), 22 deletions(-) - -diff --git a/gtk/gtkapplication-dbus.c b/gtk/gtkapplication-dbus.c -index a270354119..4951b1f558 100644 ---- a/gtk/gtkapplication-dbus.c -+++ b/gtk/gtkapplication-dbus.c -@@ -227,6 +227,30 @@ screensaver_signal_portal (GDBusConnection *connection, - } - } - -+static void -+ss_get_active_cb (GObject *source, -+ GAsyncResult *result, -+ gpointer data) -+{ -+ GtkApplicationImplDBus *dbus = (GtkApplicationImplDBus *) data; -+ GDBusProxy *proxy = G_DBUS_PROXY (source); -+ GError *error = NULL; -+ GVariant *ret; -+ gboolean active; -+ -+ ret = g_dbus_proxy_call_finish (proxy, result, &error); -+ if (ret == NULL) -+ { -+ g_warning ("Getting screensaver status failed: %s", error->message); -+ g_error_free (error); -+ return; -+ } -+ -+ g_variant_get (ret, "(b)", &active); -+ g_variant_unref (ret); -+ gtk_application_set_screensaver_active (dbus->impl.application, active); -+} -+ - static void - create_monitor_cb (GObject *source, - GAsyncResult *result, -@@ -329,31 +353,17 @@ gtk_application_impl_dbus_startup (GtkApplicationImpl *impl, - - if (dbus->ss_proxy) - { -- GVariant *active_var; -- gboolean active; -- - g_signal_connect (dbus->ss_proxy, "g-signal", - G_CALLBACK (screensaver_signal_session), impl->application); - -- active_var = g_dbus_proxy_call_sync (dbus->ss_proxy, -- "GetActive", -- NULL, -- G_DBUS_CALL_FLAGS_NONE, -- G_MAXINT, -- NULL, -- &error); -- if (!active_var) -- { -- g_debug ("Error calling GetActive on GNOME screensaver: %s", -- error->message); -- g_clear_error (&error); -- } -- else -- { -- g_variant_get (active_var, "(b)", &active); -- g_variant_unref (active_var); -- gtk_application_set_screensaver_active (dbus->impl.application, active); -- } -+ g_dbus_proxy_call (dbus->ss_proxy, -+ "GetActive", -+ NULL, -+ G_DBUS_CALL_FLAGS_NONE, -+ G_MAXINT, -+ NULL, -+ ss_get_active_cb, -+ dbus); - } - - g_debug ("Registering client '%s' '%s'", dbus->application_id, client_id); --- -GitLab - diff --git a/gtk+3.0-xdg-decoration/APKBUILD b/gtk+3.0-xdg-decoration/APKBUILD deleted file mode 100644 index 771aa63..0000000 --- a/gtk+3.0-xdg-decoration/APKBUILD +++ /dev/null @@ -1,129 +0,0 @@ -# Contributor: Rasmus Thomsen -# Contributor: Natanael Copa -# Maintainer: Rasmus Thomsen -pkgname=gtk+3.0-xdg-decoration -pkgver=3.24.28 -pkgrel=1 -pkgdesc="The GTK+ Toolkit (v3)" -url="https://www.gtk.org/" -install="$pkgname.post-install $pkgname.post-upgrade $pkgname.post-deinstall" -arch="all" -license="LGPL-2.1-or-later" -options="!check" # Most glade tests fail :c -subpackages="$pkgname-demo $pkgname-dev $pkgname-doc $pkgname-lang $pkgname-dbg" -depends="shared-mime-info gtk-update-icon-cache" - -replaces="gtk+" - -depends_dev=" - atk-dev - gdk-pixbuf-dev - glib-dev - libepoxy-dev - libxext-dev - libxi-dev - libxinerama-dev - wayland-protocols - wayland-libs-client - wayland-libs-cursor - libxkbcommon-dev - " -makedepends=" - $depends_dev - cups-dev - expat-dev - gettext-dev - gobject-introspection-dev - libice-dev - tiff-dev - zlib-dev - at-spi2-atk-dev - cairo-dev - fontconfig-dev - pango-dev - wayland-dev - libx11-dev - libxcomposite-dev - libxcursor-dev - libxdamage-dev - libxfixes-dev - libxrandr-dev - meson - gtk-doc - iso-codes-dev - " -checkdepends=" - xvfb-run - ibus - librsvg - gdk-pixbuf - " -source="https://download.gnome.org/sources/gtk+/${pkgver%.*}/gtk+-$pkgver.tar.xz - 10-Revert-gdkseatdefault-Grab-touch-events-where-applic.patch - 3614.patch - 2191.patch - check-version.py - " - -builddir="$srcdir/gtk+-$pkgver" - -prepare() { - default_prepare - - # Upstream forgot to include this in the tarball - # https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/1776 - mv "$srcdir"/check-version.py . -} - -build() { - abuild-meson \ - -Dman=true \ - -Dgtk_doc=false \ - -Dbroadway_backend=true \ - output - meson compile ${JOBS:+-j ${JOBS}} -C output -} - -check() { - xvfb-run meson test --no-rebuild -v -C output -} - -package() { - DESTDIR="$pkgdir" meson install --no-rebuild -C output - - # use gtk-update-icon-cache from gtk+2.0 for now - rm -f "$pkgdir"/usr/bin/gtk-update-icon-cache - rm -f "$pkgdir"/usr/share/man/man1/gtk-update-icon-cache.1 -} - -demo() { - pkgdesc="$pkgdesc (demonstration application)" - amove usr/bin/gtk3-demo \ - usr/bin/gtk3-widget-factory \ - usr/bin/gtk3-demo-application - - amove usr/share/gtk-3.0/gtkbuilder.rng \ - usr/share/glib-2.0/schemas/org.gtk.Demo.gschema.xml \ - usr/share/applications/gtk3-widget-factory.desktop \ - usr/share/applications/gtk3-demo.desktop - - amove usr/share/icons -} - -dev() { - replaces="gtk+-dev" - default_dev -} - -doc() { - replaces="gtk+-doc" - default_doc -} - -sha512sums=" -65856ae06e4a863c56b3718c0cc3d0ca9f61a62a02ddef30904432300cd455851efee3fa1e5661659eaacbdfca45650ee7c8a2d4eca004ad2936c1e26c720c15 gtk+-3.24.28.tar.xz -e4ea76484b70bd9beb65b2964bbcff3b3f78f5f6fe70b12309a7721ca134e3735e8aaac09803f93b393a6130a703f8f346c0df89ad45d18c580dac1e0e922276 10-Revert-gdkseatdefault-Grab-touch-events-where-applic.patch -0f166e3db57d4abbf6c540f09ca32c9f52fe02634c32b0808cd863824cfd1607877fcaff54299605b834c43ecb4bc4a02c0ccfaed02ed728b728523fe385d054 3614.patch -0237c3ff79e5ae46325abfc1635822437162dac88a116092b5c048e03a5b703e75c56f1e7e0898b8878e32767b98f81d91ab86b676181a3be503402fc38df46d 2191.patch -b97ccd8fb78d7c32fe91607befd6a7c0dd969fbfc9c242948fc88085133e3461583a0b18ade199b73f9659cae5f5525b940e66535a6ced4b916af9a88b3cc578 check-version.py -" diff --git a/gtk+3.0-xdg-decoration/check-version.py b/gtk+3.0-xdg-decoration/check-version.py deleted file mode 100644 index 46bcc3a..0000000 --- a/gtk+3.0-xdg-decoration/check-version.py +++ /dev/null @@ -1,200 +0,0 @@ -#!/usr/bin/env python3 - -import re -import sys - -try: - configure_ac = sys.argv[1] -except Exception: - configure_ac = 'configure.ac' - -try: - meson_build = sys.argv[2] -except Exception: - meson_build = 'meson.build' - -CONFIGURE_MAJOR_VERSION_RE = re.compile( - r''' - ^ - \s* - m4_define\( - \s* - \[gtk_major_version\] - \s* - , - \s* - \[ - (?P[0-9]+) - \] - \s* - \) - $ - ''', - re.UNICODE | re.VERBOSE -) - -CONFIGURE_MINOR_VERSION_RE = re.compile( - r''' - ^ - \s* - m4_define\( - \s* - \[gtk_minor_version\] - \s* - , - \s* - \[ - (?P[0-9]+) - \] - \s* - \) - $ - ''', - re.UNICODE | re.VERBOSE -) - -CONFIGURE_MICRO_VERSION_RE = re.compile( - r''' - ^ - \s* - m4_define\( - \s* - \[gtk_micro_version\] - \s* - , - \s* - \[ - (?P[0-9]+) - \] - \s* - \) - $ - ''', - re.UNICODE | re.VERBOSE -) - -CONFIGURE_INTERFACE_AGE_RE = re.compile( - r''' - ^ - \s* - m4_define\( - \s* - \[gtk_interface_age\] - \s* - , - \s* - \[ - (?P[0-9]+) - \] - \s* - \) - $ - ''', - re.UNICODE | re.VERBOSE -) - -MESON_VERSION_RE = re.compile( - r''' - ^ - \s* - version - \s* - :{1} - \s* - \'{1} - (?P[0-9]+) - \.{1} - (?P[0-9]+) - \.{1} - (?P[0-9]+) - \'{1} - \s* - ,? - $ - ''', - re.UNICODE | re.VERBOSE -) - -MESON_INTERFACE_AGE_RE = re.compile( - r''' - ^\s*gtk_interface_age\s*={1}\s*(?P[0-9]+)\s*$ - ''', - re.UNICODE | re.VERBOSE -) - -version = {} - -with open(configure_ac, 'r') as f: - line = f.readline() - while line: - res = CONFIGURE_MAJOR_VERSION_RE.match(line) - if res: - if 'major' in version: - print(f'Redefinition of major version; version is already set to {version["major"]}') - sys.exit(1) - version['major'] = res.group('version') - line = f.readline() - continue - res = CONFIGURE_MINOR_VERSION_RE.match(line) - if res: - if 'minor' in version: - print(f'Redefinition of minor version; version is already set to {version["minor"]}') - sys.exit(1) - version['minor'] = res.group('version') - line = f.readline() - continue - res = CONFIGURE_MICRO_VERSION_RE.match(line) - if res: - if 'micro' in version: - print(f'Redefinition of micro version; version is already set to {version["micro"]}') - sys.exit(1) - version['micro'] = res.group('version') - line = f.readline() - continue - res = CONFIGURE_INTERFACE_AGE_RE.match(line) - if res: - if 'age' in version: - print(f'Redefinition of interface age; age is already set to {version["age"]}') - sys.exit(1) - version['age'] = res.group('age') - line = f.readline() - continue - if ('major', 'minor', 'micro', 'age') in version: - break - line = f.readline() - -print(f'GTK version defined in {configure_ac}: {version["major"]}.{version["minor"]}.{version["micro"]} (age: {version["age"]})') - -configure_version = version -version = {} - -with open(meson_build, 'r') as f: - line = f.readline() - inside_project = False - while line: - if line.startswith('project('): - inside_project = True - if inside_project: - res = MESON_VERSION_RE.match(line) - if res: - version['major'] = res.group('major') - version['minor'] = res.group('minor') - version['micro'] = res.group('micro') - if inside_project and line.endswith(')'): - inside_project = False - res = MESON_INTERFACE_AGE_RE.match(line) - if res: - version['age'] = res.group('age') - if ('major', 'minor', 'micro', 'age') in version: - break - line = f.readline() - -print(f'GTK version defined in {meson_build}: {version["major"]}.{version["minor"]}.{version["micro"]} (age: {version["age"]})') - -meson_version = version - -if configure_version != meson_version: - print('Version mismatch between Autotools and Meson builds') - sys.exit(1) - -sys.exit(0) diff --git a/gtk+3.0-xdg-decoration/gtk+3.0-xdg-decoration.post-deinstall b/gtk+3.0-xdg-decoration/gtk+3.0-xdg-decoration.post-deinstall deleted file mode 100644 index b1e3f7a..0000000 --- a/gtk+3.0-xdg-decoration/gtk+3.0-xdg-decoration.post-deinstall +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -rm -f etc/gtk-3.0/gtk.immodules -rm -f etc/gtk-3.0/gdk-pixbuf.loaders - diff --git a/gtk+3.0-xdg-decoration/gtk+3.0-xdg-decoration.post-install b/gtk+3.0-xdg-decoration/gtk+3.0-xdg-decoration.post-install deleted file mode 100644 index 0570816..0000000 --- a/gtk+3.0-xdg-decoration/gtk+3.0-xdg-decoration.post-install +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -usr/bin/gtk-query-immodules-3.0 > etc/gtk-3.0/gtk.immodules -usr/bin/gdk-pixbuf-query-loaders > etc/gtk-3.0/gdk-pixbuf.loaders - diff --git a/gtk+3.0-xdg-decoration/gtk+3.0-xdg-decoration.post-upgrade b/gtk+3.0-xdg-decoration/gtk+3.0-xdg-decoration.post-upgrade deleted file mode 120000 index 6efe893..0000000 --- a/gtk+3.0-xdg-decoration/gtk+3.0-xdg-decoration.post-upgrade +++ /dev/null @@ -1 +0,0 @@ -gtk+3.0-xdg-decoration.post-install \ No newline at end of file