applets: partially fix the build without X11
This commit is contained in:
parent
8b8169709a
commit
0ad30b30fb
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -26,7 +26,10 @@
|
|||
#include <System.h>
|
||||
#include <Desktop.h>
|
||||
#if GTK_CHECK_VERSION(3, 0, 0)
|
||||
# include <gtk/gtkx.h>
|
||||
# include <gdk/gdk.h>
|
||||
# if defined(GDK_WINDOWING_X11)
|
||||
# include <gtk/gtkx.h>
|
||||
# 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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user