From: Daniel Déchelotte <[email protected]>

---
 src/dock.c |   27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/src/dock.c b/src/dock.c
index 4c02fad..41c8ee3 100644
--- a/src/dock.c
+++ b/src/dock.c
@@ -4383,13 +4383,26 @@ static void drawerDestroy(WDock *drawer)
 
        wDefaultPurgeInfo(scr, drawer->icon_array[0]->wm_instance,
                        drawer->icon_array[0]->wm_class);
-       icons = WMCreateArray(drawer->icon_count - 1);
-       for (i = 1; i < drawer->max_icons; i++) {
-               if (!(aicon = drawer->icon_array[i]))
-                       continue;
-               WMAddToArray(icons, aicon);
+       if (drawer->icon_count == 2) {
+               // Drawer contains a single appicon: dock it where the drawer 
was
+               for (i = 1; i < drawer->max_icons; i++) {
+                       if ((aicon = drawer->icon_array[i]))
+                               break;
+               }
+               wDockMoveIconBetweenDocks(drawer, scr->dock, aicon,
+                                       0, (drawer->y_pos - scr->dock->y_pos) / 
ICON_SIZE);
+               XMoveWindow(dpy, aicon->icon->core->window, drawer->x_pos, 
drawer->y_pos);
+               XMapWindow(dpy, aicon->icon->core->window);
+       }
+       else if (drawer->icon_count > 2) {
+               icons = WMCreateArray(drawer->icon_count - 1);
+               for (i = 1; i < drawer->max_icons; i++) {
+                       if (!(aicon = drawer->icon_array[i]))
+                               continue;
+                       WMAddToArray(icons, aicon);
+               }
+               removeIcons(icons, drawer);
        }
-       removeIcons(icons, drawer);
 
        if (drawer->auto_collapse_magic) {
                WMDeleteTimerHandler(drawer->auto_collapse_magic);
@@ -4417,7 +4430,7 @@ static void removeDrawerCallback(WMenu *menu, WMenuEntry 
*entry)
        WDock *dock = ((WAppIcon*)entry->clientdata)->dock;
        assert(dock != NULL);
 
-       if (dock->icon_count > 1) {
+       if (dock->icon_count > 2) {
                if (wMessageDialog(dock->screen_ptr, _("Drawer"),
                                        _("All icons in this drawer will be 
detached!"),
                                        _("OK"), _("Cancel"), NULL) != 
WAPRDefault)
-- 
1.7.10.4


-- 
To unsubscribe, send mail to [email protected].

Reply via email to