]> Dogcows Code - chaz/tint2/blobdiff - src/tint.c
WM menu in left and right padding
[chaz/tint2] / src / tint.c
index 56cbc1ce541f3cb018af6af7bd25a40980cc0cda..46c0c22dd46bd00d79e905ff99d87aa8c36b6095 100644 (file)
@@ -97,7 +97,7 @@ void init ()
    /* Catch events */
    XSelectInput (server.dsp, server.root_win, PropertyChangeMask|StructureNotifyMask);
 
-   setlocale(LC_ALL, "");
+   setlocale (LC_ALL, "");
 }
 
 
@@ -158,6 +158,8 @@ void event_button_press (int x, int y)
 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:
@@ -173,9 +175,6 @@ void event_button_release (int button, int x, int y)
          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;
@@ -237,13 +236,14 @@ void event_property_notify (Window win, Atom at)
       /* 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) {
@@ -264,10 +264,8 @@ void event_property_notify (Window win, Atom at)
       }
       /* 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;
       }
    }
@@ -313,20 +311,14 @@ void event_configure_notify (Window win)
 
    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;
+   }
 }
 
 
@@ -359,8 +351,8 @@ int main (int argc, char *argv[])
    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)
@@ -375,6 +367,9 @@ load_config:
    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);
@@ -403,7 +398,8 @@ load_config:
                   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:
This page took 0.029611 seconds and 4 git commands to generate.