From 0ad30b30fbd249aec01d0c4ba36cdbd0c5906049 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Sat, 17 Feb 2024 05:44:06 +0100 Subject: [PATCH] applets: partially fix the build without X11 --- src/applets/close.c | 14 ++++++++++++++ src/applets/desktop.c | 2 ++ src/applets/embed.c | 31 +++++++++++++++++++++++-------- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/src/applets/close.c b/src/applets/close.c index 1c2600d..ece30c6 100644 --- a/src/applets/close.c +++ b/src/applets/close.c @@ -48,10 +48,12 @@ typedef struct _PanelApplet GdkScreen * screen; GdkWindow * root; +#if defined(GDK_WINDOWING_X11) Atom atom_active; Atom atom_close; Window window; Window panel; +#endif } Close; @@ -64,11 +66,13 @@ static void _close_destroy(Close * close); static void _close_do(Close * close); /* callbacks */ +#if defined(GDK_WINDOWING_X11) static void _close_on_close(gpointer data); static GdkFilterReturn _close_on_filter(GdkXEvent * xevent, GdkEvent * event, gpointer data); static void _close_on_screen_changed(GtkWidget * widget, GdkScreen * previous, gpointer data); +#endif /* public */ @@ -110,17 +114,23 @@ static Close * _close_init(PanelAppletHelper * helper, GtkWidget ** widget) image = gtk_image_new_from_stock(applet.icon, iconsize); #endif gtk_button_set_image(GTK_BUTTON(close->widget), image); +#if defined(GDK_WINDOWING_X11) g_signal_connect_swapped(close->widget, "clicked", G_CALLBACK( _close_on_close), close); close->source = g_signal_connect(close->widget, "screen-changed", G_CALLBACK(_close_on_screen_changed), close); +#else + close->source = 0; +#endif close->display = NULL; close->screen = NULL; close->root = NULL; +#if defined(GDK_WINDOWING_X11) close->atom_active = 0; close->atom_close = 0; close->window = None; close->panel = None; +#endif gtk_widget_show(close->widget); *widget = close->widget; return close; @@ -132,13 +142,16 @@ static void _close_destroy(Close * close) { if(close->source != 0) g_signal_handler_disconnect(close->widget, close->source); +#if defined(GDK_WINDOWING_X11) if(close->root != NULL) gdk_window_remove_filter(close->root, _close_on_filter, close); +#endif gtk_widget_destroy(close->widget); object_delete(close); } +#if defined(GDK_WINDOWING_X11) /* accessors */ /* close_get_window_property */ static int _close_get_window_property(Close * close, Window window, @@ -269,3 +282,4 @@ static void _close_on_screen_changed(GtkWidget * widget, GdkScreen * previous, close->display, "_NET_CLOSE_WINDOW"); _close_do(close); } +#endif diff --git a/src/applets/desktop.c b/src/applets/desktop.c index 272289c..899fc97 100644 --- a/src/applets/desktop.c +++ b/src/applets/desktop.c @@ -92,6 +92,7 @@ static void _desktop_destroy(Desktop * desktop) /* on_clicked */ static void _desktop_on_clicked(GtkWidget * widget) { +#if defined(GDK_WINDOWING_X11) GdkScreen * screen; GdkDisplay * display; GdkWindow * root; @@ -113,4 +114,5 @@ static void _desktop_on_clicked(GtkWidget * widget) SubstructureNotifyMask | SubstructureRedirectMask, &xev); gdk_error_trap_pop(); +#endif } diff --git a/src/applets/embed.c b/src/applets/embed.c index 65e0ab2..d74473a 100644 --- a/src/applets/embed.c +++ b/src/applets/embed.c @@ -26,7 +26,10 @@ #include #include #if GTK_CHECK_VERSION(3, 0, 0) -# include +# include +# if defined(GDK_WINDOWING_X11) +# include +# endif #endif #include "Panel/applet.h" #define _(string) gettext(string) @@ -36,15 +39,17 @@ /* Embed */ /* private */ /* types */ +#if defined(GDK_WINDOWING_X11) typedef struct _EmbedWidget { GtkWidget * socket; -#if GTK_CHECK_VERSION(3, 0, 0) +# if GTK_CHECK_VERSION(3, 0, 0) unsigned long id; -#else +# else GdkNativeWindow id; -#endif +# endif } EmbedWidget; +#endif typedef struct _PanelApplet { @@ -57,8 +62,10 @@ typedef struct _PanelApplet GtkWidget * window; GtkWidget * vbox; +#if defined(GDK_WINDOWING_X11) EmbedWidget * widgets; size_t widgets_cnt; +#endif } Embed; @@ -107,8 +114,10 @@ static Embed * _embed_init(PanelAppletHelper * helper, embed->window = NULL; embed->vbox = NULL; embed->button = gtk_toggle_button_new(); +#if defined(GDK_WINDOWING_X11) embed->widgets = NULL; embed->widgets_cnt = 0; +#endif #if GTK_CHECK_VERSION(2, 12, 0) gtk_widget_set_tooltip_text(embed->button, _("Desktop notifications")); #endif @@ -138,7 +147,9 @@ static void _embed_destroy(Embed * embed) g_source_remove(embed->source); if(embed->vbox != NULL) g_object_unref(embed->vbox); +#if defined(GDK_WINDOWING_X11) free(embed->widgets); +#endif gtk_widget_destroy(embed->button); object_delete(embed); } @@ -165,6 +176,7 @@ static void _embed_on_added(gpointer data) static int _embed_on_desktop_message(void * data, uint32_t value1, uint32_t value2, uint32_t value3) { +#if defined(GDK_WINDOWING_X11) Embed * embed = data; GtkWidget * socket; size_t i; @@ -197,6 +209,7 @@ static int _embed_on_desktop_message(void * data, uint32_t value1, gtk_widget_show(socket); gtk_box_pack_start(GTK_BOX(embed->vbox), socket, FALSE, TRUE, 0); gtk_socket_add_id(GTK_SOCKET(socket), value2); +#endif return 0; } @@ -236,12 +249,13 @@ static gboolean _embed_on_idle(gpointer data) /* embed_on_removed */ static gboolean _embed_on_removed(GtkWidget * widget, gpointer data) { +#if defined(GDK_WINDOWING_X11) Embed * embed = data; size_t i; -#ifdef DEBUG +# ifdef DEBUG fprintf(stderr, "DEBUG: %s()\n", __func__); -#endif +# endif for(i = 0; i < embed->widgets_cnt; i++) { if(embed->widgets[i].socket != widget) @@ -257,10 +271,11 @@ static gboolean _embed_on_removed(GtkWidget * widget, gpointer data) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(embed->button), FALSE); gtk_widget_set_sensitive(embed->button, FALSE); -#ifdef EMBEDDED +# ifdef EMBEDDED gtk_widget_hide(embed->button); -#endif +# endif } +#endif return FALSE; }