Index: fvwm/menuitem.c =================================================================== --- fvwm/menuitem.c (revision 4) +++ fvwm/menuitem.c (revision 5) @@ -82,10 +82,18 @@ * */ static void draw_separator( - Window w, GC TopGC, GC BottomGC, int x1, int y, int x2) + Window w, GC TopGC, GC BottomGC, GC ForeGC, int x1, int y, int x2, + Bool do_flat_separators) { - XDrawLine(dpy, w, TopGC , x1, y, x2, y); - XDrawLine(dpy, w, BottomGC, x1-1, y+1, x2+1, y+1); + if (do_flat_separators) + { + XDrawLine(dpy, w, ForeGC, x1, y, x2, y); + } + else + { + XDrawLine(dpy, w, TopGC , x1, y, x2, y); + XDrawLine(dpy, w, BottomGC, x1-1, y+1, x2+1, y+1); + } return; } @@ -381,6 +389,7 @@ /*Pixel fg, fgsh;*/ int relief_thickness = ST_RELIEF_THICKNESS(ms); Bool is_item_selected; + Bool do_flat_separators; Bool item_cleared = False; Bool xft_clear = False; Bool empty_inter = False; @@ -599,6 +608,8 @@ * Draw the item itself. */ + do_flat_separators = ST_DO_FLAT_SEPARATOR(ms); + /* Calculate the separator offsets. */ if (ST_HAS_LONG_SEPARATORS(ms)) { @@ -619,9 +630,9 @@ { /* It's a separator. */ draw_separator( - mpip->w, gcs.shadow_gc, gcs.hilight_gc, sx1, - y_offset + y_height - MENU_SEPARATOR_HEIGHT, - sx2); + mpip->w, gcs.shadow_gc, gcs.hilight_gc, gcs.fore_gc, + sx1, y_offset + y_height - MENU_SEPARATOR_HEIGHT, + sx2, do_flat_separators); /* Nothing else to do. */ } return; @@ -661,8 +672,8 @@ if (sx1 < sx2) { draw_separator( - mpip->w, gcs.shadow_gc, gcs.hilight_gc, - sx1, y, sx2); + mpip->w, gcs.shadow_gc, gcs.hilight_gc, gcs.fore_gc, + sx1, y, sx2, do_flat_separators); } } /* Underline the title. */ @@ -675,8 +686,8 @@ { y = y_offset + y_height - MENU_SEPARATOR_HEIGHT; draw_separator( - mpip->w, gcs.shadow_gc, gcs.hilight_gc, - sx1, y, sx2); + mpip->w, gcs.shadow_gc, gcs.hilight_gc, gcs.fore_gc, + sx1, y, sx2, do_flat_separators); } break; default: Index: fvwm/menustyle.c =================================================================== --- fvwm/menustyle.c (revision 4) +++ fvwm/menustyle.c (revision 5) @@ -426,7 +426,7 @@ "MouseWheel", "ScrollOffPage", "TrianglesUseFore", "TitleColorset", "HilightTitleBack", - "TitleFont", + "TitleFont", "FlatSeparators", "VerticalMargins", NULL }; @@ -902,6 +902,7 @@ ST_SCROLL_OFF_PAGE(tmpms) = 1; ST_DO_HILIGHT_TITLE_BACK(tmpms) = 0; ST_USING_DEFAULT_TITLEFONT(tmpms) = True; + ST_DO_FLAT_SEPARATOR(tmpms) = 0; has_gc_changed = True; option = "fvwm"; } @@ -1597,7 +1598,10 @@ &ST_VERTICAL_MARGIN_BOTTOM(tmpms), 0, 0); break; - + case 63: /* FlatSeparators */ + ST_DO_FLAT_SEPARATOR(tmpms) = on; + break; + #if 0 case 99: /* PositionHints */ /* to be implemented */ @@ -1853,6 +1857,9 @@ ST_TRIANGLES_USE_FORE(destms) = ST_TRIANGLES_USE_FORE(origms); /* Title */ ST_DO_HILIGHT_TITLE_BACK(destms) = ST_DO_HILIGHT_TITLE_BACK(origms); + /* FlatSeparators */ + ST_DO_FLAT_SEPARATOR(destms) = ST_DO_FLAT_SEPARATOR(origms); + menustyle_update(destms); --- fvwm/menus.c (revision 4) +++ fvwm/menus.c (revision 5) @@ -2363,6 +2363,10 @@ separator_height = (last_item_has_relief) ? MENU_SEPARATOR_HEIGHT + relief_thickness : MENU_SEPARATOR_TOTAL_HEIGHT; + if (MST_DO_FLAT_SEPARATOR(msp->menu)) + { + separator_height += 1; + } MI_Y_OFFSET(mi) = y; if (MI_IS_TITLE(mi)) { Index: fvwm/menustyle.h =================================================================== --- fvwm/menustyle.h (revision 4) +++ fvwm/menustyle.h (revision 5) @@ -23,6 +23,8 @@ #define MST_FACE(m) ((m)->s->ms->look.face) #define ST_DO_HILIGHT_BACK(s) ((s)->look.flags.do_hilight_back) #define MST_DO_HILIGHT_BACK(m) ((m)->s->ms->look.flags.do_hilight_back) +#define ST_DO_FLAT_SEPARATOR(s) ((s)->look.flags.do_flat_separator) +#define MST_DO_FLAT_SEPARATOR(m) ((m)->s->ms->look.flags.do_flat_separator) #define ST_DO_HILIGHT_FORE(s) ((s)->look.flags.do_hilight_fore) #define MST_DO_HILIGHT_FORE(m) ((m)->s->ms->look.flags.do_hilight_fore) #define ST_DO_HILIGHT_TITLE_BACK(s) ((s)->look.flags.do_hilight_title_back) @@ -275,6 +277,7 @@ unsigned has_title_cset : 1; unsigned do_hilight_title_back : 1; unsigned using_default_titlefont : 1; + unsigned do_flat_separator : 1; } flags; unsigned char ReliefThickness; unsigned char TitleUnderlines;