Re: FVWM: Alt-tab

From: Stian Sletner <stian_at_sletner.com>
Date: Tue, 30 Apr 2002 00:05:00 +0200

* At 2002-04-29T23:22+0200, Stian Sletner wrote:
| * At 2002-04-29T21:41+0200, Stian Sletner wrote:
| | * At 2002-04-29T19:32+0000, Mikhael Goikhman wrote:
| | :
| | | Patches should be done using "diff -u" unless your diff only supports -c.
| | | Patches should be done againt the latest version (one of the latest daily
| | | snapshot is ok).
| | | Patches should include changes to fvwm.1 and a ChangeLog entry.
| | |
| | | Please save us the time. Otherwise whoever applies your patch should spend
| | | time to understand a hard-to-read "diff -c" output, manually port the
| | | patch from 2.4.x to 2.5.x, manually separate already applied CurrentAtEnd
| | | patch from yours, write a man page entry. At this point it is easier to
| | | implement the feature from stratch. :) Thank you and happy patching.
| |
| | That should probably be done anyway. Nevermind, thanks.
|
| On second thought, I have nothing better to do. I'll tro and do it
| again, following your instructions.

Ok, how's this? Patched against cvs current, default branch.

Index: ChangeLog
===================================================================
RCS file: /home/cvs/fvwm/fvwm/ChangeLog,v
retrieving revision 1.1772
diff -u -u -r1.1772 ChangeLog
--- ChangeLog 2002/04/29 15:52:49 1.1772
+++ ChangeLog 2002/04/29 22:00:20
_at_@ -1,3 +1,8 @@
+2002-04-29 Stian Sletner <stian_at_sletner.com>
+
+ * fvwm/windowlist.c (CMD_WindowList):
+ Added new Windowlist option IconifiedAtEnd
+
 2002-04-29 olicha <olivier.chapuis_at_free.fr>
 
         * libs/FlocaleCharset.c (FlocaleCharsetSetFlocaleCharset):
Index: fvwm/fvwm.1
===================================================================
RCS file: /home/cvs/fvwm/fvwm/fvwm/fvwm.1,v
retrieving revision 1.6
diff -u -u -r1.6 fvwm.1
--- fvwm/fvwm.1 2002/04/25 21:57:02 1.6
+++ fvwm/fvwm.1 2002/04/29 22:01:38
_at_@ -3704,6 +3704,7 @@
 .IR NoDeskSort ,
 .IR ReverseOrder ,
 .IR CurrentAtEnd ,
+.IR IconifiedAtEnd ,
 .IR UseIconName ,
 .IR Alphabetic " / " NotAlphabetic ,
 .IR NoHotkeys ,
_at_@ -3742,6 +3743,10 @@
 option the currently focused window (if any) is shown at the bottom
 of the list. This is mostly intended for simulating the Alt-Tab
 behaviour in another GUI.
+
+.I IconifiedAtEnd
+makes iconified windows be moved to the end of the list. This is also
+from another GUI.
 
 The
 .I NoGeometry
Index: fvwm/windowlist.c
===================================================================
RCS file: /home/cvs/fvwm/fvwm/fvwm/windowlist.c,v
retrieving revision 1.58
diff -u -u -r1.58 windowlist.c
--- fvwm/windowlist.c 2002/04/23 01:26:53 1.58
+++ fvwm/windowlist.c 2002/04/29 22:01:46
_at_@ -119,6 +119,7 @@
   char* ret_action = NULL;
   FvwmWindow *t;
   FvwmWindow **windowList;
+ FvwmWindow **iconifiedList;
   int numWindows;
   int ii;
   char tname[80];
_at_@ -154,6 +155,9 @@
   Bool use_condition = False;
   Bool do_reverse_sort_order = False;
   Bool current_at_end = False;
+ Bool iconified_at_end = False;
+ int ic = 0;
+ int ij;
   WindowConditionMask mask;
   char *cond_flags;
   Bool first_desk = True;
_at_@ -222,6 +226,8 @@
         do_reverse_sort_order = True;
       else if (StrEquals(tok,"CurrentAtEnd"))
         current_at_end = True;
+ else if (StrEquals(tok,"IconifiedAtEnd"))
+ iconified_at_end = True;
       else if (StrEquals(tok,"NoDeskSort"))
         flags |= NO_DESK_SORT;
       else if (StrEquals(tok,"UseIconName"))
_at_@ -362,6 +368,14 @@
   {
     return;
   }
+ if (iconified_at_end)
+ {
+ iconifiedList = malloc(numWindows*sizeof(t));
+ if (iconifiedList == NULL)
+ {
+ return;
+ }
+ }
   /* get the windowlist starting from the current window (if any)*/
   t = get_focus_window();
   if (t == NULL)
_at_@ -376,13 +390,24 @@
   {
     if (do_reverse_sort_order)
       windowList[numWindows - ii - 1] = t;
+ else if (iconified_at_end && IS_ICONIFIED(t))
+ iconifiedList[ic++] = t;
     else
- windowList[ii] = t;
+ windowList[ii - ic] = t;
     if (t->next)
       t = t->next;
     else
       t = Scr.FvwmRoot.next;
   }
+ if (iconified_at_end && ic > 0)
+ {
+ if (current_at_end)
+ windowList[numWindows - 1] = windowList[--ii - ic];
+ for (ij = 0; ij < ic; ij++)
+ {
+ windowList[ij + (ii - ic)] = iconifiedList[ij];
+ }
+ }
 
   /* Do alphabetic sort */
   if (flags & SHOW_ALPHABETIC)
_at_@ -597,6 +622,8 @@
   if (func)
     free(func);
   free(windowList);
+ if (iconified_at_end)
+ free(iconifiedList);
   if (!default_action && eventp && eventp->type == KeyPress)
     teventp = (XEvent *)1;
   else

-- 
Stian Sletner
--
Visit the official FVWM web page at <URL: http://www.fvwm.org/>.
To unsubscribe from the list, send "unsubscribe fvwm" in the body of a
message to majordomo_at_fvwm.org.
To report problems, send mail to fvwm-owner_at_fvwm.org.
Received on Mon Apr 29 2002 - 17:05:39 BST

This archive was generated by hypermail 2.3.0 : Mon Aug 29 2016 - 19:37:53 BST