all repos — tint2 @ 09b95187d344842234be3f78c2316330258905c5

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

fixed some bugs

git-svn-id: http://tint2.googlecode.com/svn/trunk@69 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
lorthiois@bbsoft.fr lorthiois@bbsoft.fr@121b4492-b84c-0410-8b4c-0d4edfb3f3cc
commit

09b95187d344842234be3f78c2316330258905c5

parent

d7d11324c03a1aff747c73bc7e07aa9fe38bd42c

M ChangeLogChangeLog

@@ -1,3 +1,8 @@

+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
M src/clock/clock.csrc/clock/clock.c

@@ -177,6 +177,7 @@ // resize other objects on panel

for (i=0 ; i < nb_panel ; i++) { panel1[i].area.resize = 1; } + systray.area.resize = 1; panel_refresh = 1; }
M src/config.csrc/config.c

@@ -309,9 +309,14 @@

/* 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);
M src/panel.csrc/panel.c

@@ -134,6 +134,7 @@ void cleanup_panel()

{ if (!panel1) return; + cleanup_systray(); cleanup_taskbar(); // font allocated once
M src/systray/systraybar.csrc/systray/systraybar.c

@@ -45,23 +45,14 @@

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;

@@ -94,10 +85,7 @@ }

free_area(&systray.area); - if (net_sel_win != None) { - XDestroyWindow(server.dsp, net_sel_win); - net_sel_win = None; - } + cleanup_net(); }

@@ -109,11 +97,11 @@ TrayWindow *traywin;

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);

@@ -171,8 +159,13 @@ printf("resize_systray %d %d\n", systray.area.posx, systray.area.width);

} -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);

@@ -202,7 +195,13 @@ return 1;

} -//int width, height; +void cleanup_net() +{ + if (net_sel_win != None) { + XDestroyWindow(server.dsp, net_sel_win); + net_sel_win = None; + } +} /* void fix_geometry()
M src/systray/systraybar.hsrc/systray/systraybar.h

@@ -37,8 +37,11 @@

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);
M src/tint.csrc/tint.c

@@ -86,7 +86,6 @@

void cleanup() { - cleanup_systray(); cleanup_panel(); if (time1_font_desc) pango_font_description_free(time1_font_desc);

@@ -549,6 +548,7 @@ break;

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);

@@ -558,6 +558,7 @@ }

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);
M src/util/window.csrc/util/window.c

@@ -65,6 +65,22 @@ {

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) {
M tintrc01tintrc01

@@ -55,7 +55,7 @@

#--------------------------------------------- # SYSTRAYBAR #--------------------------------------------- -systray_padding = 0 3 3 +systray_padding = 0 4 5 systray_background_id = 0 #---------------------------------------------
M tintrc02tintrc02

@@ -57,7 +57,7 @@

#--------------------------------------------- # SYSTRAYBAR #--------------------------------------------- -systray_padding = 0 2 2 +systray_padding = 0 2 3 systray_background_id = 0 #---------------------------------------------
M tintrc03tintrc03

@@ -6,11 +6,11 @@ #---------------------------------------------

# 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

@@ -21,17 +21,17 @@ # PANEL

#--------------------------------------------- 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 #---------------------------------------------

@@ -41,9 +41,9 @@ task_icon = 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

@@ -51,13 +51,13 @@

#--------------------------------------------- # 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
M tintrc04tintrc04

@@ -50,7 +50,7 @@

#--------------------------------------------- # SYSTRAYBAR #--------------------------------------------- -systray_padding = 5 3 5 +systray_padding = 6 2 6 systray_background_id = 1 #---------------------------------------------
M tintrc05tintrc05

@@ -22,7 +22,7 @@ panel_monitor = all

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

@@ -50,18 +50,18 @@

#--------------------------------------------- # 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 #---------------------------------------------
M tintrc07tintrc07

@@ -50,7 +50,7 @@

#--------------------------------------------- # SYSTRAYBAR #--------------------------------------------- -systray_padding = 6 3 4 +systray_padding = 6 3 5 systray_background_id = 1 #---------------------------------------------