FlipFocus is done. The patch (68 lines) is at the end of this note.
To try out FlipFocus, I recommend something like:
Key F8 A N Prev [CurrentScreen] FlipFocus
Key F8 A S Prev [CurrentScreen] Focus
Send me, or this group, some email to say how you like it.
With no further delay, here it is.
Dan Niles
dan_at_more.net
--------------------- fvwm-2.0.42-FlipFocus.patch ----------------------------
--- parse.h.orig Thu Mar 28 09:24:48 1996
+++ parse.h Mon Apr 29 17:03:13 1996
_at_@ -85,6 +85,7 @@
#define F_RAISELOWER 108
#define F_MAXIMIZE 109
#define F_FOCUS 110
+#define F_FLIP_FOCUS 111
/* Functions for use by modules only! */
#define F_SEND_WINDOW_LIST 1000
--- misc.h.orig Thu Apr 4 17:47:30 1996
+++ misc.h Mon Apr 29 17:03:46 1996
_at_@ -381,6 +381,8 @@
unsigned long context,char *action, int *Module);
void raise_it_func(XEvent *eventp,Window w,FvwmWindow *tmp_win,
unsigned long context, char *action, int *Module);
+void flip_focus_func(XEvent *eventp,Window w,FvwmWindow *tmp_win,
+ unsigned long context, char *action, int *Module);
void focus_func(XEvent *eventp,Window w,FvwmWindow *tmp_win,
unsigned long context, char *action, int *Module);
void SendDataToModule(XEvent *eventp,Window w,FvwmWindow *tmp_win,
--- functions.c.orig Thu Mar 28 09:24:23 1996
+++ functions.c Mon Apr 29 17:03:22 1996
_at_@ -53,6 +53,7 @@
{"EdgeResistance",SetEdgeResistance,F_EDGE_RES, FUNC_NO_WINDOW},
{"Exec", exec_function, F_EXEC, FUNC_NO_WINDOW},
{"ExecUseSHELL", exec_setup, F_EXEC_SETUP, FUNC_NO_WINDOW},
+ {"FlipFocus", flip_focus_func, F_FLIP_FOCUS, FUNC_NEEDS_WINDOW},
{"Focus", focus_func, F_FOCUS, FUNC_NEEDS_WINDOW},
{"Function", ComplexFunction, F_FUNCTION, FUNC_NO_WINDOW},
{"GotoPage", goto_page_func, F_GOTO_PAGE, FUNC_NO_WINDOW},
--- builtins.c.orig Wed Apr 10 12:38:25 1996
+++ builtins.c Mon Apr 29 17:03:33 1996
_at_@ -757,6 +757,33 @@
}
+void flip_focus_func(XEvent *eventp,Window w,FvwmWindow *tmp_win,
+ unsigned long context, char *action, int *Module)
+{
+
+ FvwmWindow *scratch;
+
+ if (DeferExecution(eventp,&w,&tmp_win,&context,SELECT,ButtonRelease))
+ return;
+
+ if( Scr.Focus == NULL || tmp_win == Scr.Focus ){
+ /* There is no window with focus */
+ FocusOn(tmp_win,0);
+ return;
+ }
+
+ scratch=Scr.Focus->next;
+ if( (Scr.Focus->next=tmp_win->next) ) Scr.Focus->next->prev=Scr.Focus;
+ if( (tmp_win->next=scratch) ) tmp_win->next->prev=tmp_win;
+ scratch=Scr.Focus->prev;
+ if( (Scr.Focus->prev=tmp_win->prev) ) Scr.Focus->prev->next=Scr.Focus;
+ if( (tmp_win->prev=scratch) ) tmp_win->prev->next=tmp_win;
+
+ FocusOn(tmp_win,0);
+
+}
+
+
void focus_func(XEvent *eventp,Window w,FvwmWindow *tmp_win,
unsigned long context, char *action, int *Module)
{
--
Visit the official FVWM web page at <URL:http://www.hpc.uh.edu/fvwm/>.
To unsubscribe from the list, send "unsubscribe fvwm" in the body of a
message to majordomo_at_hpc.uh.edu.
To report problems, send mail to fvwm-owner_at_hpc.uh.edu.
Received on Mon Apr 29 1996 - 17:15:07 BST