/* Catch events */
XSelectInput (server.dsp, server.root_win, PropertyChangeMask|StructureNotifyMask);
- setlocale(LC_ALL, "");
+ setlocale (LC_ALL, "");
}
void event_button_release (int button, int x, int y)
{
int action = TOGGLE_ICONIFY;
+ // TODO: convert event_button_press(int x, int y) to area->event_button_press()
+ // if systray is ok
switch (button) {
case 2:
action = panel.mouse_scroll_down;
break;
}
-
- // TODO: ne pas afficher les taskbar invisibles
- //if (panel.mode != MULTI_DESKTOP && desktop != server.desktop) continue;
// search taskbar
Taskbar *tskbar;
/* Change number of desktops */
else if (at == server.atom._NET_NUMBER_OF_DESKTOPS) {
config_taskbar();
- redraw(&panel.area);
- panel.refresh = 1;
+ visible_object();
}
/* Change desktop */
else if (at == server.atom._NET_CURRENT_DESKTOP) {
server.desktop = server_get_current_desktop ();
- if (panel.mode != MULTI_DESKTOP) panel.refresh = 1;
+ if (panel.mode != MULTI_DESKTOP) {
+ visible_object();
+ }
}
/* Window list */
else if (at == server.atom._NET_CLIENT_LIST) {
}
/* Wallpaper changed */
else if (at == server.atom._XROOTPMAP_ID) {
- XFreePixmap (server.dsp, server.root_pmap);
- server.root_pmap = 0;
- redraw(&panel.area);
- panel.clock.area.redraw = 1;
+ XFreePixmap (server.dsp, panel.area.pmap);
+ panel.area.pmap = 0;
panel.refresh = 1;
}
}
tsk = task_get_task (win);
if (!tsk) return;
-
-/* TODO ??? voir ancien code !!
- Taskbar *tskbar;
- tskbar = tsk->area.parent;
- int new_monitor = window_get_monitor (win);
- int desktop = tskbar->desktop;
- // task on the same monitor
- if (tsk->id_taskbar == index(desktop, new_monitor)) return;
-
- add_task (tsk->win);
- remove_task (tsk);
- panel.refresh = 1;
- */
+ Taskbar *tskbar = tsk->area.parent;
+ if (tskbar->monitor != window_get_monitor (win)) {
+ // task on another monitor
+ add_task (tsk->win);
+ remove_task (tsk);
+ panel.refresh = 1;
+ }
}
init ();
load_config:
- if (server.root_pmap) XFreePixmap (server.dsp, server.root_pmap);
- server.root_pmap = 0;
+ if (panel.area.pmap) XFreePixmap (server.dsp, panel.area.pmap);
+ panel.area.pmap = 0;
// read tint2rc config
i = 0;
if (c != -1)
config_finish ();
window_draw_panel ();
+
+ // BUG: draw(clock) is needed here, but 'on the paper' it's not necessary.
+ draw(&panel.clock.area);
x11_fd = ConnectionNumber (server.dsp);
XSync (server.dsp, False);
break;
case Expose:
- XCopyArea (server.dsp, server.pmap, window.main_win, server.gc, 0, 0, panel.area.width, panel.area.height, 0, 0);
+ XCopyArea (server.dsp, panel.area.pmap, server.root_win, server.gc_root, 0, 0, panel.area.width, panel.area.height, server.posx, server.posy);
+ XCopyArea (server.dsp, server.pmap, window.main_win, server.gc, panel.area.paddingx, 0, panel.area.width-(2*panel.area.paddingx), panel.area.height, 0, 0);
break;
case PropertyNotify: