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].