This is a rather esoteric patch, but one of the things I disliked about
the current menu behaviour is that pressing Ctrl-Tab on a menu would
jumpt to the next section delimited via separators.  I wanted to turn
this feature off, which I've now done by adding:  SkipSection /
!SkipSection menustyle options.

Please find the patch enclosed, it's patched against CVS.   I apologise
slightly for not using 'cvs diff' for most of the patches I write -- but
for very small things like this, I find going down the .orig route
easier.

-- Thomas Adam

-- 
"If I were a witch's hat, sitting on her head like a paraffin stove, I'd
fly away and be a bat." -- Incredible String Band.
--- ./menustyle.c.orig  2006-02-09 11:49:33.000000000 +0000
+++ ./menustyle.c       2006-07-21 18:29:22.000000000 +0100
@@ -396,6 +396,7 @@
                "PopupActiveArea",
                "PopupIgnore", "PopupClose",
                "MouseWheel", "ScrollOffPage",
+               "SkipSection",
                "TrianglesUseFore",
                "TitleColorset", "HilightTitleBack",
                "TitleFont",
@@ -1479,11 +1480,14 @@
                case 57: /* ScrollOffPage */
                        ST_SCROLL_OFF_PAGE(tmpms) = on;
                        break;
-
-               case 58: /* TrianglesUseFore */
+               case 58:
+                       /* SkipSection */
+                       ST_SKIP_SECTION(tmpms) = on;
+                       break;
+               case 59: /* TrianglesUseFore */
                        ST_TRIANGLES_USE_FORE(tmpms) = on;
                        break;
-               case 59: /* TitleColorset */
+               case 60: /* TitleColorset */
                        if (GetIntegerArguments(args, NULL, val, 1) == 0 ||
                            *val < 0)
                        {
@@ -1498,11 +1502,11 @@
                        }
                        has_gc_changed = True;
                        break;
-               case 60: /* TitleHilightBack */
+               case 61: /* TitleHilightBack */
                        ST_DO_HILIGHT_TITLE_BACK(tmpms) = on;
                        has_gc_changed = True;
                        break;
-               case 61: /* TitleFont */
+               case 62: /* TitleFont */
                        if (arg1 != NULL &&
                            !(new_font = FlocaleLoadFont(dpy, arg1, "FVWM")))
                        {
@@ -1529,8 +1533,6 @@
                        }
                        has_gc_changed = True;
                        break;
-
-
 #if 0
                case 99: /* PositionHints */
                        /* to be implemented */
--- ./menustyle.h.orig  2006-02-09 11:49:33.000000000 +0000
+++ ./menustyle.h       2006-07-21 18:01:06.000000000 +0100
@@ -129,6 +129,8 @@
 /* feel */
 #define ST_IS_ANIMATED(s)             ((s)->feel.flags.is_animated)
 #define MST_IS_ANIMATED(m)            ((m)->s->ms->feel.flags.is_animated)
+#define ST_SKIP_SECTION(s)           ((s)->feel.flags.skip_section)
+#define MST_SKIP_SECTION(m)          ((m)->s->ms->feel.flags.skip_section)     
    
 #define ST_DO_POPUP_IMMEDIATELY(s)    ((s)->feel.flags.do_popup_immediately)
 #define MST_DO_POPUP_IMMEDIATELY(m)                    \
        ((m)->s->ms->feel.flags.do_popup_immediately)
@@ -217,6 +219,7 @@
                unsigned use_automatic_hotkeys : 1;
                unsigned mouse_wheel : 2;
                unsigned scroll_off_page : 1;
+               unsigned skip_section : 1;
        } flags;
        int PopdownDelay10ms;
        int PopupOffsetPercent;
--- ./menus.c.orig      2006-03-27 21:29:19.000000000 +0100
+++ ./menus.c   2006-07-21 18:40:33.000000000 +0100
@@ -1110,7 +1110,13 @@
                        break;
                case 2:
                        /* ctrl-tab */
-                       fSkipSection = True;
+                       /* Negatable via the !SkipSection style flag */
+                       if (!MST_SKIP_SECTION(mr))
+                       {
+                               fSkipSection = True;
+                       } else {
+                               fSkipSection = False;
+                       }
                        break;
                case 3:
                        /* ctrl-meta-tab */
--- ./fvwm.1.in.orig    2006-07-21 19:15:27.000000000 +0100
+++ ./fvwm.1.in 2006-07-21 19:05:49.000000000 +0100
@@ -3514,6 +3514,12 @@
 .I !ScrollOffPage
 disables this behaviour.
 
+.I SkipSection
+removes the ability to have the first item of each section (when using
+menus separators) to be selected when pressing Ctrl-Tab on a menu.
+.I !SkipSection
+enables this behaviour.
+
 .I TrianglesUseFore
 draws sub menu triangles with the foreground color of the menu colorset
 (normally drawn with the hilight color).

Reply via email to