This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project wmaker-crm.git.

The branch, next has been updated
       via  2f33b3c2bc42ee88e6b6055a2f41367c296ef481 (commit)
      from  fd19456d66fc29d6200bad93db1db1c219b3805c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://repo.or.cz/wmaker-crm.git/commit/2f33b3c2bc42ee88e6b6055a2f41367c296ef481

commit 2f33b3c2bc42ee88e6b6055a2f41367c296ef481
Author: Doug Torrance <dtorra...@piedmont.edu>
Date:   Sat Jan 16 00:22:34 2016 -0500

    wmaker: Maintain sorting of windows by workspace in switch menu.
    
    Previously, this sorting failed when one window was moved to another
    workspace.
    
    This fixes Debian bug #280851 [1].
    
    [1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=280851

diff --git a/src/switchmenu.c b/src/switchmenu.c
index a614e4f..3106595 100644
--- a/src/switchmenu.c
+++ b/src/switchmenu.c
@@ -149,27 +149,22 @@ void OpenSwitchMenu(WScreen * scr, int x, int y, int 
keyboard)
 
 static int menuIndexForWindow(WMenu * menu, WWindow * wwin, int old_pos)
 {
-       int idx;
+       int idx, move_down;
 
        if (menu->entry_no <= old_pos)
                return -1;
 
-#define WS(i)  ((WWindow*)menu->entries[i]->clientdata)->frame->workspace
-       if (old_pos >= 0) {
-               if (WS(old_pos) >= wwin->frame->workspace
-                   && (old_pos == 0 || WS(old_pos - 1) <= 
wwin->frame->workspace)) {
-                       return old_pos;
-               }
-       }
-#undef WS
-
-       for (idx = 0; idx < menu->entry_no; idx++) {
+       for (idx = 0, move_down = 0; idx < menu->entry_no; idx++) {
                WWindow *tw = (WWindow *) menu->entries[idx]->clientdata;
 
-               if (!IS_OMNIPRESENT(tw)
-                   && tw->frame->workspace > wwin->frame->workspace) {
-                       break;
-               }
+               /* Is the window moving down in the menu?  If so, we'll need to
+                  adjust its new index by 1. */
+               if (tw == wwin)
+                       move_down = 1;
+
+               if (IS_OMNIPRESENT(tw) || (tw != wwin &&
+                                          tw->frame->workspace >= 
wwin->frame->workspace))
+                       return idx - move_down;
        }
 
        return idx;
@@ -215,7 +210,7 @@ void UpdateSwitchMenu(WScreen * scr, WWindow * wwin, int 
action)
                if (IS_OMNIPRESENT(wwin))
                        idx = -1;
                else {
-                       idx = menuIndexForWindow(switchmenu, wwin, -1);
+                       idx = menuIndexForWindow(switchmenu, wwin, 0);
                }
 
                entry = wMenuInsertCallback(switchmenu, idx, t, focusWindow, 
wwin);

-----------------------------------------------------------------------

Summary of changes:
 src/switchmenu.c | 27 +++++++++++----------------
 1 file changed, 11 insertions(+), 16 deletions(-)


repo.or.cz automatic notification. Contact project admin crma...@gmail.com
if you want to unsubscribe, or site admin ad...@repo.or.cz if you receive
no reply.
-- 
wmaker-crm.git ("The Window Maker window manager")


-- 
To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.

Reply via email to