applets: partially fix the build without X11

This commit is contained in:
Pierre Pronchery 2024-02-17 05:44:06 +01:00
parent 8b8169709a
commit 0ad30b30fb
3 changed files with 39 additions and 8 deletions

View File

@ -48,10 +48,12 @@ typedef struct _PanelApplet
GdkScreen * screen; GdkScreen * screen;
GdkWindow * root; GdkWindow * root;
#if defined(GDK_WINDOWING_X11)
Atom atom_active; Atom atom_active;
Atom atom_close; Atom atom_close;
Window window; Window window;
Window panel; Window panel;
#endif
} Close; } Close;
@ -64,11 +66,13 @@ static void _close_destroy(Close * close);
static void _close_do(Close * close); static void _close_do(Close * close);
/* callbacks */ /* callbacks */
#if defined(GDK_WINDOWING_X11)
static void _close_on_close(gpointer data); static void _close_on_close(gpointer data);
static GdkFilterReturn _close_on_filter(GdkXEvent * xevent, GdkEvent * event, static GdkFilterReturn _close_on_filter(GdkXEvent * xevent, GdkEvent * event,
gpointer data); gpointer data);
static void _close_on_screen_changed(GtkWidget * widget, GdkScreen * previous, static void _close_on_screen_changed(GtkWidget * widget, GdkScreen * previous,
gpointer data); gpointer data);
#endif
/* public */ /* public */
@ -110,17 +114,23 @@ static Close * _close_init(PanelAppletHelper * helper, GtkWidget ** widget)
image = gtk_image_new_from_stock(applet.icon, iconsize); image = gtk_image_new_from_stock(applet.icon, iconsize);
#endif #endif
gtk_button_set_image(GTK_BUTTON(close->widget), image); gtk_button_set_image(GTK_BUTTON(close->widget), image);
#if defined(GDK_WINDOWING_X11)
g_signal_connect_swapped(close->widget, "clicked", G_CALLBACK( g_signal_connect_swapped(close->widget, "clicked", G_CALLBACK(
_close_on_close), close); _close_on_close), close);
close->source = g_signal_connect(close->widget, "screen-changed", close->source = g_signal_connect(close->widget, "screen-changed",
G_CALLBACK(_close_on_screen_changed), close); G_CALLBACK(_close_on_screen_changed), close);
#else
close->source = 0;
#endif
close->display = NULL; close->display = NULL;
close->screen = NULL; close->screen = NULL;
close->root = NULL; close->root = NULL;
#if defined(GDK_WINDOWING_X11)
close->atom_active = 0; close->atom_active = 0;
close->atom_close = 0; close->atom_close = 0;
close->window = None; close->window = None;
close->panel = None; close->panel = None;
#endif
gtk_widget_show(close->widget); gtk_widget_show(close->widget);
*widget = close->widget; *widget = close->widget;
return close; return close;
@ -132,13 +142,16 @@ static void _close_destroy(Close * close)
{ {
if(close->source != 0) if(close->source != 0)
g_signal_handler_disconnect(close->widget, close->source); g_signal_handler_disconnect(close->widget, close->source);
#if defined(GDK_WINDOWING_X11)
if(close->root != NULL) if(close->root != NULL)
gdk_window_remove_filter(close->root, _close_on_filter, close); gdk_window_remove_filter(close->root, _close_on_filter, close);
#endif
gtk_widget_destroy(close->widget); gtk_widget_destroy(close->widget);
object_delete(close); object_delete(close);
} }
#if defined(GDK_WINDOWING_X11)
/* accessors */ /* accessors */
/* close_get_window_property */ /* close_get_window_property */
static int _close_get_window_property(Close * close, Window window, 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->display, "_NET_CLOSE_WINDOW");
_close_do(close); _close_do(close);
} }
#endif

View File

@ -92,6 +92,7 @@ static void _desktop_destroy(Desktop * desktop)
/* on_clicked */ /* on_clicked */
static void _desktop_on_clicked(GtkWidget * widget) static void _desktop_on_clicked(GtkWidget * widget)
{ {
#if defined(GDK_WINDOWING_X11)
GdkScreen * screen; GdkScreen * screen;
GdkDisplay * display; GdkDisplay * display;
GdkWindow * root; GdkWindow * root;
@ -113,4 +114,5 @@ static void _desktop_on_clicked(GtkWidget * widget)
SubstructureNotifyMask | SubstructureRedirectMask, SubstructureNotifyMask | SubstructureRedirectMask,
&xev); &xev);
gdk_error_trap_pop(); gdk_error_trap_pop();
#endif
} }

View File

@ -26,8 +26,11 @@
#include <System.h> #include <System.h>
#include <Desktop.h> #include <Desktop.h>
#if GTK_CHECK_VERSION(3, 0, 0) #if GTK_CHECK_VERSION(3, 0, 0)
# include <gdk/gdk.h>
# if defined(GDK_WINDOWING_X11)
# include <gtk/gtkx.h> # include <gtk/gtkx.h>
# endif # endif
#endif
#include "Panel/applet.h" #include "Panel/applet.h"
#define _(string) gettext(string) #define _(string) gettext(string)
#define N_(string) string #define N_(string) string
@ -36,6 +39,7 @@
/* Embed */ /* Embed */
/* private */ /* private */
/* types */ /* types */
#if defined(GDK_WINDOWING_X11)
typedef struct _EmbedWidget typedef struct _EmbedWidget
{ {
GtkWidget * socket; GtkWidget * socket;
@ -45,6 +49,7 @@ typedef struct _EmbedWidget
GdkNativeWindow id; GdkNativeWindow id;
# endif # endif
} EmbedWidget; } EmbedWidget;
#endif
typedef struct _PanelApplet typedef struct _PanelApplet
{ {
@ -57,8 +62,10 @@ typedef struct _PanelApplet
GtkWidget * window; GtkWidget * window;
GtkWidget * vbox; GtkWidget * vbox;
#if defined(GDK_WINDOWING_X11)
EmbedWidget * widgets; EmbedWidget * widgets;
size_t widgets_cnt; size_t widgets_cnt;
#endif
} Embed; } Embed;
@ -107,8 +114,10 @@ static Embed * _embed_init(PanelAppletHelper * helper,
embed->window = NULL; embed->window = NULL;
embed->vbox = NULL; embed->vbox = NULL;
embed->button = gtk_toggle_button_new(); embed->button = gtk_toggle_button_new();
#if defined(GDK_WINDOWING_X11)
embed->widgets = NULL; embed->widgets = NULL;
embed->widgets_cnt = 0; embed->widgets_cnt = 0;
#endif
#if GTK_CHECK_VERSION(2, 12, 0) #if GTK_CHECK_VERSION(2, 12, 0)
gtk_widget_set_tooltip_text(embed->button, _("Desktop notifications")); gtk_widget_set_tooltip_text(embed->button, _("Desktop notifications"));
#endif #endif
@ -138,7 +147,9 @@ static void _embed_destroy(Embed * embed)
g_source_remove(embed->source); g_source_remove(embed->source);
if(embed->vbox != NULL) if(embed->vbox != NULL)
g_object_unref(embed->vbox); g_object_unref(embed->vbox);
#if defined(GDK_WINDOWING_X11)
free(embed->widgets); free(embed->widgets);
#endif
gtk_widget_destroy(embed->button); gtk_widget_destroy(embed->button);
object_delete(embed); 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, static int _embed_on_desktop_message(void * data, uint32_t value1,
uint32_t value2, uint32_t value3) uint32_t value2, uint32_t value3)
{ {
#if defined(GDK_WINDOWING_X11)
Embed * embed = data; Embed * embed = data;
GtkWidget * socket; GtkWidget * socket;
size_t i; size_t i;
@ -197,6 +209,7 @@ static int _embed_on_desktop_message(void * data, uint32_t value1,
gtk_widget_show(socket); gtk_widget_show(socket);
gtk_box_pack_start(GTK_BOX(embed->vbox), socket, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(embed->vbox), socket, FALSE, TRUE, 0);
gtk_socket_add_id(GTK_SOCKET(socket), value2); gtk_socket_add_id(GTK_SOCKET(socket), value2);
#endif
return 0; return 0;
} }
@ -236,6 +249,7 @@ static gboolean _embed_on_idle(gpointer data)
/* embed_on_removed */ /* embed_on_removed */
static gboolean _embed_on_removed(GtkWidget * widget, gpointer data) static gboolean _embed_on_removed(GtkWidget * widget, gpointer data)
{ {
#if defined(GDK_WINDOWING_X11)
Embed * embed = data; Embed * embed = data;
size_t i; size_t i;
@ -261,6 +275,7 @@ static gboolean _embed_on_removed(GtkWidget * widget, gpointer data)
gtk_widget_hide(embed->button); gtk_widget_hide(embed->button);
# endif # endif
} }
#endif
return FALSE; return FALSE;
} }