fixed some bugs
git-svn-id: http://tint2.googlecode.com/svn/trunk@69 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
parent
d7d11324c0
commit
09b95187d3
15 changed files with 72 additions and 41 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -177,6 +177,7 @@ void resize_clock (void *obj)
|
|||
for (i=0 ; i < nb_panel ; i++) {
|
||||
panel1[i].area.resize = 1;
|
||||
}
|
||||
systray.area.resize = 1;
|
||||
panel_refresh = 1;
|
||||
}
|
||||
|
||||
|
|
11
src/config.c
11
src/config.c
|
@ -309,9 +309,14 @@ void add_entry (char *key, char *value)
|
|||
/* 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);
|
||||
|
|
|
@ -134,6 +134,7 @@ void cleanup_panel()
|
|||
{
|
||||
if (!panel1) return;
|
||||
|
||||
cleanup_systray();
|
||||
cleanup_taskbar();
|
||||
|
||||
// font allocated once
|
||||
|
|
|
@ -45,23 +45,14 @@ Systraybar systray;
|
|||
|
||||
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 @@ void cleanup_systray()
|
|||
|
||||
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 @@ void draw_systray(void *obj, cairo_t *c, int active)
|
|||
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 @@ void resize_systray(void *obj)
|
|||
}
|
||||
|
||||
|
||||
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 @@ int net_init()
|
|||
}
|
||||
|
||||
|
||||
//int width, height;
|
||||
void cleanup_net()
|
||||
{
|
||||
if (net_sel_win != None) {
|
||||
XDestroyWindow(server.dsp, net_sel_win);
|
||||
net_sel_win = None;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void fix_geometry()
|
||||
|
|
|
@ -37,8 +37,11 @@ extern Systraybar systray;
|
|||
|
||||
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);
|
||||
|
|
|
@ -86,7 +86,6 @@ void init ()
|
|||
|
||||
void cleanup()
|
||||
{
|
||||
cleanup_systray();
|
||||
cleanup_panel();
|
||||
|
||||
if (time1_font_desc) pango_font_description_free(time1_font_desc);
|
||||
|
@ -549,6 +548,7 @@ load_config:
|
|||
|
||||
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 @@ load_config:
|
|||
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);
|
||||
|
|
BIN
src/tint2
BIN
src/tint2
Binary file not shown.
|
@ -65,6 +65,22 @@ void window_toggle_shade (Window win)
|
|||
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)
|
||||
{
|
||||
|
|
2
tintrc01
2
tintrc01
|
@ -55,7 +55,7 @@ task_active_background_id = 2
|
|||
#---------------------------------------------
|
||||
# SYSTRAYBAR
|
||||
#---------------------------------------------
|
||||
systray_padding = 0 3 3
|
||||
systray_padding = 0 4 5
|
||||
systray_background_id = 0
|
||||
|
||||
#---------------------------------------------
|
||||
|
|
2
tintrc02
2
tintrc02
|
@ -57,7 +57,7 @@ task_active_background_id = 3
|
|||
#---------------------------------------------
|
||||
# SYSTRAYBAR
|
||||
#---------------------------------------------
|
||||
systray_padding = 0 2 2
|
||||
systray_padding = 0 2 3
|
||||
systray_background_id = 0
|
||||
|
||||
#---------------------------------------------
|
||||
|
|
22
tintrc03
22
tintrc03
|
@ -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 @@ 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
|
||||
|
||||
#---------------------------------------------
|
||||
|
@ -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 @@ 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
|
||||
|
|
2
tintrc04
2
tintrc04
|
@ -50,7 +50,7 @@ task_active_background_id = 2
|
|||
#---------------------------------------------
|
||||
# SYSTRAYBAR
|
||||
#---------------------------------------------
|
||||
systray_padding = 5 3 5
|
||||
systray_padding = 6 2 6
|
||||
systray_background_id = 1
|
||||
|
||||
#---------------------------------------------
|
||||
|
|
8
tintrc05
8
tintrc05
|
@ -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 @@ task_active_background_id = 2
|
|||
#---------------------------------------------
|
||||
# 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
|
||||
|
||||
#---------------------------------------------
|
||||
|
|
2
tintrc07
2
tintrc07
|
@ -50,7 +50,7 @@ task_active_background_id = 2
|
|||
#---------------------------------------------
|
||||
# SYSTRAYBAR
|
||||
#---------------------------------------------
|
||||
systray_padding = 6 3 4
|
||||
systray_padding = 6 3 5
|
||||
systray_background_id = 1
|
||||
|
||||
#---------------------------------------------
|
||||
|
|
Loading…
Reference in a new issue