+2009-03-07
+- fixed segfault when time1_format empty
+- fixed systray : when clock change size
+- fixed systray segfault when xrandr change size
+
2009-03-01
- fixed segfault on tray application due to tint2
for (i=0 ; i < nb_panel ; i++) {
panel1[i].area.resize = 1;
}
+ systray.area.resize = 1;
panel_refresh = 1;
}
/* Clock */
else if (strcmp (key, "time1_format") == 0) {
if (time1_format) g_free(time1_format);
- if (strlen(value) > 0) time1_format = strdup (value);
- else time1_format = 0;
- panel_config->clock.area.on_screen = 1;
+ if (strlen(value) > 0) {
+ time1_format = strdup (value);
+ panel_config->clock.area.on_screen = 1;
+ }
+ else {
+ time1_format = 0;
+ panel_config->clock.area.on_screen = 0;
+ }
}
else if (strcmp (key, "time2_format") == 0) {
if (time2_format) g_free(time2_format);
{
if (!panel1) return;
+ cleanup_systray();
cleanup_taskbar();
// font allocated once
void init_systray()
{
- cleanup_systray();
-
Panel *panel = &panel1[0];
systray.area.parent = panel;
systray.area.panel = panel;
systray.area._draw_foreground = draw_systray;
systray.area._resize = resize_systray;
- if (systray.area.on_screen) {
- if (XGetSelectionOwner(server.dsp, server.atom._NET_SYSTEM_TRAY_SCREEN) != None) {
- fprintf(stderr, "tint2 : another systray is running\n");
- systray.area.on_screen = 0;
- }
- }
-
if (systray.area.on_screen)
- systray.area.on_screen = net_init();
+ systray.area.on_screen = init_net();
if (!systray.area.on_screen)
return;
free_area(&systray.area);
- if (net_sel_win != None) {
- XDestroyWindow(server.dsp, net_sel_win);
- net_sel_win = None;
- }
+ cleanup_net();
}
GSList *l;
int icon_size;
+ printf("draw_systray %d %d\n", systray.area.posx, systray.area.width);
icon_size = sysbar->area.height - (2 * sysbar->area.pix.border.width) - (2 * sysbar->area.paddingy);
for (l = systray.list_icons; l ; l = l->next) {
traywin = (TrayWindow*)l->data;
- printf("draw_systray %d %d\n", systray.area.posx, systray.area.width);
// watch for the icon trying to resize itself!
XSelectInput(server.dsp, traywin->id, StructureNotifyMask);
}
-int net_init()
+int init_net()
{
+ if (XGetSelectionOwner(server.dsp, server.atom._NET_SYSTEM_TRAY_SCREEN) != None) {
+ fprintf(stderr, "tint2 : another systray is running\n");
+ return 0;
+ }
+
// init systray protocol
net_sel_win = XCreateSimpleWindow(server.dsp, server.root_win, -1, -1, 1, 1, 0, 0, 0);
}
-//int width, height;
+void cleanup_net()
+{
+ if (net_sel_win != None) {
+ XDestroyWindow(server.dsp, net_sel_win);
+ net_sel_win = None;
+ }
+}
/*
void fix_geometry()
void init_systray();
void cleanup_systray();
-int net_init();
+
+int init_net();
+void cleanup_net();
void net_message(XClientMessageEvent *e);
+
void remove_icon(TrayWindow *traywin);
void draw_systray(void *obj, cairo_t *c, int active);
void cleanup()
{
- cleanup_systray();
cleanup_panel();
if (time1_font_desc) pango_font_description_free(time1_font_desc);
case UnmapNotify:
case DestroyNotify:
+ if (!systray.area.on_screen) break;
for (it = systray.list_icons; it; it = g_slist_next(it)) {
if (((TrayWindow*)it->data)->id == e.xany.window) {
remove_icon((TrayWindow*)it->data);
break;
case ClientMessage:
+ if (!systray.area.on_screen) break;
//printf("ClientMessage\n");
if (e.xclient.message_type == server.atom._NET_SYSTEM_TRAY_OPCODE && e.xclient.format == 32 && e.xclient.window == net_sel_win) {
net_message(&e.xclient);
send_event32 (win, server.atom._NET_WM_STATE, 2, server.atom._NET_WM_STATE_SHADED);
}
+/*
+int x11_send_expose(Display *dpy, Window dst, int x, int y, int width, int height)
+{
+ XEvent xe;
+ int rc;
+ xe.type = Expose;
+ xe.xexpose.window = dst;
+ xe.xexpose.x = x;
+ xe.xexpose.y = y;
+ xe.xexpose.width = width;
+ xe.xexpose.height = height;
+ xe.xexpose.count = 0;
+ rc = XSendEvent(tray_data.dpy, dst, True, NoEventMask, &xe);
+ return x11_ok() && rc != 0;
+}
+*/
int window_is_hidden (Window win)
{
#---------------------------------------------
# SYSTRAYBAR
#---------------------------------------------
-systray_padding = 0 3 3
+systray_padding = 0 4 5
systray_background_id = 0
#---------------------------------------------
#---------------------------------------------
# SYSTRAYBAR
#---------------------------------------------
-systray_padding = 0 2 2
+systray_padding = 0 2 3
systray_background_id = 0
#---------------------------------------------
# BACKGROUND AND BORDER
#---------------------------------------------
rounded = 10
-border_width = 1
+border_width = 0
background_color = #ffffff 40
border_color = #ffffff 60
-rounded = 1
+rounded = 10
border_width = 0
background_color = #ffffff 30
border_color = #ffffff 15
#---------------------------------------------
panel_monitor = all
panel_position = bottom center
-panel_size = 100% 30
+panel_size = 97% 26
panel_margin = 0 0
-panel_padding = 6 3 6
+panel_padding = 0 0 10
font_shadow = 0
panel_background_id = 0
#---------------------------------------------
# TASKBAR
#---------------------------------------------
-taskbar_mode = multi_desktop
-taskbar_padding = 8 0 0
+taskbar_mode = single_desktop
+taskbar_padding = 0 0 0
taskbar_background_id = 1
#---------------------------------------------
task_text = 1
task_width = 160
task_centered = 1
-task_padding = 2 2
+task_padding = 5 4
task_font = Dejavu sans 8
-task_font_color = #000000 60
+task_font_color = #000000 65
task_active_font_color = #000000 100
task_background_id = 0
task_active_background_id = 2
#---------------------------------------------
# SYSTRAYBAR
#---------------------------------------------
-#systray_padding = 0 2 2
-systray_background_id = 0
+systray_padding = 8 3 4
+systray_background_id = 1
#---------------------------------------------
# CLOCK
#---------------------------------------------
-time1_format = %A %d %H:%M
+#time1_format = %A %d %H:%M
time1_font = Dejavu sans 10
#time2_format = %A %d %B
time2_font = sans 7
#---------------------------------------------
# SYSTRAYBAR
#---------------------------------------------
-systray_padding = 5 3 5
+systray_padding = 6 2 6
systray_background_id = 1
#---------------------------------------------
panel_position = bottom center
panel_size = 95% 22
panel_margin = 0 0
-panel_padding = 7 0
+panel_padding = 0 0 0
font_shadow = 0
panel_background_id = 1
#---------------------------------------------
# SYSTRAYBAR
#---------------------------------------------
-systray_padding = 0 3 4
+systray_padding = 4 3 4
systray_background_id = 0
#---------------------------------------------
# CLOCK
#---------------------------------------------
-time1_format = %H:%M
+time1_format = %H:%M:%S
time1_font = sans 13
#time2_format = %A %d %B
time2_font = sans 7
clock_font_color = #ffffff 90
-clock_padding = 1 0
+clock_padding = 4 0
clock_background_id = 0
#---------------------------------------------
#---------------------------------------------
# SYSTRAYBAR
#---------------------------------------------
-systray_padding = 6 3 4
+systray_padding = 6 3 5
systray_background_id = 1
#---------------------------------------------