X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fsystray%2Fsystraybar.h;h=dd5e08dd8c9b9c5793590c153fde86d47346a8ee;hb=2fd9e91579d04f8eeadea8a1584b2d994626a8f1;hp=7fd8c9e5ef525ca6c737cdd749cadc165e4cf8e4;hpb=ad0010a813450116f875d943f36cd6c93d84cb04;p=chaz%2Ftint2 diff --git a/src/systray/systraybar.h b/src/systray/systraybar.h index 7fd8c9e..dd5e08d 100644 --- a/src/systray/systraybar.h +++ b/src/systray/systraybar.h @@ -2,31 +2,83 @@ * Copyright (C) 2009 thierry lorthiois (lorthiois@bbsoft.fr) * * systraybar +* systray implementation come from 'docker-1.5' by Ben Jansens, +* and from systray/xembed specification (freedesktop.org). * **************************************************************************/ #ifndef SYSTRAYBAR_H #define SYSTRAYBAR_H +#include "common.h" #include "area.h" +#include "timer.h" +#include + +// XEMBED messages +#define XEMBED_EMBEDDED_NOTIFY 0 +// Flags for _XEMBED_INFO +#define XEMBED_MAPPED (1 << 0) typedef struct { - // always start with area - Area area; + // always start with area + Area area; + GSList *list_icons; + int sort; + int alpha, saturation, brightness; + int icon_size, icons_per_column, icons_per_row, marging; } Systraybar; -// -------------------------------------------------- -// global taskbar parameter -Area g_systraybar; +typedef struct +{ + Window id; + Window tray_id; + int x, y; + int width, height; + // TODO: manage icon's show/hide + int hide; + int depth; + Damage damage; + timeout* render_timeout; +} TrayWindow; + + +// net_sel_win != None when protocol started +extern Window net_sel_win; +extern Systraybar systray; +extern int refresh_systray; +extern int systray_enabled; +extern int systray_max_icon_size; + +// default global data +void default_systray(); + +// freed memory +void cleanup_systray(); + +// initialize protocol and panel position +void init_systray(); +void init_systray_panel(void *p); + +void draw_systray(void *obj, cairo_t *c); +int resize_systray(void *obj); -// return 1 if task_width changed -int resize_systray (Systraybar *sysbar); +// systray protocol +// many tray icon doesn't manage stop/restart of the systray manager +void start_net(); +void stop_net(); +void net_message(XClientMessageEvent *e); +gboolean add_icon(Window id); +void remove_icon(TrayWindow *traywin); +void refresh_systray_icon(); +void systray_render_icon(TrayWindow* traywin); +void kde_update_icons(); #endif