]> Dogcows Code - chaz/tint2/blobdiff - src/systray/systraybar.h
rendering engine : _on_change_layout() called when pos/size changed
[chaz/tint2] / src / systray / systraybar.h
index 5222dd6b3d36b8bb22c5404c089470d8796b4a89..d3f5a7213ee1edb5a95c153cacc58b03f345833a 100644 (file)
@@ -2,49 +2,84 @@
 * Copyright (C) 2009 thierry lorthiois (lorthiois@bbsoft.fr)
 *
 * systraybar
-* based on 'docker-1.5' from Ben Jansens
+* systray implementation come from 'docker-1.5' by Ben Jansens,
+* and from systray/xembed specification (freedesktop.org).
 *
 **************************************************************************/
 
 #ifndef SYSTRAYBAR_H
 #define SYSTRAYBAR_H
 
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
+#include "common.h"
 #include "area.h"
+#include "timer.h"
+#include <X11/extensions/Xdamage.h>
+
+// 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;
 
 
 typedef struct
 {
-   Window id;
-   int x, y;
-   int width, height;
-
-   long *icon_data;
+       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();
 
-void init_systray();
+// freed memory
 void cleanup_systray();
-int net_init();
-void net_message(XClientMessageEvent *e);
 
-// return 1 if task_width changed
-int resize_systray (Systraybar *sysbar);
+// 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);
+void on_change_systray(void *obj);
+
+
+// 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
 
This page took 0.024333 seconds and 4 git commands to generate.