]> Dogcows Code - chaz/tint2/blobdiff - src/tint.c
*fix* warning
[chaz/tint2] / src / tint.c
index 794aefbefee0ca97efb5ff8f8bfd1ac2a74345c8..db4095985ffa2668afdf23ec237e8b55b13c1d47 100644 (file)
@@ -372,8 +372,10 @@ void event_button_motion_notify (XEvent *e)
                Taskbar * drag_taskbar = (Taskbar*)task_drag->area.parent;
                drag_taskbar->area.list = g_slist_remove(drag_taskbar->area.list, task_drag);
 
-               if(event_taskbar->area.posx > drag_taskbar->area.posx || event_taskbar->area.posy > drag_taskbar->area.posy)
-                       event_taskbar->area.list = g_slist_prepend(event_taskbar->area.list, task_drag);
+               if(event_taskbar->area.posx > drag_taskbar->area.posx || event_taskbar->area.posy > drag_taskbar->area.posy) {
+                       int i = (taskbarname_enabled) ? 1 : 0;
+                       event_taskbar->area.list = g_slist_insert(event_taskbar->area.list, task_drag, i);
+               }
                else
                        event_taskbar->area.list = g_slist_append(event_taskbar->area.list, task_drag);
 
@@ -480,6 +482,8 @@ void event_property_notify (XEvent *e)
        Window win = e->xproperty.window;
        Atom at = e->xproperty.atom;
 
+       if (xsettings_client)
+               xsettings_client_process_event(xsettings_client, e);
        if (win == server.root_win) {
                if (!server.got_root_win) {
                        XSelectInput (server.dsp, server.root_win, PropertyChangeMask|StructureNotifyMask);
@@ -488,7 +492,32 @@ void event_property_notify (XEvent *e)
 
                // Change name of desktops
                else if (at == server.atom._NET_DESKTOP_NAMES) {
-                       printf("_NET_DESKTOP_NAMES\n");
+                       if (!taskbarname_enabled) return;
+                       GSList *l, *list = server_get_name_of_desktop();
+                       int j;
+                       gchar *name;
+                       Taskbar *tskbar;
+                       for (i=0 ; i < nb_panel ; i++) {
+                               for (j=0, l=list ; j < panel1[i].nb_desktop ; j++) {
+                                       if (l) {
+                                               name = g_strdup(l->data);
+                                               l = l->next;
+                                       }
+                                       else
+                                               name = g_strdup_printf("%d", j+1);
+                                       tskbar = &panel1[i].taskbar[j];
+                                       if (strcmp(name, tskbar->bar_name.name) != 0) {
+                                               g_free(tskbar->bar_name.name);
+                                               tskbar->bar_name.name = name;
+                                               tskbar->bar_name.area.resize = 1;
+                                       }
+                                       else
+                                               g_free(name);
+                               }
+                       }
+                       for (l=list ; l ; l = l->next)
+                               g_free(l->data);
+                       g_slist_free(list);
                        panel_refresh = 1;
                }
                // Change number of desktops
@@ -522,7 +551,9 @@ void event_property_notify (XEvent *e)
                                GSList *l;
                                if (server.nb_desktop > old_desktop) {
                                        tskbar = &panel->taskbar[old_desktop];
-                                       for (l = tskbar->area.list; l ; l = l->next) {
+                                       l = tskbar->area.list;
+                                       if (taskbarname_enabled) l = l->next;
+                                       for (; l ; l = l->next) {
                                                tsk = l->data;
                                                if (tsk->desktop == ALLDESKTOP) {
                                                        tsk->area.on_screen = 0;
@@ -532,7 +563,9 @@ void event_property_notify (XEvent *e)
                                        }
                                }
                                tskbar = &panel->taskbar[server.desktop];
-                               for (l = tskbar->area.list; l ; l = l->next) {
+                               l = tskbar->area.list;
+                               if (taskbarname_enabled) l = l->next;
+                               for (; l ; l = l->next) {
                                        tsk = l->data;
                                        if (tsk->desktop == ALLDESKTOP) {
                                                tsk->area.on_screen = 1;
@@ -804,9 +837,6 @@ start:
                if (select(x11_fd+1, &fdset, 0, 0, timeout) > 0) {
                        while (XPending (server.dsp)) {
                                XNextEvent(server.dsp, &e);
-                               if (xsettings_client != NULL) {
-                                       xsettings_client_process_event(xsettings_client, &e);
-                               }
 
                                panel = get_panel(e.xany.window);
                                if (panel && panel_autohide) {
@@ -893,7 +923,7 @@ start:
                                                                break;
                                                        }
                                                }
-                                       break;
+                                               break;
 
                                        case ClientMessage:
                                                ev = &e.xclient;
This page took 0.027039 seconds and 4 git commands to generate.