Merge branch 'khorben/no-x11'
This commit is contained in:
commit
fb69806f10
|
@ -1,5 +1,5 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2016-2023 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2016-2024 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Desktop Panel */
|
||||
/* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -21,7 +21,7 @@
|
|||
#include <errno.h>
|
||||
#include <libintl.h>
|
||||
#include <gdk/gdk.h>
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
# include <gdk/gdkx.h>
|
||||
# include <X11/XKBlib.h>
|
||||
# include <X11/extensions/XKBfile.h>
|
||||
|
@ -38,6 +38,7 @@
|
|||
typedef struct _PanelApplet
|
||||
{
|
||||
PanelAppletHelper * helper;
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
GtkWidget * widget;
|
||||
GtkWidget * leds[XkbNumIndicators];
|
||||
gulong source;
|
||||
|
@ -45,6 +46,7 @@ typedef struct _PanelApplet
|
|||
|
||||
GdkDisplay * display;
|
||||
XkbDescPtr xkb;
|
||||
#endif
|
||||
} LEDs;
|
||||
|
||||
|
||||
|
@ -54,9 +56,11 @@ static LEDs * _leds_init(PanelAppletHelper * helper, GtkWidget ** widget);
|
|||
static void _leds_destroy(LEDs * leds);
|
||||
|
||||
/* callbacks */
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
static void _leds_on_screen_changed(GtkWidget * widget, GdkScreen * previous,
|
||||
gpointer data);
|
||||
static gboolean _leds_on_timeout(gpointer data);
|
||||
#endif
|
||||
|
||||
|
||||
/* public */
|
||||
|
@ -79,6 +83,7 @@ PanelAppletDefinition applet =
|
|||
/* leds_init */
|
||||
static LEDs * _leds_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
LEDs * leds;
|
||||
size_t i;
|
||||
|
||||
|
@ -104,12 +109,20 @@ static LEDs * _leds_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
|||
gtk_widget_show(leds->widget);
|
||||
*widget = leds->widget;
|
||||
return leds;
|
||||
#else
|
||||
(void) helper;
|
||||
(void) widget;
|
||||
|
||||
error_set_code(-ENOSYS, "X11 support not detected");
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* leds_destroy */
|
||||
static void _leds_destroy(LEDs * leds)
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* XXX free xkb? */
|
||||
if(leds->timeout != 0)
|
||||
g_source_remove(leds->timeout);
|
||||
|
@ -117,9 +130,13 @@ static void _leds_destroy(LEDs * leds)
|
|||
g_signal_handler_disconnect(leds->widget, leds->source);
|
||||
gtk_widget_destroy(leds->widget);
|
||||
object_delete(leds);
|
||||
#else
|
||||
(void) leds;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* callbacks */
|
||||
/* leds_on_screen_changed */
|
||||
static void _leds_on_screen_changed(GtkWidget * widget, GdkScreen * previous,
|
||||
|
@ -245,3 +262,4 @@ static gboolean _leds_on_timeout(gpointer data)
|
|||
}
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2012-2023 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2012-2024 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Desktop Panel */
|
||||
/* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -29,14 +29,16 @@
|
|||
#include <errno.h>
|
||||
#include <libintl.h>
|
||||
#include <gtk/gtk.h>
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
# include <gdk/gdkx.h>
|
||||
#endif
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
# if GTK_CHECK_VERSION(3, 0, 0)
|
||||
# include <gtk/gtkx.h>
|
||||
# else
|
||||
# include <gdk/gdkx.h>
|
||||
# endif
|
||||
#endif
|
||||
#include <System.h>
|
||||
#include "Panel/applet.h"
|
||||
|
||||
#define _(string) gettext(string)
|
||||
#define N_(string) string
|
||||
|
||||
|
@ -47,6 +49,7 @@
|
|||
typedef struct _PanelApplet
|
||||
{
|
||||
PanelAppletHelper * helper;
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
GtkWidget * widget;
|
||||
|
||||
guint source;
|
||||
|
@ -65,6 +68,7 @@ typedef struct _PanelApplet
|
|||
GtkWidget * pr_width;
|
||||
GtkWidget * pr_height;
|
||||
GtkWidget * pr_ratio;
|
||||
#endif
|
||||
} Mixer;
|
||||
|
||||
|
||||
|
@ -76,6 +80,7 @@ static void _mixer_destroy(Mixer * mixer);
|
|||
static GtkWidget * _mixer_settings(Mixer * mixer, gboolean apply,
|
||||
gboolean reset);
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* useful */
|
||||
static int _mixer_spawn(Mixer * mixer, unsigned long * xid);
|
||||
|
||||
|
@ -83,6 +88,7 @@ static int _mixer_spawn(Mixer * mixer, unsigned long * xid);
|
|||
static void _mixer_on_child(GPid pid, gint status, gpointer data);
|
||||
static gboolean _mixer_on_removed(void);
|
||||
static void _mixer_on_toggled(GtkWidget * widget, gpointer data);
|
||||
#endif
|
||||
|
||||
|
||||
/* constants */
|
||||
|
@ -107,13 +113,16 @@ PanelAppletDefinition applet =
|
|||
/* private */
|
||||
/* functions */
|
||||
/* mixer_init */
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
static void _init_size(Mixer * mixer, PanelAppletHelper * helper);
|
||||
/* callbacks */
|
||||
static gboolean _init_idle(gpointer data);
|
||||
#endif
|
||||
|
||||
static Mixer * _mixer_init(PanelAppletHelper * helper,
|
||||
GtkWidget ** widget)
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
Mixer * mixer;
|
||||
GtkWidget * image;
|
||||
|
||||
|
@ -144,8 +153,16 @@ static Mixer * _mixer_init(PanelAppletHelper * helper,
|
|||
mixer->source = g_idle_add(_init_idle, mixer);
|
||||
*widget = mixer->widget;
|
||||
return mixer;
|
||||
#else
|
||||
(void) helper;
|
||||
(void) widget;
|
||||
|
||||
error_set_code(-ENOSYS, "X11 support not detected");
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
static void _init_size(Mixer * mixer, PanelAppletHelper * helper)
|
||||
{
|
||||
char const * p;
|
||||
|
@ -200,20 +217,26 @@ static gboolean _init_idle(gpointer data)
|
|||
gtk_widget_show(mixer->socket);
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* mixer_destroy */
|
||||
static void _mixer_destroy(Mixer * mixer)
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
if(mixer->source > 0)
|
||||
g_source_remove(mixer->source);
|
||||
if(mixer->pid > 0)
|
||||
g_spawn_close_pid(mixer->pid);
|
||||
gtk_widget_destroy(mixer->widget);
|
||||
free(mixer);
|
||||
#else
|
||||
(void) mixer;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* mixer_settings */
|
||||
static void _settings_apply(Mixer * mixer, PanelAppletHelper * helper);
|
||||
static void _settings_reset(Mixer * mixer, PanelAppletHelper * helper);
|
||||
|
@ -221,10 +244,12 @@ static GtkWidget * _settings_widget(Mixer * mixer);
|
|||
/* callbacks */
|
||||
static void _settings_on_width_value_changed(gpointer data);
|
||||
static void _settings_on_height_value_changed(gpointer data);
|
||||
#endif
|
||||
|
||||
static GtkWidget * _mixer_settings(Mixer * mixer, gboolean apply,
|
||||
gboolean reset)
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
PanelAppletHelper * helper = mixer->helper;
|
||||
|
||||
# ifdef DEBUG
|
||||
|
@ -241,8 +266,16 @@ static GtkWidget * _mixer_settings(Mixer * mixer, gboolean apply,
|
|||
if(apply == TRUE)
|
||||
_settings_apply(mixer, helper);
|
||||
return mixer->pr_box;
|
||||
#else
|
||||
(void) mixer;
|
||||
(void) apply;
|
||||
(void) reset;
|
||||
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
static void _settings_apply(Mixer * mixer, PanelAppletHelper * helper)
|
||||
{
|
||||
char const * p;
|
||||
|
@ -485,3 +518,4 @@ static void _mixer_on_toggled(GtkWidget * widget, gpointer data)
|
|||
else
|
||||
gtk_widget_hide(mixer->window);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2010-2023 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2010-2024 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Pager Panel */
|
||||
/* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -52,6 +52,7 @@ typedef struct _PanelApplet
|
|||
{
|
||||
PanelAppletHelper * helper;
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
GtkWidget * box;
|
||||
gulong source;
|
||||
|
||||
|
@ -62,10 +63,12 @@ typedef struct _PanelApplet
|
|||
GdkDisplay * display;
|
||||
GdkScreen * screen;
|
||||
GdkWindow * root;
|
||||
#endif
|
||||
} Pager;
|
||||
|
||||
|
||||
/* constants */
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
static const char * _pager_atom[PAGER_ATOM_COUNT] =
|
||||
{
|
||||
"_NET_CURRENT_DESKTOP",
|
||||
|
@ -73,12 +76,14 @@ static const char * _pager_atom[PAGER_ATOM_COUNT] =
|
|||
"_NET_NUMBER_OF_DESKTOPS",
|
||||
"UTF8_STRING"
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
/* prototypes */
|
||||
static Pager * _pager_init(PanelAppletHelper * helper, GtkWidget ** widget);
|
||||
static void _pager_destroy(Pager * pager);
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* accessors */
|
||||
static int _pager_get_current_desktop(Pager * pager);
|
||||
static char ** _pager_get_desktop_names(Pager * pager);
|
||||
|
@ -96,6 +101,7 @@ static GdkFilterReturn _pager_on_filter(GdkXEvent * xevent, GdkEvent * event,
|
|||
gpointer data);
|
||||
static void _pager_on_screen_changed(GtkWidget * widget, GdkScreen * previous,
|
||||
gpointer data);
|
||||
#endif
|
||||
|
||||
|
||||
/* public */
|
||||
|
@ -118,6 +124,7 @@ PanelAppletDefinition applet =
|
|||
/* pager_init */
|
||||
static Pager * _pager_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
Pager * pager;
|
||||
GtkOrientation orientation;
|
||||
|
||||
|
@ -144,12 +151,20 @@ static Pager * _pager_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
|||
pager->root = NULL;
|
||||
*widget = pager->box;
|
||||
return pager;
|
||||
#else
|
||||
(void) helper;
|
||||
(void) widget;
|
||||
|
||||
error_set_code(-ENOSYS, "X11 support not detected");
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* pager_destroy */
|
||||
static void _pager_destroy(Pager * pager)
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
if(pager->source != 0)
|
||||
g_signal_handler_disconnect(pager->box, pager->source);
|
||||
pager->source = 0;
|
||||
|
@ -157,9 +172,13 @@ static void _pager_destroy(Pager * pager)
|
|||
gdk_window_remove_filter(pager->root, _pager_on_filter, pager);
|
||||
gtk_widget_destroy(pager->box);
|
||||
free(pager);
|
||||
#else
|
||||
(void) pager;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* accessors */
|
||||
/* pager_get_current_desktop */
|
||||
static int _pager_get_current_desktop(Pager * pager)
|
||||
|
@ -424,3 +443,4 @@ static void _pager_on_screen_changed(GtkWidget * widget, GdkScreen * previous,
|
|||
pager->display, _pager_atom[i]);
|
||||
_pager_do(pager);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2010-2023 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2010-2024 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Pager Panel */
|
||||
/* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -20,15 +20,17 @@
|
|||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <gtk/gtk.h>
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
# if GTK_CHECK_VERSION(3, 0, 0)
|
||||
# include <gtk/gtkx.h>
|
||||
#endif
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
# else
|
||||
# include <gdk/gdkx.h>
|
||||
# include <X11/Xatom.h>
|
||||
# endif
|
||||
#endif
|
||||
#include <System.h>
|
||||
#include "Panel/applet.h"
|
||||
|
||||
#define N_(string) string
|
||||
|
||||
|
||||
|
@ -38,9 +40,11 @@
|
|||
typedef struct _PanelApplet
|
||||
{
|
||||
PanelAppletHelper * helper;
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
GtkWidget * hbox;
|
||||
GtkWidget * owner;
|
||||
gulong source;
|
||||
#endif
|
||||
} Systray;
|
||||
|
||||
|
||||
|
@ -54,12 +58,14 @@ typedef struct _PanelApplet
|
|||
static Systray * _systray_init(PanelAppletHelper * helper, GtkWidget ** widget);
|
||||
static void _systray_destroy(Systray * systray);
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* callbacks */
|
||||
static GdkFilterReturn _systray_on_filter(GdkXEvent * xevent, GdkEvent * event,
|
||||
gpointer data);
|
||||
static void _systray_on_owner_destroy(gpointer data);
|
||||
static void _systray_on_screen_changed(GtkWidget * widget, GdkScreen * previous,
|
||||
gpointer data);
|
||||
#endif
|
||||
|
||||
|
||||
/* public */
|
||||
|
@ -82,6 +88,7 @@ PanelAppletDefinition applet =
|
|||
/* systray_init */
|
||||
static Systray * _systray_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
Systray * systray;
|
||||
gint height = 24;
|
||||
|
||||
|
@ -105,12 +112,20 @@ static Systray * _systray_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
|||
gtk_widget_show(systray->hbox);
|
||||
*widget = systray->hbox;
|
||||
return systray;
|
||||
#else
|
||||
(void) helper;
|
||||
(void) widget;
|
||||
|
||||
error_set_code(-ENOSYS, "X11 support not detected");
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* systray_destroy */
|
||||
static void _systray_destroy(Systray * systray)
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
GdkWindow * window;
|
||||
|
||||
if(systray->source != 0)
|
||||
|
@ -124,9 +139,13 @@ static void _systray_destroy(Systray * systray)
|
|||
}
|
||||
gtk_widget_destroy(systray->hbox);
|
||||
free(systray);
|
||||
#else
|
||||
(void) systray;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* callbacks */
|
||||
/* systray_on_filter */
|
||||
static GdkFilterReturn _filter_clientmessage(Systray * systray,
|
||||
|
@ -233,3 +252,4 @@ static void _systray_on_screen_changed(GtkWidget * widget, GdkScreen * previous,
|
|||
| GDK_STRUCTURE_MASK);
|
||||
gdk_window_add_filter(window, _systray_on_filter, systray);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2011-2023 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2011-2024 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Desktop Panel */
|
||||
/* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -20,14 +20,19 @@
|
|||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <libintl.h>
|
||||
#include <gdk/gdk.h>
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
#include <gtk/gtk.h>
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
# if GTK_CHECK_VERSION(3, 0, 0)
|
||||
# include <gtk/gtkx.h>
|
||||
# else
|
||||
# include <gdk/gdkx.h>
|
||||
# endif
|
||||
# include <X11/Xatom.h>
|
||||
#endif
|
||||
#include <System.h>
|
||||
#include <Desktop.h>
|
||||
#include "Panel/applet.h"
|
||||
|
||||
#define _(string) gettext(string)
|
||||
#define N_(string) string
|
||||
|
||||
|
@ -39,6 +44,7 @@
|
|||
/* Tasks */
|
||||
/* private */
|
||||
/* types */
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
# define atom(a) TASKS_ATOM_ ## a
|
||||
typedef enum _TasksAtom
|
||||
{
|
||||
|
@ -47,9 +53,11 @@ typedef enum _TasksAtom
|
|||
# define TASKS_ATOM_LAST TASKS_ATOM_UTF8_STRING
|
||||
# define TASKS_ATOM_COUNT (TASKS_ATOM_LAST + 1)
|
||||
# undef atom
|
||||
#endif
|
||||
|
||||
typedef struct _PanelApplet Tasks;
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
typedef struct _Task
|
||||
{
|
||||
Tasks * tasks;
|
||||
|
@ -60,10 +68,12 @@ typedef struct _Task
|
|||
gboolean delete;
|
||||
gboolean reorder;
|
||||
} Task;
|
||||
#endif
|
||||
|
||||
struct _PanelApplet
|
||||
{
|
||||
PanelAppletHelper * helper;
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
Task ** tasks;
|
||||
size_t tasks_cnt;
|
||||
gboolean label;
|
||||
|
@ -81,9 +91,11 @@ struct _PanelApplet
|
|||
GdkDisplay * display;
|
||||
GdkScreen * screen;
|
||||
GdkWindow * root;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* constants */
|
||||
# define atom(a) "" # a
|
||||
static const char * _tasks_atom[TASKS_ATOM_COUNT] =
|
||||
|
@ -95,9 +107,11 @@ static const char * _tasks_atom[TASKS_ATOM_COUNT] =
|
|||
# define _NET_WM_MOVERESIZE_MOVE 8 /* movement only */
|
||||
# define _NET_WM_MOVERESIZE_SIZE_KEYBOARD 9 /* size via keyboard */
|
||||
# define _NET_WM_MOVERESIZE_MOVE_KEYBOARD 10 /* move via keyboard */
|
||||
#endif
|
||||
|
||||
|
||||
/* prototypes */
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* task */
|
||||
static Task * _task_new(Tasks * tasks, gboolean label, gboolean reorder,
|
||||
Window window, char const * name, GdkPixbuf * pixbuf);
|
||||
|
@ -106,11 +120,13 @@ static void _task_set(Task * task, char const * name, GdkPixbuf * pixbuf);
|
|||
static void _task_toggle_state(Task * task, TasksAtom state);
|
||||
static void _task_toggle_state2(Task * task, TasksAtom state1,
|
||||
TasksAtom state2);
|
||||
#endif
|
||||
|
||||
/* tasks */
|
||||
static Tasks * _tasks_init(PanelAppletHelper * helper, GtkWidget ** widget);
|
||||
static void _tasks_destroy(Tasks * tasks);
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* accessors */
|
||||
static int _tasks_get_current_desktop(Tasks * tasks);
|
||||
static int _tasks_get_text_property(Tasks * tasks, Window window, Atom property,
|
||||
|
@ -143,6 +159,7 @@ static void _task_on_popup_shade(gpointer data);
|
|||
static void _task_on_popup_stick(gpointer data);
|
||||
static void _task_on_screen_changed(GtkWidget * widget, GdkScreen * previous,
|
||||
gpointer data);
|
||||
#endif
|
||||
|
||||
|
||||
/* public */
|
||||
|
@ -164,6 +181,7 @@ PanelAppletDefinition applet =
|
|||
};
|
||||
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* private */
|
||||
/* functions */
|
||||
/* Task */
|
||||
|
@ -282,12 +300,14 @@ static void _task_toggle_state2(Task * task, TasksAtom state1,
|
|||
&xev);
|
||||
gdk_error_trap_pop_ignored();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* Tasks */
|
||||
/* tasks_init */
|
||||
static Tasks * _tasks_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
Tasks * tasks;
|
||||
char const * p;
|
||||
GtkOrientation orientation;
|
||||
|
@ -361,12 +381,20 @@ static Tasks * _tasks_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
|||
gtk_widget_show_all(tasks->widget);
|
||||
*widget = tasks->widget;
|
||||
return tasks;
|
||||
#else
|
||||
(void) helper;
|
||||
(void) widget;
|
||||
|
||||
error_set_code(-ENOSYS, "X11 support not detected");
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* tasks_destroy */
|
||||
static void _tasks_destroy(Tasks * tasks)
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
size_t i;
|
||||
|
||||
if(tasks->source != 0)
|
||||
|
@ -381,9 +409,13 @@ static void _tasks_destroy(Tasks * tasks)
|
|||
tasks->tasks_cnt = 0;
|
||||
gtk_widget_destroy(tasks->widget);
|
||||
free(tasks);
|
||||
#else
|
||||
(void) tasks;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* accessors */
|
||||
/* tasks_get_current_desktop */
|
||||
static int _tasks_get_current_desktop(Tasks * tasks)
|
||||
|
@ -1090,3 +1122,4 @@ static void _task_on_screen_changed(GtkWidget * widget, GdkScreen * previous,
|
|||
tasks->display, _tasks_atom[i]);
|
||||
_tasks_do(tasks);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2011-2023 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2011-2024 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Desktop Panel */
|
||||
/* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -20,13 +20,14 @@
|
|||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <libintl.h>
|
||||
#include <gdk/gdk.h>
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
#include <gtk/gtk.h>
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
# include <gdk/gdkx.h>
|
||||
# include <X11/Xatom.h>
|
||||
#endif
|
||||
#include <System.h>
|
||||
#include "Panel/applet.h"
|
||||
|
||||
#define _(string) gettext(string)
|
||||
#define N_(string) string
|
||||
|
||||
|
@ -37,6 +38,7 @@
|
|||
typedef struct _PanelApplet
|
||||
{
|
||||
PanelAppletHelper * helper;
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
GtkWidget * widget;
|
||||
gulong source;
|
||||
|
||||
|
@ -48,6 +50,7 @@ typedef struct _PanelApplet
|
|||
Atom atom_name;
|
||||
Atom atom_utf8_string;
|
||||
Atom atom_visible_name;
|
||||
#endif
|
||||
} Title;
|
||||
|
||||
|
||||
|
@ -56,6 +59,7 @@ typedef struct _PanelApplet
|
|||
static Title * _title_init(PanelAppletHelper * helper, GtkWidget ** widget);
|
||||
static void _title_destroy(Title * title);
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* accessors */
|
||||
static int _title_get_text_property(Title * title, Window window, Atom property,
|
||||
char ** ret);
|
||||
|
@ -68,6 +72,7 @@ static GdkFilterReturn _title_on_filter(GdkXEvent * xevent, GdkEvent * event,
|
|||
gpointer data);
|
||||
static void _title_on_screen_changed(GtkWidget * widget, GdkScreen * previous,
|
||||
gpointer data);
|
||||
#endif
|
||||
|
||||
|
||||
/* public */
|
||||
|
@ -90,6 +95,7 @@ PanelAppletDefinition applet =
|
|||
/* title_init */
|
||||
static Title * _title_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
Title * title;
|
||||
PangoFontDescription * bold;
|
||||
|
||||
|
@ -119,12 +125,20 @@ static Title * _title_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
|||
gtk_widget_show(title->widget);
|
||||
*widget = title->widget;
|
||||
return title;
|
||||
#else
|
||||
(void) helper;
|
||||
(void) widget;
|
||||
|
||||
error_set_code(-ENOSYS, "X11 support not detected");
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* title_destroy */
|
||||
static void _title_destroy(Title * title)
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
if(title->source != 0)
|
||||
g_signal_handler_disconnect(title->widget, title->source);
|
||||
title->source = 0;
|
||||
|
@ -132,9 +146,13 @@ static void _title_destroy(Title * title)
|
|||
gdk_window_remove_filter(title->root, _title_on_filter, title);
|
||||
gtk_widget_destroy(title->widget);
|
||||
free(title);
|
||||
#else
|
||||
(void) title;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* accessors */
|
||||
/* title_get_window_property */
|
||||
static int _title_get_window_property(Title * title, Window window,
|
||||
|
@ -325,3 +343,4 @@ static void _title_on_screen_changed(GtkWidget * widget, GdkScreen * previous,
|
|||
title->display, "_NET_WM_VISIBLE_NAME");
|
||||
_title_do(title);
|
||||
}
|
||||
#endif
|
||||
|
|
20
src/window.c
20
src/window.c
|
@ -1,5 +1,5 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2011-2022 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2011-2024 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Desktop Panel */
|
||||
/* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -22,8 +22,10 @@
|
|||
#include <libintl.h>
|
||||
#include <gtk/gtk.h>
|
||||
#if GTK_CHECK_VERSION(3, 0, 0)
|
||||
# if defined(GDK_WINDOWING_X11)
|
||||
# include <gtk/gtkx.h>
|
||||
# endif
|
||||
#endif
|
||||
#include "window.h"
|
||||
#include "../config.h"
|
||||
#define _(string) gettext(string)
|
||||
|
@ -113,8 +115,14 @@ PanelWindow * panel_window_new(PanelAppletHelper * helper,
|
|||
}
|
||||
else
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
panel->window = gtk_plug_new(0);
|
||||
gtk_widget_show(panel->window);
|
||||
#else
|
||||
error_set_code(1, _("Unsupported panel position"));
|
||||
object_delete(panel);
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
gtk_container_set_border_width(GTK_CONTAINER(panel->window), 2);
|
||||
panel->height = icon_height + (PANEL_BORDER_WIDTH * 4);
|
||||
|
@ -266,8 +274,14 @@ int panel_window_get_width(PanelWindow * panel)
|
|||
/* panel_window_get_xid */
|
||||
uint32_t panel_window_get_xid(PanelWindow * panel)
|
||||
{
|
||||
return (panel->position == PANEL_WINDOW_POSITION_EMBEDDED)
|
||||
? gtk_plug_get_id(GTK_PLUG(panel->window)) : 0;
|
||||
#if !defined(GDK_WINDOWING_X11)
|
||||
(void) panel;
|
||||
|
||||
#else
|
||||
if(panel->position == PANEL_WINDOW_POSITION_EMBEDDED)
|
||||
return gtk_plug_get_id(GTK_PLUG(panel->window));
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2012-2022 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2012-2024 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Desktop Panel */
|
||||
/* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -22,12 +22,16 @@
|
|||
#include <string.h>
|
||||
#include <locale.h>
|
||||
#include <libintl.h>
|
||||
#include <System/error.h>
|
||||
#include <Desktop.h>
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
# if GTK_CHECK_VERSION(3, 0, 0)
|
||||
# include <gtk/gtkx.h>
|
||||
# endif
|
||||
#endif
|
||||
#include "../include/Panel.h"
|
||||
#include "../config.h"
|
||||
|
||||
#define _(string) gettext(string)
|
||||
|
||||
/* constants */
|
||||
|
@ -50,8 +54,10 @@
|
|||
static int _message(unsigned int timeout, char const * stock,
|
||||
char const * title, char const * message);
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* callbacks */
|
||||
static gboolean _message_on_timeout(gpointer data);
|
||||
#endif
|
||||
|
||||
static int _error(char const * message, int ret);
|
||||
static int _usage(void);
|
||||
|
@ -62,6 +68,7 @@ static int _usage(void);
|
|||
static int _message(unsigned int timeout, char const * stock,
|
||||
char const * title, char const * message)
|
||||
{
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
PangoFontDescription * bold;
|
||||
GtkWidget * plug;
|
||||
GtkWidget * hbox;
|
||||
|
@ -136,9 +143,19 @@ static int _message(unsigned int timeout, char const * stock,
|
|||
pango_font_description_free(bold);
|
||||
gtk_main();
|
||||
return 0;
|
||||
#else
|
||||
(void) timeout;
|
||||
(void) stock;
|
||||
(void) title;
|
||||
(void) message;
|
||||
|
||||
return error_set_print(PROGNAME_PANEL_MESSAGE, 2, "%s",
|
||||
"X11 support not detected");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#if defined(GDK_WINDOWING_X11)
|
||||
/* callbacks */
|
||||
/* message_on_timeout */
|
||||
static gboolean _message_on_timeout(gpointer data)
|
||||
|
@ -148,6 +165,7 @@ static gboolean _message_on_timeout(gpointer data)
|
|||
gtk_main_quit();
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* error */
|
||||
|
|
Loading…
Reference in New Issue
Block a user