if (snapshot_path) g_free(snapshot_path);
cleanup_server();
- XCloseDisplay(server.dsp);
+ if (server.dsp) XCloseDisplay(server.dsp);
}
if (wm_menu && !tint2_handles_click(panel, &e->xbutton)) {
forward_click(e);
+ XLowerWindow (server.dsp, panel->main_win);
task_drag = 0;
return;
}
Panel *p = tsk->area.panel;
if (p->monitor != window_get_monitor (win)) {
remove_task (tsk);
- add_task (win);
+ tsk = add_task (win);
if (win == window_get_active ()) {
set_task_state(tsk, TASK_ACTIVE);
task_active = tsk;
default:
if (e.type == XDamageNotify+damage_event) {
+ // union needed to avoid strict-aliasing warnings by gcc
+ union { XEvent e; XDamageNotifyEvent de; } event_union = {.e=e};
TrayWindow *traywin;
GSList *l;
- XDamageNotifyEvent* de = (XDamageNotifyEvent*)&e;
+ XDamageNotifyEvent* de = &event_union.de;
for (l = systray.list_icons; l ; l = l->next) {
traywin = (TrayWindow*)l->data;
if ( traywin->id == de->drawable && !de->more ) {