]> Dogcows Code - chaz/tint2/blobdiff - src/tint.c
*fix* issue 217
[chaz/tint2] / src / tint.c
index 3a7b82b8415f8590d29723dd0899a7589dac8327..df1c58912cd94880b37ccbade2d005f738f38afe 100644 (file)
@@ -677,13 +677,6 @@ int main (int argc, char *argv[])
                if (panel_refresh) {
                        panel_refresh = 0;
 
-                       // QUESTION: do we need this first refresh_systray, because we check refresh_systray once again later...
-                       // ANSWER: yes, panel->temp_pmap is freeded in the loop.
-                       // we change background to None to avoid tray icon using freeded pixmap.
-                       if (refresh_systray) {
-                               panel = (Panel*)systray.area.panel;
-                               XSetWindowBackgroundPixmap (server.dsp, panel->main_win, None);
-                       }
                        for (i=0 ; i < nb_panel ; i++) {
                                panel = &panel1[i];
 
@@ -701,9 +694,8 @@ int main (int argc, char *argv[])
                        XFlush (server.dsp);
 
                        panel = (Panel*)systray.area.panel;
-                       if (refresh_systray && !panel->is_hidden) {
+                       if (refresh_systray && panel && !panel->is_hidden) {
                                refresh_systray = 0;
-                               panel = (Panel*)systray.area.panel;
                                // tint2 doen't draw systray icons. it just redraw background.
                                XSetWindowBackgroundPixmap (server.dsp, panel->main_win, panel->temp_pmap);
                                // force icon's refresh
@@ -785,9 +777,8 @@ int main (int argc, char *argv[])
                                        case UnmapNotify:
                                        case DestroyNotify:
                                                if (e.xany.window == server.composite_manager) {
-                                                       printf("Stop composite.\n");
+                                                       // TODO: Stop real_transparency
                                                        //signal_pending = SIGUSR2;
-                                                       server_init_visual();
                                                        break;
                                                }
                                                if (e.xany.window == g_tooltip.window || !systray.area.on_screen)
@@ -801,14 +792,16 @@ int main (int argc, char *argv[])
                                        break;
 
                                        case ClientMessage:
-                                               ev = &e;
+                                               ev = &e.xclient;
                                                if (ev->data.l[1] == server.atom._NET_WM_CM_S0) {
                                                        if (ev->data.l[2] == None)
-                                                               printf("Stop composite 2.\n");
+                                                               // TODO: Stop real_transparency
+                                                               //signal_pending = SIGUSR2;
+                                                               ;
                                                        else
-                                                               printf("Start composite.\n");
-                                                       server_init_visual();
-                                                       //signal_pending = SIGUSR2;
+                                                               // TODO: Start real_transparency
+                                                               //signal_pending = SIGUSR2;
+                                                               ;
                                                }
                                                if (!systray.area.on_screen) break;
                                                if (e.xclient.message_type == server.atom._NET_SYSTEM_TRAY_OPCODE && e.xclient.format == 32 && e.xclient.window == net_sel_win) {
@@ -828,7 +821,7 @@ int main (int argc, char *argv[])
                                                        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 ) {
+                                                               if ( traywin->id == de->drawable ) {
                                                                        systray_render_icon(traywin);
                                                                        break;
                                                                }
This page took 0.022308 seconds and 4 git commands to generate.