From 22d571466674641a3a767e577373a3c5f78ab157 Mon Sep 17 00:00:00 2001 From: lukefromdc Date: Sat, 10 Jun 2023 19:00:46 -0400 Subject: trash: port to in-process for wayland support - ensure applet can be left-clicked in wayland - In wayland we have to open the trash on the button press event - In x11 retain the existing behavior of opening the trash on the button release event - ensure both right and left clicks work in wayland - using code borrowed from cpufreq applet - Cleanup X11 checks --- trashapplet/data/Makefile.am | 19 +++++--------- ...ets.TrashApplet.mate-panel-applet.desktop.in.in | 3 ++- ...mate.panel.applet.TrashAppletFactory.service.in | 3 --- trashapplet/src/Makefile.am | 19 +++++++------- trashapplet/src/trashapplet.c | 30 ++++++++++++++-------- 5 files changed, 36 insertions(+), 38 deletions(-) delete mode 100644 trashapplet/data/org.mate.panel.applet.TrashAppletFactory.service.in diff --git a/trashapplet/data/Makefile.am b/trashapplet/data/Makefile.am index 8603d6c2..f318e0fb 100644 --- a/trashapplet/data/Makefile.am +++ b/trashapplet/data/Makefile.am @@ -1,32 +1,25 @@ +APPLET_LOCATION = $(libdir)/mate-applets/libtrashapplet.so + appletdir = $(datadir)/mate-panel/applets applet_in_files = org.mate.applets.TrashApplet.mate-panel-applet.desktop.in applet_DATA = $(applet_in_files:.mate-panel-applet.desktop.in=.mate-panel-applet) $(applet_in_files): $(applet_in_files).in Makefile $(AM_V_GEN)sed \ - -e "s|\@LIBEXECDIR\@|$(libexecdir)|" \ - -e "s|\@VERSION\@|$(PACKAGE_VERSION)|" \ - $< > $@ + -e "s|\@APPLET_LOCATION\@|$(APPLET_LOCATION)|" \ + -e "s|\@VERSION\@|$(PACKAGE_VERSION)|" \ + $< > $@ $(applet_DATA): $(applet_in_files) Makefile $(AM_V_GEN) $(MSGFMT) --desktop --keyword=Name --keyword=Description --template $< -d $(top_srcdir)/po -o $@ -servicedir = $(datadir)/dbus-1/services -service_in_files = org.mate.panel.applet.TrashAppletFactory.service.in -service_DATA = $(service_in_files:.service.in=.service) - -org.mate.panel.applet.TrashAppletFactory.service: $(service_in_files) - $(AM_V_GEN)sed \ - -e "s|\@LIBEXECDIR\@|$(libexecdir)|" \ - $< > $@ EXTRA_DIST = \ $(applet_in_files).in \ - $(service_in_files) \ trashapplet-empty-progress.ui \ trashapplet-menu.xml \ trashapplet-resources.gresource.xml -CLEANFILES = $(applet_DATA) $(applet_in_files) $(service_DATA) +CLEANFILES = $(applet_DATA) $(applet_in_files) -include $(top_srcdir)/git.mk diff --git a/trashapplet/data/org.mate.applets.TrashApplet.mate-panel-applet.desktop.in.in b/trashapplet/data/org.mate.applets.TrashApplet.mate-panel-applet.desktop.in.in index 77161ccc..d62a5a74 100644 --- a/trashapplet/data/org.mate.applets.TrashApplet.mate-panel-applet.desktop.in.in +++ b/trashapplet/data/org.mate.applets.TrashApplet.mate-panel-applet.desktop.in.in @@ -1,6 +1,7 @@ [Applet Factory] Id=TrashAppletFactory -Location=@LIBEXECDIR@/trashapplet +InProcess=true +Location=@APPLET_LOCATION@ Name=Trash Applet Factory Description=Trash Applet Factory diff --git a/trashapplet/data/org.mate.panel.applet.TrashAppletFactory.service.in b/trashapplet/data/org.mate.panel.applet.TrashAppletFactory.service.in deleted file mode 100644 index ead24d1d..00000000 --- a/trashapplet/data/org.mate.panel.applet.TrashAppletFactory.service.in +++ /dev/null @@ -1,3 +0,0 @@ -[D-BUS Service] -Name=org.mate.panel.applet.TrashAppletFactory -Exec=@LIBEXECDIR@/trashapplet diff --git a/trashapplet/src/Makefile.am b/trashapplet/src/Makefile.am index 2def1827..1cad7acd 100644 --- a/trashapplet/src/Makefile.am +++ b/trashapplet/src/Makefile.am @@ -4,21 +4,20 @@ AM_CPPFLAGS = -I$(top_srcdir) \ -DGRESOURCE=\""/org/mate/mate-applets/trash/\"" \ ${WARN_CFLAGS} -libexec_PROGRAMS = trashapplet +trashapplet_libdir= $(pkglibdir) +trashapplet_lib_LTLIBRARIES=libtrashapplet.la -BUILT_SOURCES = \ - trashapplet-resources.c \ - trashapplet-resources.h - -nodist_trashapplet_SOURCES = $(BUILT_SOURCES) -trashapplet_SOURCES = \ +libtrashapplet_la_SOURCES = \ trashapplet.c \ trash-empty.h \ trash-empty.c \ xstuff.c \ - xstuff.h + xstuff.h \ + trashapplet-resources.c \ + trashapplet-resources.h \ + $(NULL) -trashapplet_LDADD = \ +libtrashapplet_la_LIBADD = \ $(MATE_APPLETS4_LIBS) \ $(GIO_LIBS) \ -lX11 @@ -30,6 +29,6 @@ trashapplet-resources.h: ../data/trashapplet-resources.gresource.xml $(shell $(G $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/../data/ --generate --c-name trashapplet $< CLEANFILES = \ - $(BUILT_SOURCES) + $(NULL) -include $(top_srcdir)/git.mk diff --git a/trashapplet/src/trashapplet.c b/trashapplet/src/trashapplet.c index eccf7c3d..515bab10 100644 --- a/trashapplet/src/trashapplet.c +++ b/trashapplet/src/trashapplet.c @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -255,21 +256,25 @@ trash_applet_button_release (GtkWidget *widget, if (settings == NULL) settings = g_settings_new (PANEL_SCHEMA); - if (event->button == 1) + if (event->button == 2) + return FALSE; + + if ((event->button == 1) && + (event->type != GDK_2BUTTON_PRESS) && + (event->type != GDK_3BUTTON_PRESS)) { - if (g_settings_get_boolean (settings, PANEL_ENABLE_ANIMATIONS)) +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (gtk_widget_get_display (widget)) && + g_settings_get_boolean (settings, PANEL_ENABLE_ANIMATIONS)) xstuff_zoom_animate (widget, NULL); +#endif trash_applet_open_folder (NULL, applet); return TRUE; } - if (GTK_WIDGET_CLASS (trash_applet_parent_class)->button_release_event) - return GTK_WIDGET_CLASS (trash_applet_parent_class) - ->button_release_event (widget, event); - else - return FALSE; + return GTK_WIDGET_CLASS (trash_applet_parent_class)->button_press_event (widget, event); } static gboolean trash_applet_key_press (GtkWidget *widget, @@ -603,7 +608,12 @@ trash_applet_class_init (TrashAppletClass *class) gobject_class->dispose = trash_applet_dispose; widget_class->size_allocate = trash_applet_size_allocate; - widget_class->button_release_event = trash_applet_button_release; +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + widget_class->button_release_event = trash_applet_button_release; + else /* for Wayland we need to watch button press rather than release */ +#endif + widget_class->button_press_event = trash_applet_button_release; widget_class->key_press_event = trash_applet_key_press; widget_class->drag_motion = trash_applet_drag_motion; widget_class->drag_data_received = trash_applet_drag_data_received; @@ -621,8 +631,6 @@ trash_applet_factory (MatePanelApplet *applet, AtkObject *atk_obj; GtkActionGroup *action_group; - g_set_application_name (_("Trash Applet")); - gtk_window_set_default_icon_name ("user-trash"); /* Set up the menu */ @@ -651,7 +659,7 @@ trash_applet_factory (MatePanelApplet *applet, return retval; } -MATE_PANEL_APPLET_OUT_PROCESS_FACTORY ("TrashAppletFactory", +MATE_PANEL_APPLET_IN_PROCESS_FACTORY ("TrashAppletFactory", TRASH_TYPE_APPLET, "TrashApplet", trash_applet_factory, -- cgit v1.2.1