tint2/src/systray/systraybar.h
Andreas.Fink85 349cb2f023 *fix* only changed systray icons are rendered
git-svn-id: http://tint2.googlecode.com/svn/trunk@323 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
2010-01-06 19:30:55 +00:00

74 lines
1.6 KiB
C

/**************************************************************************
* 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 <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;
GSList *list_icons;
int sort;
int alpha, saturation, brightness;
} 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;
} 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;
void init_systray();
void init_systray_panel(void *p);
void cleanup_systray();
void draw_systray(void *obj, cairo_t *c, int active);
void resize_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