]> Dogcows Code - chaz/tint2/blobdiff - src/tint.c
memorized taskbar pixmap. So we don t redraw taskbar/task when switching desktop.
[chaz/tint2] / src / tint.c
index a573ab1b231f9483b8c97247bad49e1274402b0d..b975fecf50a987dde7dc7af203efd3b806aaa630 100644 (file)
@@ -156,15 +156,14 @@ void init_X11()
 
 void cleanup()
 {
-       cleanup_timeout();
        cleanup_systray();
-       cleanup_panel();
        cleanup_tooltip();
        cleanup_clock();
        cleanup_launcher();
 #ifdef ENABLE_BATTERY
        cleanup_battery();
 #endif
+       cleanup_panel();
        cleanup_config();
 
        if (default_icon) {
@@ -174,6 +173,7 @@ void cleanup()
        imlib_context_disconnect_display();
 
        cleanup_server();
+       cleanup_timeout();
        if (server.dsp) XCloseDisplay(server.dsp);
 }
 
@@ -186,9 +186,7 @@ void get_snapshot(const char *path)
                panel->area.width = server.monitor[0].width;
 
        panel->temp_pmap = XCreatePixmap(server.dsp, server.root_win, panel->area.width, panel->area.height, server.depth);
-       size_by_content(&panel->area);
-       size_by_layout(&panel->area);
-       refresh(&panel->area);
+       rendering(panel);
 
        Imlib_Image img = NULL;
        imlib_context_set_drawable(panel->temp_pmap);
@@ -487,13 +485,21 @@ void event_property_notify (XEvent *e)
                        server.got_root_win = 1;
                }
 
+               // Change name of desktops
+               else if (at == server.atom._NET_DESKTOP_NAMES) {
+                       printf("_NET_DESKTOP_NAMES\n");
+                       panel_refresh = 1;
+               }
                // Change number of desktops
                else if (at == server.atom._NET_NUMBER_OF_DESKTOPS) {
+                       if (!taskbar_enabled) return;
                        server.nb_desktop = server_get_number_of_desktop ();
                        cleanup_taskbar();
                        init_taskbar();
-                       visible_object();
                        for (i=0 ; i < nb_panel ; i++) {
+                               init_taskbar_panel(&panel1[i]);
+                               set_panel_items_order(&panel1[i]);
+                               visible_taskbar(&panel1[i]);
                                panel1[i].area.resize = 1;
                        }
                        task_refresh_tasklist();
@@ -502,21 +508,13 @@ void event_property_notify (XEvent *e)
                }
                // Change desktop
                else if (at == server.atom._NET_CURRENT_DESKTOP) {
+                       if (!taskbar_enabled) return;
                        int old_desktop = server.desktop;
                        server.desktop = server_get_current_desktop ();
                        for (i=0 ; i < nb_panel ; i++) {
                                Panel *panel = &panel1[i];
-                               if (panel_mode == MULTI_DESKTOP && panel->g_taskbar.use_active) {
-                                       // redraw both taskbar
-                                       if (server.nb_desktop > old_desktop) {
-                                               // can happen if last desktop is deleted and we've been on the last desktop
-                                               panel->taskbar[old_desktop].area.bg = panel->g_taskbar.bg;
-                                               panel->taskbar[old_desktop].area.resize = 1;
-                                       }
-                                       panel->taskbar[server.desktop].area.bg = panel->g_taskbar.bg_active;
-                                       panel->taskbar[server.desktop].area.resize = 1;
-                                       panel_refresh = 1;
-                               }
+                               set_taskbar_state(&panel->taskbar[old_desktop], TASKBAR_NORMAL);
+                               set_taskbar_state(&panel->taskbar[server.desktop], TASKBAR_ACTIVE);
                                // check ALLDESKTOP task => resize taskbar
                                Taskbar *tskbar;
                                Task *tsk;
@@ -540,9 +538,8 @@ void event_property_notify (XEvent *e)
                                                tskbar->area.resize = 1;
                                        }
                                }
-                       }
-                       if (panel_mode != MULTI_DESKTOP) {
-                               visible_object();
+                               if (panel_mode != MULTI_DESKTOP) 
+                                       visible_taskbar(panel);
                        }
                }
                // Window list
@@ -777,9 +774,7 @@ start:
                                else {
                                        if (panel->temp_pmap) XFreePixmap(server.dsp, panel->temp_pmap);
                                        panel->temp_pmap = XCreatePixmap(server.dsp, server.root_win, panel->area.width, panel->area.height, server.depth);
-                                       size_by_content(&panel->area);
-                                       size_by_layout(&panel->area);
-                                       refresh(&panel->area);
+                                       rendering(panel);
                                        XCopyArea(server.dsp, panel->temp_pmap, panel->main_win, server.gc, 0, 0, panel->area.width, panel->area.height, 0, 0);
                                }
                        }
@@ -887,7 +882,7 @@ start:
                                                        signal_pending = SIGUSR1;
                                                        break;
                                                }
-                                               if (e.xany.window == g_tooltip.window || !systray.area.on_screen)
+                                               if (e.xany.window == g_tooltip.window || !systray_enabled)
                                                        break;
                                                for (it = systray.list_icons; it; it = g_slist_next(it)) {
                                                        if (((TrayWindow*)it->data)->tray_id == e.xany.window) {
@@ -907,7 +902,7 @@ start:
                                                                // Start real_transparency
                                                                signal_pending = SIGUSR1;
                                                }
-                                               if (systray.area.on_screen && e.xclient.message_type == server.atom._NET_SYSTEM_TRAY_OPCODE && e.xclient.format == 32 && e.xclient.window == net_sel_win) {
+                                               if (systray_enabled && e.xclient.message_type == server.atom._NET_SYSTEM_TRAY_OPCODE && e.xclient.format == 32 && e.xclient.window == net_sel_win) {
                                                        net_message(&e.xclient);
                                                }
                                                else if (e.xclient.message_type == server.atom.XdndPosition) {
This page took 0.027248 seconds and 4 git commands to generate.