diff -U 3 -H -d -r -N -x '*.txt' -x '*.config' -x '*.xml' -x '*.dll' -x '*.pdb' -x '*.cache' -x '*.exe' -x '*.resources' -- tde-style-qtcurve-1.6.2/ChangeLog tde-style-qtcurve-1.7.1/ChangeLog
--- tde-style-qtcurve-1.6.2/ChangeLog	2020-02-15 11:13:07.000000000 +0100
+++ tde-style-qtcurve-1.7.1/ChangeLog	2020-02-15 14:11:39.028378674 +0100
@@ -1,3 +1,21 @@
+1.7.1
+-----
+1. Remove box around arrow in listview lines - to match Gtk better.
+
+1.7.0
+-----
+ 1. Add option to use tiled pixmap as background for windows and menus.
+ 2. Draw line focus for items that cannot use glow focus.
+ 3. Use popup menu gradient's border setting to determine border type of menus.
+ 4. Add option to draw standard, raised, or joined toolbar buttons.
+ 5. Add option to use thinner frames, focus, etc.
+ 6. If not rounding, enable all 'square' options.
+ 7. Store background colour setting in XProperty - so that this can be used by
+    QtCurve twin decoration.
+ 8. Implement shading popup menus as per memubar settings.
+ 9. Fix segfault when obtaining MDI colours.
+10. Dont overwrite user supplied CMAKE_INSTALL_PREFIX
+
 1.6.2
 -----
 1. Disable the support for 'fix parent-less dialog' option - this causes too many
diff -U 3 -H -d -r -N -x '*.txt' -x '*.config' -x '*.xml' -x '*.dll' -x '*.pdb' -x '*.cache' -x '*.exe' -x '*.resources' -- tde-style-qtcurve-1.6.2/common/common.h tde-style-qtcurve-1.7.1/common/common.h
--- tde-style-qtcurve-1.6.2/common/common.h	2020-02-15 11:13:07.000000000 +0100
+++ tde-style-qtcurve-1.7.1/common/common.h	2020-02-15 16:32:49.504488848 +0100
@@ -296,6 +296,10 @@
 #define SIZE_GRIP_SIZE 12
 
 #define USE_LIGHTER_POPUP_MENU (opts.lighterPopupMenuBgnd)
+#define USE_BORDER(B)          (GB_SHINE!=(B) && GB_NONE!=(B))
+#define DRAW_MENU_BORDER       (APPEARANCE_FLAT!=opts.menuBgndAppearance && opts.version>=MAKE_VERSION(1,7) && \
+                                USE_BORDER(getGradient(opts.menuBgndAppearance, &opts)->border))
+
 #define USE_GLOW_FOCUS(mouseOver) (FOCUS_GLOW==opts.focus && (MO_GLOW!=opts.coloredMouseOver || !(mouseOver)))
 
 #define USE_SHADED_MENU_BAR_COLORS (SHADE_CUSTOM==opts.shadeMenubars || SHADE_BLEND_SELECTED==opts.shadeMenubars)
@@ -552,6 +556,32 @@
 
 typedef struct
 {
+#if defined __cplusplus
+    TQString   file;
+    TQPixmap   img;
+#else // __cplusplus
+    const char *file;
+    GdkPixbuf *img;
+#endif // __cplusplus
+} TQtCPixmap;
+
+#define BGND_IMG_ON_BORDER (IMG_FILE==opts.bgndImage.type && opts.bgndImage.onBorder)
+
+typedef enum
+{
+    PP_TL,
+    PP_TM,
+    PP_TR,
+    PP_BL,
+    PP_BM,
+    PP_BR,
+    PP_LM,
+    PP_RM,
+    PP_CENTRED,
+} EPixPos;
+
+typedef struct
+{
     EImageType type;
     bool       loaded;
 #if defined __cplusplus
@@ -566,6 +596,13 @@
 
 typedef enum
 {
+    THIN_BUTTONS    = 0x0001,
+    THIN_MENU_ITEMS = 0x0002,
+    THIN_FRAMES     = 0x0004
+} EThinFlags;
+
+typedef enum
+{
     SQUARE_NONE               = 0x0000,
     SQUARE_ENTRY              = 0x0001,
     SQUARE_PROGRESS           = 0x0002,
@@ -713,6 +750,7 @@
         APPEARANCE_FADE, /* Only for poupmenu items! */
         APPEARANCE_STRIPED = APPEARANCE_FADE, /* Only for windows  and menus */
         APPEARANCE_NONE = APPEARANCE_FADE, /* Only for titlebars */
+        APPEARANCE_FILE,  /* Only for windows  and menus */
         APPEARANCE_LV_BEVELLED, /* To be used only with getGradient */
         APPEARANCE_AGUA_MOD,
         APPEARANCE_LV_AGUA,
@@ -777,6 +815,13 @@
 
 typedef enum
 {
+    TBTN_STANDARD,
+    TBTN_RAISED,
+    TBTN_JOINED
+} ETBarBtn;
+
+typedef enum
+{
     BORDER_FLAT,
     BORDER_RAISED,
     BORDER_SUNKEN,
@@ -1056,7 +1101,8 @@
                      splitterHighlight,
                      crSize,
                      gbFactor,
-                     gbLabel;
+                     gbLabel,
+                     thin;
     ERound           round;
     bool             embolden,
                      highlightTab,
@@ -1088,8 +1134,8 @@
                      mapKdeIcons,
 #if defined CONFIG_DIALOG || ( defined QT4_OR_ABOVE) || !defined __cplusplus
                      gtkButtonOrder,
-                     fadeLines,
 #endif
+                     fadeLines,
                      reorderGtkButtons,
                      borderMenuitems,
                      colorMenubarMouseOver,
@@ -1154,6 +1200,7 @@
     ESliderStyle     sliderStyle;
     EMouseOver       coloredMouseOver;
     ETBarBorder      toolbarBorders;
+    ETBarBtn         tbarBtns;
     EDefBtnIndicator defBtnIndicator;
     ELine            sliderThumbs,
                      handles,
@@ -1221,6 +1268,8 @@
 #else
     Gradient         *customGradient[NUM_CUSTOM_GRAD];
 #endif
+    TQtCPixmap        bgndPixmap;
+    TQtCPixmap        menuBgndPixmap;
     TQtCImage         bgndImage,
                      menuBgndImage;
 #if !defined __cplusplus || ( defined QT4_OR_ABOVE)
diff -U 3 -H -d -r -N -x '*.txt' -x '*.config' -x '*.xml' -x '*.dll' -x '*.pdb' -x '*.cache' -x '*.exe' -x '*.resources' -- tde-style-qtcurve-1.6.2/common/config_file.c tde-style-qtcurve-1.7.1/common/config_file.c
--- tde-style-qtcurve-1.6.2/common/config_file.c	2020-02-15 11:13:07.000000000 +0100
+++ tde-style-qtcurve-1.7.1/common/config_file.c	2020-02-15 16:34:02.492489797 +0100
@@ -1608,7 +1608,7 @@
                 TQString filename(TQFile::decodeName(cfgDir)+CONFIG_FILE);
 
                 if(!TQFile::exists(filename))
-                    filename=TQFile::decodeName(cfgDir)+"../"OLD_CONFIG_FILE;
+                    filename=TQFile::decodeName(cfgDir)+"../" OLD_CONFIG_FILE;
                 return readConfig(filename, opts, defOpts);
             }
         }
@@ -2300,7 +2300,7 @@
 
 static const char * getSystemConfigFile()
 {
-    static const char * constFiles[]={ /*"/etc/qt4/"OLD_CONFIG_FILE, "/etc/qt3/"OLD_CONFIG_FILE, "/etc/qt/"OLD_CONFIG_FILE,*/ "/etc/"OLD_CONFIG_FILE, NULL };
+    static const char * constFiles[]={ /*"/etc/qt4/"OLD_CONFIG_FILE, "/etc/qt3/"OLD_CONFIG_FILE, "/etc/qt/"OLD_CONFIG_FILE,*/ "/etc/" OLD_CONFIG_FILE, NULL };
 
     int i;
 
diff -U 3 -H -d -r -N -x '*.txt' -x '*.config' -x '*.xml' -x '*.dll' -x '*.pdb' -x '*.cache' -x '*.exe' -x '*.resources' -- tde-style-qtcurve-1.6.2/style/qtcurve.cpp tde-style-qtcurve-1.7.1/style/qtcurve.cpp
--- tde-style-qtcurve-1.6.2/style/qtcurve.cpp	2020-02-15 11:13:07.000000000 +0100
+++ tde-style-qtcurve-1.7.1/style/qtcurve.cpp	2020-02-15 16:29:20.168486125 +0100
@@ -141,7 +141,7 @@
 
     if(w)
     {
-        static const Atom constAtom  = XInternAtom(tqt_xdisplay(), MENU_SIZE_ATOM, False);
+        static const Atom constAtom = XInternAtom(tqt_xdisplay(), MENU_SIZE_ATOM, False);
         XChangeProperty(tqt_xdisplay(), w->parentWidget() ? w->parentWidget()->winId() : w->winId(),
                         constAtom, XA_CARDINAL, 16, PropModeReplace, (unsigned char *)&size, 1);
     }
@@ -153,9 +153,12 @@
 
     if(w)
     {
-        static const Atom constAtom  = XInternAtom(tqt_xdisplay(), BGND_ATOM, False);
+        static const Atom constAtom = XInternAtom(tqt_xdisplay(), BGND_ATOM, False);
+        unsigned long prop=((APPEARANCE_STRIPED==app || APPEARANCE_FILE==app ? app : APPEARANCE_FLAT)&0xFF) |
+                           (widget->palette().active().background().rgb()&0x00FFFFFF)<<8;
+
         XChangeProperty(tqt_xdisplay(), w->parentWidget() ? w->parentWidget()->winId() : w->winId(),
-                        constAtom, XA_CARDINAL, 16, PropModeReplace, (unsigned char *)&app, 1);
+                        constAtom, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&prop, 1);
     }
 }
 
@@ -182,6 +185,39 @@
 #define MO_ARROW_X(FLAGS, COL) (MO_NONE!=opts.coloredMouseOver && FLAGS&Style_MouseOver && FLAGS&Style_Enabled ? itsMouseOverCols[ARROW_MO_SHADE] : COL)
 #define MO_ARROW(COL)          MO_ARROW_X(flags, COL)
 
+static void adjustToolbarButtons(const TQWidget *widget, const TQToolBar *toolbar, int &leftAdjust, int &topAdjust,
+                                 int &rightAdjust, int &bottomAdjust, int &round)
+{
+    const int constAdjust=4;
+    const int d = 1;
+    TQRect geo(widget->geometry());
+
+    if (TQt::Horizontal==toolbar->orientation())
+    {
+        bool haveLeft=::tqqt_cast<TQToolButton*>(toolbar->childAt(geo.x()-d, geo.y())),
+             haveRight=::tqqt_cast<TQToolButton*>(toolbar->childAt(geo.right()+d, geo.y()));
+
+        if(haveLeft && haveRight)
+            leftAdjust=-constAdjust, rightAdjust=constAdjust, round=ROUNDED_NONE;
+        else if(haveLeft)
+            leftAdjust=-constAdjust, round=ROUNDED_RIGHT;
+        else if(haveRight)
+            rightAdjust=constAdjust, round=ROUNDED_LEFT;
+    }
+    else
+    {
+        bool haveTop=::tqqt_cast<TQToolButton*>(toolbar->childAt(geo.x(), geo.y()-d)),
+             haveBot=::tqqt_cast<TQToolButton*>(toolbar->childAt(geo.x(), geo.bottom()+d));
+
+        if(haveTop && haveBot)
+            topAdjust=-constAdjust, bottomAdjust=constAdjust, round=ROUNDED_NONE;
+        else if(haveTop)
+            topAdjust=-constAdjust, round=ROUNDED_BOTTOM;
+        else if(haveBot)
+            bottomAdjust=constAdjust, round=ROUNDED_TOP;
+    }
+}
+
 static const int constMenuPixmapWidth=22;
 
 static bool useTQt3Settings()
@@ -1415,6 +1451,35 @@
 
     if(APPEARANCE_STRIPED==opts.bgndAppearance)
         pal.setBrush(TQColorGroup::Background, TQBrush(pal.active().background(), *createStripePixmap(pal.active().background(), true)));
+    else if(APPEARANCE_FILE==opts.bgndAppearance)
+    {
+        TQPixmap       pix(opts.bgndPixmap.img.width(), opts.bgndPixmap.img.height());
+        TQPainter      p(&pix);
+        WindowBorders borders=qtcGetWindowBorderSize();
+        int           xadjust=borders.sides>0 && borders.sides!=opts.bgndPixmap.img.width()
+                        ? borders.sides>opts.bgndPixmap.img.width()
+                            ? borders.sides%opts.bgndPixmap.img.width()
+                            : borders.sides
+                        :0,
+                      yadjust=borders.titleHeight>0 && borders.titleHeight!=opts.bgndPixmap.img.height()
+                        ? borders.titleHeight>opts.bgndPixmap.img.height()
+                            ? borders.titleHeight%opts.bgndPixmap.img.height()
+                            : borders.titleHeight
+                        :0;
+
+        p.fillRect(0, 0, opts.bgndPixmap.img.width(), opts.bgndPixmap.img.height(), pal.active().background());
+
+        p.drawPixmap(-xadjust, -yadjust, opts.bgndPixmap.img);
+        if(xadjust>0)
+            p.drawPixmap(opts.bgndPixmap.img.width()-xadjust, -yadjust, opts.bgndPixmap.img);
+        if(yadjust>0)
+            p.drawPixmap(-xadjust, opts.bgndPixmap.img.height()-yadjust, opts.bgndPixmap.img);
+        if(xadjust>0 && yadjust>0)
+            p.drawPixmap(opts.bgndPixmap.img.width()-xadjust,  opts.bgndPixmap.img.height()-yadjust, opts.bgndPixmap.img);
+
+        p.end();
+        pal.setBrush(TQColorGroup::Background, TQBrush(pal.active().background(), pix));
+    }
 }
 
 static TQColor disable(const TQColor &col, const TQColor &bgnd)
@@ -1475,8 +1540,11 @@
 	if(isWindowDragWidget(TQT_TQOBJECT(widget)))
 		installObjectEventHandler(ceData, elementFlags, ptr, this);
 
-	if(APPEARANCE_STRIPED==opts.bgndAppearance && (::tqqt_cast<TQDialog *>(widget) || ::tqqt_cast<TQMainWindow *>(widget)))
-		setBgndProp(widget, APPEARANCE_STRIPED);
+	if(::tqqt_cast<TQDialog *>(widget) || ::tqqt_cast<TQMainWindow *>(widget))
+	{
+		setBgndProp(widget, opts.bgndAppearance);
+		installObjectEventHandler(ceData, elementFlags, ptr, this); // To trap palette change
+	}
 
 	if(widget->parentWidget() && ::tqqt_cast<TQScrollView *>(widget) && ::tqqt_cast<TQComboBox *>(widget->parentWidget()))
 	{
@@ -1543,8 +1611,7 @@
 		(widget->parentWidget() && ::tqqt_cast<const TQListBox *>(widget) &&
 		::tqqt_cast<const TQComboBox *>(widget->parentWidget()))))
 		((TQFrame *)widget)->setLineWidth(0);
-	else if ((USE_LIGHTER_POPUP_MENU || !IS_FLAT_BGND(opts.menuBgndAppearance)) && !opts.borderMenuitems &&
-		widget && ::tqqt_cast<const TQPopupMenu *>(widget))
+	else if (!DRAW_MENU_BORDER && !opts.borderMenuitems && widget && ::tqqt_cast<const TQPopupMenu *>(widget))
 		((TQFrame *)widget)->setLineWidth(1);
 
 	if (::tqqt_cast<TQRadioButton *>(widget) || ::tqqt_cast<TQCheckBox *>(widget))
@@ -1619,39 +1686,7 @@
 		installObjectEventHandler(ceData, elementFlags, ptr, this);
 		if(BLEND_TITLEBAR || opts.windowBorder&WINDOW_BORDER_USE_MENUBAR_COLOR_FOR_TITLEBAR)
 		emitMenuSize(widget, ceData.rect.height());
-		if(SHADE_WINDOW_BORDER==opts.shadeMenubars)
-		{
-		TQPalette    pal(ceData.palette);
-		TQColorGroup act(pal.active());
-		TQColorGroup inact(pal.inactive());
-
-		getMdiColors(act, true);
-		act.setColor(TQColorGroup::Foreground, itsActiveMdiTextColor);
-		inact.setColor(TQColorGroup::Foreground, opts.shadeMenubarOnlyWhenActive ? itsMdiTextColor : itsActiveMdiTextColor);
-		pal.setInactive(inact);
-		pal.setActive(act);
-		widget->setPalette(pal);
-		}
-		else if(opts.customMenuTextColor || SHADE_BLEND_SELECTED==opts.shadeMenubars || SHADE_SELECTED==opts.shadeMenubars ||
-			(SHADE_CUSTOM==opts.shadeMenubars && TOO_DARK(itsMenubarCols[ORIGINAL_SHADE])))
-		{
-		TQPalette    pal(ceData.palette);
-		TQColorGroup act(pal.active());
-
-		act.setColor(TQColorGroup::Foreground, opts.customMenuTextColor
-							? opts.customMenuNormTextColor
-							: TQApplication::palette().active().highlightedText());
-
-		if(!opts.shadeMenubarOnlyWhenActive)
-		{
-			TQColorGroup inact(pal.inactive());
-			inact.setColor(TQColorGroup::Foreground, act.color(TQColorGroup::Foreground));
-			pal.setInactive(inact);
-		}
-
-		pal.setActive(act);
-		widget->setPalette(pal);
-		}
+		setMenuTextColors(widget, true);
 	}
 	else if(::tqqt_cast<TQToolBar *>(widget))
 	{
@@ -1659,7 +1694,10 @@
 		widget->setBackgroundMode(PaletteBackground);
 	}
 	else if(::tqqt_cast<TQPopupMenu *>(widget))
+	{
 		widget->setBackgroundMode(NoBackground); // PaletteBackground);
+		setMenuTextColors(widget, true);
+	}
 	else if (ceData.widgetObjectTypes.contains("TDEToolBarSeparator") ||
 		(ceData.widgetObjectTypes.contains("TDEListViewSearchLineWidget") &&
 		widget->parent() && ::tqqt_cast<TQToolBar *>(widget->parent())))
@@ -1833,7 +1871,7 @@
 		widget->setPalette(pal);
 	}
 
-	if(APPEARANCE_STRIPED==opts.bgndAppearance)
+	if(APPEARANCE_STRIPED==opts.bgndAppearance || APPEARANCE_FILE==opts.bgndAppearance)
 		widget->setBackgroundOrigin(TQWidget::WindowOrigin);
     }
 
@@ -2092,12 +2130,17 @@
 		{
 			TQWidget  *widget=(TQWidget*)object;
 			TQPainter painter(widget);
-			TQColor   col(USE_LIGHTER_POPUP_MENU ? itsLighterPopupMenuBgndCol : ceData.palette.active().background());
+			TQColor   col(popupMenuCol(widget->palette().active()));
 
 			if(APPEARANCE_STRIPED==opts.menuBgndAppearance)
 			{
 				painter.drawTiledPixmap(ceData.rect, *createStripePixmap(col, false));
 			}
+			else if(APPEARANCE_FILE==opts.menuBgndAppearance)
+			{
+				painter.fillRect(widget->rect(), col);
+				painter.drawTiledPixmap(widget->rect(), opts.menuBgndPixmap.img);
+			}
 			else
 			{
 				drawBevelGradientReal(col, &painter, ceData.rect, GT_HORIZ==opts.menuBgndGrad, false,
@@ -2320,7 +2363,8 @@
 		default:
 			break;
 		}
-	
+	if(TQEvent::PaletteChange==event->type() && (::tqqt_cast<TQDialog *>(object) || ::tqqt_cast<TQMainWindow *>(object)))
+		setBgndProp(static_cast<TQWidget *>(object), opts.bgndAppearance);
 #ifdef TQTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT
 	if(opts.fixParentlessDialogs && ::tqqt_cast<TQDialog *>(object))
 	{
@@ -2684,7 +2728,7 @@
     }
 
     if(doEtch || glowFocus) {
-        if( (!sunken  || sunkenToggleMo) && 
+        if( (!sunken  || sunkenToggleMo) && !(opts.thin&THIN_FRAMES) && 
             ((WIDGET_OTHER!=w && WIDGET_SLIDER_TROUGH!=w && MO_GLOW==opts.coloredMouseOver && flags&Style_MouseOver) ||
              glowFocus ||
              (WIDGET_DEF_BUTTON==w && IND_GLOW==opts.defBtnIndicator)/* ||
@@ -2793,40 +2837,41 @@
     if(WIDGET_TAB_BOT==w || WIDGET_TAB_TOP==w)
         cols=itsBackgroundCols;
 
-    switch(borderProfile)
-    {
-        case BORDER_FLAT:
-            break;
-        case BORDER_RAISED:
-        case BORDER_SUNKEN:
-        case BORDER_LIGHT:
-            if(flags&Style_Enabled && (hasMouseOver || hasFocus) && (WIDGET_ENTRY==w || WIDGET_SCROLLVIEW==w || WIDGET_COMBO==w || WIDGET_SPIN==w))
-                p->setPen(midColorF(cg.background(), cols[BORDER_RAISED==borderProfile || BORDER_LIGHT==borderProfile
-                                                            ? 0 : FRAME_DARK_SHADOW], 1.5-ENTRY_INNER_ALPHA));
-            else
-                p->setPen(flags&Style_Enabled && (BORDER_RAISED==borderProfile || BORDER_LIGHT==borderProfile || APPEARANCE_FLAT!=app)
-                            ? blendBorderColors
-                                ? midColor(cg.background(), cols[BORDER_RAISED==borderProfile
-                                                                   ? 0 : FRAME_DARK_SHADOW]) // Was base???
-                                : cols[BORDER_RAISED==borderProfile || BORDER_LIGHT==borderProfile ? 0 : FRAME_DARK_SHADOW]
-                            : cg.background());
-            p->drawLine(r.x()+1, r.y()+1, r.x()+1, r.y()+r.height()-2);
-            p->drawLine(r.x()+1, r.y()+1, r.x()+r.width()-2, r.y()+1);
-            if(!hasFocus && !hasMouseOver && BORDER_LIGHT!=borderProfile)
-                p->setPen(WIDGET_SCROLLVIEW==w
-                            ? cg.background()
-                            : WIDGET_ENTRY==w
-                                ? cg.base()
-                                : flags&Style_Enabled && (BORDER_SUNKEN==borderProfile || APPEARANCE_FLAT!=app ||
-                                                        WIDGET_TAB_TOP==w || WIDGET_TAB_BOT==w)
-                                    ? blendBorderColors
-                                        ? midColor(cg.background(), cols[BORDER_RAISED==borderProfile
-                                                                            ? FRAME_DARK_SHADOW : 0]) // Was base???
-                                        : cols[BORDER_RAISED==borderProfile ? FRAME_DARK_SHADOW : 0]
-                                    : cg.background());
-            p->drawLine(r.x()+r.width()-2, r.y()+1, r.x()+r.width()-2, r.y()+r.height()-2);
-            p->drawLine(r.x()+1, r.y()+r.height()-2, r.x()+r.width()-2, r.y()+r.height()-2);
-    }
+    if(!(opts.thin&THIN_FRAMES))
+        switch(borderProfile)
+        {
+            case BORDER_FLAT:
+                break;
+            case BORDER_RAISED:
+            case BORDER_SUNKEN:
+            case BORDER_LIGHT:
+                if(flags&Style_Enabled && (hasMouseOver || hasFocus) && (WIDGET_ENTRY==w || WIDGET_SCROLLVIEW==w || WIDGET_COMBO==w || WIDGET_SPIN==w))
+                    p->setPen(midColorF(cg.background(), cols[BORDER_RAISED==borderProfile || BORDER_LIGHT==borderProfile
+                                                                ? 0 : FRAME_DARK_SHADOW], 1.5-ENTRY_INNER_ALPHA));
+                else
+                    p->setPen(flags&Style_Enabled && (BORDER_RAISED==borderProfile || BORDER_LIGHT==borderProfile || APPEARANCE_FLAT!=app)
+                                ? blendBorderColors
+                                    ? midColor(cg.background(), cols[BORDER_RAISED==borderProfile
+                                                                    ? 0 : FRAME_DARK_SHADOW]) // Was base???
+                                    : cols[BORDER_RAISED==borderProfile || BORDER_LIGHT==borderProfile ? 0 : FRAME_DARK_SHADOW]
+                                : cg.background());
+                p->drawLine(r.x()+1, r.y()+1, r.x()+1, r.y()+r.height()-2);
+                p->drawLine(r.x()+1, r.y()+1, r.x()+r.width()-2, r.y()+1);
+                if(!hasFocus && !hasMouseOver && BORDER_LIGHT!=borderProfile)
+                    p->setPen(WIDGET_SCROLLVIEW==w
+                                ? cg.background()
+                                : WIDGET_ENTRY==w
+                                    ? cg.base()
+                                    : flags&Style_Enabled && (BORDER_SUNKEN==borderProfile || APPEARANCE_FLAT!=app ||
+                                                            WIDGET_TAB_TOP==w || WIDGET_TAB_BOT==w)
+                                        ? blendBorderColors
+                                            ? midColor(cg.background(), cols[BORDER_RAISED==borderProfile
+                                                                                ? FRAME_DARK_SHADOW : 0]) // Was base???
+                                            : cols[BORDER_RAISED==borderProfile ? FRAME_DARK_SHADOW : 0]
+                                        : cg.background());
+                p->drawLine(r.x()+r.width()-2, r.y()+1, r.x()+r.width()-2, r.y()+r.height()-2);
+                p->drawLine(r.x()+1, r.y()+r.height()-2, r.x()+r.width()-2, r.y()+r.height()-2);
+        }
 
     if(ROUNDED && ROUNDED_NONE!=round)
     {
@@ -3936,26 +3981,33 @@
         }
         case PE_PanelPopup:
         {
-            const TQColor *use(backgroundColors(cg));
+            const TQColor    *use(popupMenuCols(cg));
+            EGradientBorder border=getGradient(opts.menuBgndAppearance, &opts)->border;
 
             p->setPen(use[STD_BORDER]);
             p->setBrush(NoBrush);
             p->drawRect(r);
-            if(!IS_FLAT_BGND(opts.menuBgndAppearance))
-                ;
-            else if(USE_LIGHTER_POPUP_MENU)
+
+            if(USE_BORDER(border) && APPEARANCE_FLAT!=opts.menuBgndAppearance)
             {
-                p->setPen(/*USE_LIGHTER_POPUP_MENU ? */itsLighterPopupMenuBgndCol/* : cg.background()*/);
-                p->drawRect(TQRect(r.x()+1, r.y()+1, r.width()-2, r.height()-2));
+                p->setPen(use[0]);
+                if(GB_LIGHT==border)
+                    p->drawRect(TQRect(r.x()+1, r.y()+1, r.width()-2, r.height()-2));
+                else
+                {
+                    if(GB_3D==border)
+                        p->setPen(popupMenuCol(cg));
+                    p->drawLine(r.x()+1, r.y()+1, r.x()+r.width()-2,  r.y()+1);
+                    p->drawLine(r.x()+1, r.y()+1, r.x()+1,  r.y()+r.height()-2);
+                    p->setPen(use[FRAME_DARK_SHADOW]);
+                    p->drawLine(r.x()+1, r.y()+r.height()-2, r.x()+r.width()-2,  r.y()+r.height()-2);
+                    p->drawLine(r.x()+r.width()-2, r.y()+1, r.x()+r.width()-2,  r.y()+r.height()-2);
+                }
             }
-            else
+            else if(IS_FLAT_BGND(opts.menuBgndAppearance))
             {
-                p->setPen(use[0]);
-                p->drawLine(r.x()+1, r.y()+1, r.x()+r.width()-2,  r.y()+1);
-                p->drawLine(r.x()+1, r.y()+1, r.x()+1,  r.y()+r.height()-2);
-                p->setPen(use[FRAME_DARK_SHADOW]);
-                p->drawLine(r.x()+1, r.y()+r.height()-2, r.x()+r.width()-2,  r.y()+r.height()-2);
-                p->drawLine(r.x()+r.width()-2, r.y()+1, r.x()+r.width()-2,  r.y()+r.height()-2);
+                p->setPen(/*USE_LIGHTER_POPUP_MENU ? */popupMenuCol(cg)/* : cg.background()*/);
+                p->drawRect(TQRect(r.x()+1, r.y()+1, r.width()-2, r.height()-2));
             }
             break;
         }
@@ -4249,7 +4301,7 @@
                     (dynamic_cast<const TQButton *>(widget) || dynamic_cast<const TQComboBox *>(widget)))
                     return;
 
-                if(FOCUS_LINE==opts.focus)
+                if(FOCUS_LINE==opts.focus || FOCUS_GLOW==opts.focus)
                 {
                     p->setPen(view && flags&Style_Selected
                                     ? cg.highlightedText()
@@ -4488,7 +4540,7 @@
     {
         case KPE_ToolBarHandle:
         {
-            if(APPEARANCE_STRIPED!=opts.bgndAppearance)
+            if(APPEARANCE_STRIPED!=opts.bgndAppearance && APPEARANCE_FILE!=opts.bgndAppearance)
             {
                 TQRect r2(r);
                 r2.addCoords(-1, -1, 2, 2);
@@ -4580,7 +4632,7 @@
         {
             TQRect ar(r.x()+((r.width()-(LV_SIZE+4))>>1), r.y()+((r.height()-(LV_SIZE+4))>>1), LV_SIZE+4,
                      LV_SIZE+4);
-
+#if 0
             if(LV_OLD==opts.lvLines)
             {
                 int lo(ROUNDED ? 2 : 0);
@@ -4607,7 +4659,7 @@
                                 ar.y()+ar.height()-2);
                 }
             }
-
+#endif
             ::drawArrow(p, ar, flags&Style_Enabled ? cg.mid() : cg.text(), flags&Style_On // Collapsed = On
                                             ?  TQApplication::reverseLayout()
                                                  ? PE_ArrowLeft
@@ -4660,7 +4712,9 @@
                           itsHover(itsHoverTab && itsHoverTab->isEnabled() && data.tab()==itsHoverTab &&
                                           !(flags&Style_Selected) &&
                                           ceData.tabBarData.currentTabIndex!=tabIndex),
-                          glowMo(!active && itsHover && opts.coloredMouseOver && TAB_MO_GLOW==opts.tabMouseOver);
+                          glowMo(!active && itsHover && opts.coloredMouseOver && TAB_MO_GLOW==opts.tabMouseOver),
+                          thin(opts.thin&THIN_FRAMES),
+                          drawOuterGlow(glowMo && !thin);
             int           sizeAdjust(!active && TAB_MO_GLOW==opts.tabMouseOver ? 1 : 0);
             const TQColor  &fill(getTabFill(flags&Style_Selected, itsHover, itsBackgroundCols));
             EBorder       borderProfile(active || opts.borderInactiveTab
@@ -4742,7 +4796,7 @@
                                     ? (top ? ROUNDED_TOPRIGHT : ROUNDED_BOTTOMRIGHT)
                                     : ROUNDED_NONE, glowMo ? itsMouseOverCols : 0L, top ? WIDGET_TAB_TOP : WIDGET_TAB_BOT, true,
                        borderProfile, false);
-            if(glowMo)
+            if(drawOuterGlow)
             {
                 glowTr.addCoords(-1, -1, 1, 1);
                 drawGlow(p, glowTr, cg, top ? WIDGET_TAB_TOP : WIDGET_TAB_BOT);
@@ -4756,16 +4810,22 @@
                     p->setPen(itsBackgroundCols[STD_BORDER]);
                     p->drawPoint(r.x(), r.y()+r.height()-2);
                     p->drawPoint(r.x()+r.width()-1, r.y()+r.height()-2);
-                    p->setPen(itsBackgroundCols[0]);
-                    p->drawLine(r.x()+1, r.y()+r.height()-3, r.x()+1, r.y()+r.height()-1);
-                    //p->drawPoint(r.x()+r.width()-2, r.y()+r.height()-1);
-                    p->setPen(itsBackgroundCols[opts.borderTab ? 0 : FRAME_DARK_SHADOW]);
-                    p->drawPoint(r.x()+r.width()-2, r.y()+r.height()-2);
+                    if(!thin)
+                    {
+                        p->setPen(itsBackgroundCols[0]);
+                        p->drawLine(r.x()+1, r.y()+r.height()-3, r.x()+1, r.y()+r.height()-1);
+                        //p->drawPoint(r.x()+r.width()-2, r.y()+r.height()-1);
+                        p->setPen(itsBackgroundCols[opts.borderTab ? 0 : FRAME_DARK_SHADOW]);
+                        p->drawPoint(r.x()+r.width()-2, r.y()+r.height()-2);
+                    }
                 }
                 else
                 {
-                    p->setPen(itsBackgroundCols[0]);
-                    p->drawLine(r.x(), r.y()+r.height()-1, r.x()+r.width()-1, r.y()+r.height()-1);
+                    if(!thin)
+                    {
+                        p->setPen(itsBackgroundCols[0]);
+                        p->drawLine(r.x(), r.y()+r.height()-1, r.x()+r.width()-1, r.y()+r.height()-1);
+                    }
                     p->setPen(itsBackgroundCols[STD_BORDER]);
                     p->drawLine(r.x(), r.y()+r.height()-2, r.x()+r.width()-1, r.y()+r.height()-2);
 
@@ -4784,7 +4844,7 @@
                     p->setPen(itsBackgroundCols[!active && TAB_MO_GLOW==opts.tabMouseOver && opts.round>ROUND_SLIGHT && !(opts.square&SQUARE_TAB_FRAME)
                                                     ? ORIGINAL_SHADE : STD_BORDER]);
                     p->drawLine(x, r.y()+r.height()-1, x, r.height()-2);
-                    if(active)
+                    if(active && !thin)
                     {
                         p->setPen(itsBackgroundCols[reverse ? dark : 0]);
                         p->drawLine(x2, r.y()+r.height()-1, x2, r.y()+r.height()-2);
@@ -4823,16 +4883,22 @@
                     p->setPen(itsBackgroundCols[STD_BORDER]);
                     p->drawPoint(r.x(), r.y()+1);
                     p->drawPoint(r.x()+r.width()-1, r.y()+1);
-                    p->setPen(itsBackgroundCols[0]);
-                    p->drawLine(r.x()+1, r.y()+2, r.x()+1, r.y());
-                    p->setPen(itsBackgroundCols[opts.borderTab ? 0 : FRAME_DARK_SHADOW]);
-                    p->drawLine(r.x()+r.width()-2, r.y()+1, r.x()+r.width()-2, r.y());
-                    p->drawPoint(r.x()+r.width()-1, r.y());
+                    if(!thin)
+                    {
+                        p->setPen(itsBackgroundCols[0]);
+                        p->drawLine(r.x()+1, r.y()+2, r.x()+1, r.y());
+                        p->setPen(itsBackgroundCols[opts.borderTab ? 0 : FRAME_DARK_SHADOW]);
+                        p->drawLine(r.x()+r.width()-2, r.y()+1, r.x()+r.width()-2, r.y());
+                        p->drawPoint(r.x()+r.width()-1, r.y());
+                    }
                 }
                 else
                 {
-                    p->setPen(itsBackgroundCols[opts.borderTab ? 0 : dark]);
-                    p->drawLine(r.x(), r.y(), r.x()+r.width()-1, r.y());
+                    if(!thin)
+                    {
+                        p->setPen(itsBackgroundCols[opts.borderTab ? 0 : dark]);
+                        p->drawLine(r.x(), r.y(), r.x()+r.width()-1, r.y());
+                    }
                     p->setPen(itsBackgroundCols[STD_BORDER]);
                     p->drawLine(r.x(), r.y()+1, r.x()+r.width()-1, r.y()+1);
                     
@@ -5055,6 +5121,7 @@
             if(data.isDefault())
                 break;
 
+            //const TQPopupMenu *popupmenu((const QPopupMenu *)widget);
             TQMenuItem        *mi(data.menuItem());
             int              tab(data.tabWidth()),
                              maxpmw(data.maxIconWidth()),
@@ -5069,20 +5136,17 @@
             else
             {
                 if(IS_FLAT_BGND(opts.menuBgndAppearance))
-                    p->fillRect(r, USE_LIGHTER_POPUP_MENU ? itsLighterPopupMenuBgndCol
-                                                          : itsBackgroundCols[ORIGINAL_SHADE]);
+                    p->fillRect(r, popupMenuCol(cg));
 
                 if(opts.menuStripe)
-                    drawBevelGradient(menuStripeCol(), p,
+                    drawBevelGradient(menuStripeCol(cg), p,
                                       TQRect(reverse ? r.right()-maxpmw : r.x(),
                                             r.y(), maxpmw, r.height()), false,
                                       false, opts.menuStripeAppearance, WIDGET_OTHER);
             }
 
             if((flags&Style_Active) && (flags&Style_Enabled))
-                drawMenuItem(p, r, flags, cg, false, ROUNDED_ALL,
-                             USE_LIGHTER_POPUP_MENU ? itsLighterPopupMenuBgndCol
-                                                    : itsBackgroundCols[ORIGINAL_SHADE],
+                drawMenuItem(p, r, flags, cg, false, ROUNDED_ALL, popupMenuCol(cg),
                              opts.useHighlightForMenu ? itsHighlightCols : itsBackgroundCols);
 
             if(!mi)
@@ -5091,7 +5155,7 @@
             if(mi->isSeparator())
             {
                 y=r.y()+(r.height()>>1);
-                p->setPen(itsBackgroundCols[MENU_SEP_SHADE]);
+                p->setPen(popupMenuCols(cg)[MENU_SEP_SHADE]);
                 p->drawLine(r.x()+3+(!reverse && opts.menuStripe ? maxpmw : 0), y,
                             r.x()+r.width()-4-(reverse && opts.menuStripe ? maxpmw : 0), y);
 //                 p->setPen(itsBackgroundCols[0]);
@@ -5667,11 +5731,29 @@
                     break;
                 bflags|=DW_CLOSE_BUTTON;
             }
-
+                
             if (!tb && !onExtender && (elementFlags & CEF_HasParentWidget) &&
                 !qstrcmp(ceData.parentWidgetData.name.ascii(), "qt_maxcontrols"))
                 onControlButtons = true;
 
+            int  round(ROUNDED_ALL), leftAdjust(0), topAdjust(0), rightAdjust(0), bottomAdjust(0);
+            bool horizTBar(true),
+                 raised(!onControlButtons && (TBTN_RAISED==opts.tbarBtns || TBTN_JOINED==opts.tbarBtns));
+
+            if(raised)
+            {
+                if(tb)
+                {
+                    if(TBTN_JOINED==opts.tbarBtns)
+                    {
+                        horizTBar=Qt::Horizontal==tb->orientation();
+                        adjustToolbarButtons(widget, tb, leftAdjust, topAdjust, rightAdjust, bottomAdjust, round);
+                    }
+                }
+                else
+                    raised=false;
+            }
+
             if(active & SC_ToolButton)
                 bflags |=Style_Down;
             if(active & SC_ToolButtonMenu)
@@ -5688,10 +5770,9 @@
 
                 // If we're pressed, on, or raised...
 #if defined TQTC_TQT_ONLY || !defined TDE_VERSION
-                if(bflags &(Style_Down | Style_On | Style_Raised) || onControlButtons)
+                if(bflags &(Style_Down | Style_On | Style_Raised) || onControlButtons || raised)
 #else
-                if(bflags &(Style_Down | Style_On | Style_Raised | Style_MouseOver) ||
-                   onControlButtons)
+                if(bflags &(Style_Down | Style_On | Style_Raised | Style_MouseOver) || onControlButtons || raised)
 #endif
                 {
                     //Make sure the standalone toolbuttons have a gradient in the right direction
@@ -5707,10 +5788,35 @@
                         }
                     }
 
+                    if(raised && TBTN_JOINED==opts.tbarBtns && !horizTBar)
+                        bflags &= ~Style_Horizontal;
+
                     if(elementFlags & CEF_BiState)
                         bflags|=TOGGLE_BUTTON;
 
-                    drawPrimitive(PE_ButtonTool, p, ceData, elementFlags, button, cg, bflags, data);
+                    const TQColor *use(buttonColors(cg));
+
+                    TQRect btnRect(r);
+
+                    btnRect.addCoords(leftAdjust, topAdjust, rightAdjust, bottomAdjust);
+                    drawLightBevel(cg.background(), p, btnRect, cg, bflags, round, getFill(bflags, use), use, true, true, WIDGET_STD_BUTTON);
+
+                    if(raised && TBTN_JOINED==opts.tbarBtns)
+                    {
+                        const int constSpace=opts.fadeLines ? 7 : 4;
+
+                        p->setPen(use[0]);
+                        if(leftAdjust)
+                            p->drawLine(r.x(), r.y()+constSpace, r.x(), r.height()-(constSpace+1));
+                        if(topAdjust)
+                            p->drawLine(r.x()+constSpace, r.y(), r.width()-(constSpace+1), r.y());
+                        p->setPen(use[STD_BORDER]);
+                        if(rightAdjust)
+                            p->drawLine(r.x()+r.width()-1, r.y()+constSpace, r.x()+r.width()-1, r.height()-(constSpace+1));
+                        if(bottomAdjust)
+                            p->drawLine(r.x()+constSpace, r.y()+r.height()-1, r.width()-(constSpace+1), r.y()+r.height()-1);
+                    }
+                    //drawPrimitive(PE_ButtonTool, p, button, cg, bflags, data);
                 }
 
                 // Check whether to draw a background pixmap
@@ -5956,7 +6062,7 @@
             {
                 bool glowFocus(USE_GLOW_FOCUS(flags&Style_MouseOver) && flags&Style_HasFocus && flags&Style_Enabled);
 
-                if(!sunken && !editable && 
+                if(!sunken && !editable && !(opts.thin&THIN_FRAMES) && 
                     ((MO_GLOW==opts.coloredMouseOver && flags&Style_MouseOver)/* ||
                      (FOCUS_FULL==opts.focus && flags&Style_HasFocus)*/ || glowFocus))
                     drawGlow(p, widget ? TQT_TQRECT_OBJECT(ceData.rect) : r, cg, WIDGET_COMBO, glowFocus ? itsFocusCols : NULL);
@@ -5973,6 +6079,7 @@
         {
             itsFormMode = isFormWidget(widget);
 
+            //const TQSpinWidget *spinwidget((const QSpinWidget *)widget);
             TQRect             frame(querySubControlMetrics(CC_SpinWidget, ceData, elementFlags, SC_SpinWidgetFrame,
                                     data, widget)),
                               up(ceData.spinWidgetData.upRect),
@@ -6909,22 +7016,21 @@
                         w=constMinW;
                 }
 
-                return TQSize(w, contentsSize.height() + margin+(DO_EFFECT && !isFormWidget(widget) && !opts.thinnerBtns
-                                                                    ? 6 : 4));
+                return TQSize(w, contentsSize.height() + margin+(DO_EFFECT && !isFormWidget(widget) && !(opts.thin&THIN_BUTTONS) ? 6 : 4));
             }
             break;
         }
         case CT_ComboBox:
         {
             TQSize sz(BASE_STYLE::sizeFromContents(contents, ceData, elementFlags, contentsSize, data, widget));
-            return TQSize(sz.width(), sz.height()+(DO_EFFECT && !isFormWidget(widget) && !opts.thinnerBtns ? 4 : 2));
+            return TQSize(sz.width(), sz.height()+(DO_EFFECT && !isFormWidget(widget) && !(opts.thin&THIN_BUTTONS) ? 4 : 2));
         }
         case CT_PopupMenuItem:
         {
             if (!widget || data.isDefault())
                 break;
 
-            const int        constMinH(opts.thinnerMenuItems ? 25 : 27);
+            const int        constMinH((opts.thin&THIN_MENU_ITEMS) ? 25 : 27);
 
             TQMenuItem        *mi(data.menuItem());
             int              maxpmw(data.maxIconWidth()),
@@ -6956,7 +7062,7 @@
                     h = TQMAX(h, TQFontMetrics(ceData.font).height() + 2);
                 if (mi->iconSet()!= 0)
                     h = TQMAX(h, mi->iconSet()->pixmap(TQIconSet::Small, TQIconSet::Normal).height());
-                h+=(opts.thinnerMenuItems ? 2 : 4);
+                h+=((opts.thin&THIN_MENU_ITEMS) ? 2 : 4);
             }
 
             // check | 4 pixels | item | 8 pixels | accel | 4 pixels | check
@@ -7181,12 +7287,11 @@
         if(ROUNDED)
         {
             main.addCoords(-1, -1, 1, 1);
-            drawBorder(USE_LIGHTER_POPUP_MENU ? itsLighterPopupMenuBgndCol : itsBackgroundCols[ORIGINAL_SHADE], p, main, 
-                       cg, Style_Horizontal|Style_Raised, reverse ? ROUNDED_RIGHT : ROUNDED_LEFT,
+            drawBorder(popupMenuCol(cg), p, main, cg, Style_Horizontal|Style_Raised, reverse ? ROUNDED_RIGHT : ROUNDED_LEFT,
                        cols, WIDGET_MENU_ITEM, false, BORDER_FLAT, false, fill);
         }
 
-        TQColor bgnd(USE_LIGHTER_POPUP_MENU ? itsLighterPopupMenuBgndCol : itsBackgroundCols[ORIGINAL_SHADE]);
+        TQColor bgnd(popupMenuCol(cg));
         drawGradient(reverse ? bgnd : cols[fill], reverse ? cols[fill] : bgnd, p, fade, false);
     }
     else if(mbi || opts.borderMenuitems)
@@ -7785,7 +7890,8 @@
 void QtCurveStyle::drawMenuOrToolBarBackground(TQPainter *p, const TQRect &r, const TQColorGroup &cg,
                                                bool menu, bool horiz) const
 {
-    if(menu && APPEARANCE_STRIPED==opts.bgndAppearance && IS_FLAT(opts.menubarAppearance) && SHADE_NONE==opts.shadeMenubars)
+    if(menu && (APPEARANCE_STRIPED==opts.bgndAppearance || APPEARANCE_FILE==opts.bgndAppearance) &&
+       IS_FLAT(opts.menubarAppearance) && SHADE_NONE==opts.shadeMenubars)
         return;
 
     TQRect       rx(r);
@@ -7889,6 +7995,20 @@
     return itsButtonCols;
 }
 
+const TQColor * QtCurveStyle::popupMenuCols(const TQColorGroup &cg) const
+{
+    return opts.shadePopupMenu ? menuColors(cg, true) : backgroundColors(cg);
+}
+
+const TQColor & QtCurveStyle::popupMenuCol(const TQColorGroup &cg, int shade) const
+{
+    return opts.shadePopupMenu
+        ? menuColors(cg, true)[ORIGINAL_SHADE]
+        : USE_LIGHTER_POPUP_MENU
+            ? itsLighterPopupMenuBgndCol
+            : itsBackgroundCols[shade];
+}
+
 const TQColor * QtCurveStyle::checkRadioColors(const TQColorGroup &cg, SFlags flags) const
 {
     return opts.crColor && flags&Style_Enabled && (flags&Style_On || !(flags&Style_Off))
@@ -7968,6 +8088,58 @@
     }
 }
 
+void QtCurveStyle::setMenuTextColors(TQWidget *widget, bool isMenuBar) const
+{
+    if(SHADE_WINDOW_BORDER==opts.shadeMenubars)
+    {
+        TQPalette pal(widget->palette());
+
+        getMdiColors(pal.active(), false);
+
+        pal.setBrush(TQPalette::Active, TQColorGroup::Foreground, itsActiveMdiTextColor);
+        pal.setBrush(TQPalette::Active, TQColorGroup::Text, pal.brush(TQPalette::Active, TQColorGroup::Foreground));
+        if(isMenuBar)
+        {
+            pal.setBrush(TQPalette::Inactive, TQColorGroup::Foreground,
+                            opts.shadeMenubarOnlyWhenActive ? itsMdiTextColor : itsActiveMdiTextColor);
+            pal.setBrush(TQPalette::Inactive, TQColorGroup::Text, pal.brush(TQPalette::Inactive, TQColorGroup::Foreground));
+        }
+        else if(opts.shadePopupMenu)
+        {
+            pal.setBrush(TQPalette::Disabled, TQColorGroup::Foreground, midColor(itsActiveMdiTextColor, popupMenuCol(pal.active())));
+            pal.setBrush(TQPalette::Disabled, TQColorGroup::Text, pal.brush(TQPalette::Disabled, TQColorGroup::Foreground));
+        }
+
+        widget->setPalette(pal);
+    }
+    else if(opts.customMenuTextColor || SHADE_BLEND_SELECTED==opts.shadeMenubars ||
+            SHADE_SELECTED==opts.shadeMenubars ||
+            (SHADE_CUSTOM==opts.shadeMenubars && TOO_DARK(itsMenubarCols[ORIGINAL_SHADE])))
+    {
+        TQPalette pal(widget->palette());
+
+        pal.setBrush(TQPalette::Active, TQColorGroup::Foreground, opts.customMenuTextColor
+                                                ? opts.customMenuNormTextColor
+                                                : pal.active().highlightedText());
+        pal.setBrush(TQPalette::Active, TQColorGroup::Text, pal.brush(TQPalette::Active, TQColorGroup::Foreground));
+
+        if(isMenuBar && !opts.shadeMenubarOnlyWhenActive)
+        {
+            pal.setBrush(TQPalette::Inactive, TQColorGroup::Foreground, opts.customMenuTextColor
+                                                ? opts.customMenuNormTextColor
+                                                : pal.active().highlightedText());
+            pal.setBrush(TQPalette::Inactive, TQColorGroup::Text, pal.brush(TQPalette::Inactive, TQColorGroup::Foreground));
+        }
+        else if(!isMenuBar && opts.shadePopupMenu)
+        {
+            pal.setBrush(TQPalette::Disabled, TQColorGroup::Foreground,
+                         midColor(pal.brush(TQPalette::Active, TQColorGroup::Foreground).color(), popupMenuCol(pal.active())));
+            pal.setBrush(TQPalette::Disabled, TQColorGroup::Text, pal.brush(TQPalette::Disabled, TQColorGroup::Foreground));
+        }
+        widget->setPalette(pal);
+    }
+}
+
 const TQColor * QtCurveStyle::menuColors(const TQColorGroup &cg, bool active) const
 {
     return SHADE_WINDOW_BORDER==opts.shadeMenubars
@@ -8102,8 +8274,8 @@
             }
         }
 
-        if(itsMdiColors && opts.shadeMenubarOnlyWhenActive && SHADE_WINDOW_BORDER==opts.shadeMenubars &&
-           itsActiveMdiColors[ORIGINAL_SHADE]==itsMdiColors[ORIGINAL_SHADE])
+        if(opts.shadeMenubarOnlyWhenActive && SHADE_WINDOW_BORDER==opts.shadeMenubars &&
+           itsActiveMdiColors && itsMdiColors && itsActiveMdiColors[ORIGINAL_SHADE]==itsMdiColors[ORIGINAL_SHADE])
             opts.shadeMenubarOnlyWhenActive=false;
 
         if(!itsActiveMdiColors) {
@@ -8427,7 +8599,7 @@
                 : use[2];
 }
 
-const TQColor & QtCurveStyle::menuStripeCol() const
+const TQColor & QtCurveStyle::menuStripeCol(const TQColorGroup &cg) const
 {
     switch(opts.menuStripe)
     {
@@ -8439,17 +8611,12 @@
         case SHADE_BLEND_SELECTED:
             // Hack! Use opts.customMenuStripeColor to store this setting!
             if(IS_BLACK(opts.customMenuStripeColor))
-                opts.customMenuStripeColor=midColor(itsHighlightCols[ORIGINAL_SHADE],
-                                opts.lighterPopupMenuBgnd<0
-                                    ? itsLighterPopupMenuBgndCol
-                                    : itsBackgroundCols[ORIGINAL_SHADE]);
+                opts.customMenuStripeColor=midColor(itsHighlightCols[ORIGINAL_SHADE], popupMenuCol(cg));
             return opts.customMenuStripeColor;
         case SHADE_SELECTED:
             return itsHighlightCols[MENU_STRIPE_SHADE];
         case SHADE_DARKEN:
-            return USE_LIGHTER_POPUP_MENU
-                ? itsLighterPopupMenuBgndCol
-                : itsBackgroundCols[MENU_STRIPE_SHADE];
+            return popupMenuCol(cg);
     }
 }
 
diff -U 3 -H -d -r -N -x '*.txt' -x '*.config' -x '*.xml' -x '*.dll' -x '*.pdb' -x '*.cache' -x '*.exe' -x '*.resources' -- tde-style-qtcurve-1.6.2/style/qtcurve.h tde-style-qtcurve-1.7.1/style/qtcurve.h
--- tde-style-qtcurve-1.6.2/style/qtcurve.h	2020-02-15 11:13:07.000000000 +0100
+++ tde-style-qtcurve-1.7.1/style/qtcurve.h	2020-02-15 14:08:11.672375977 +0100
@@ -217,6 +217,8 @@
 
     void           shadeColors(const TQColor &base, TQColor *vals) const;
     const TQColor * buttonColors(const TQColorGroup &cg) const;
+    const TQColor * popupMenuCols(const TQColorGroup &cg) const;
+    const TQColor & popupMenuCol(const TQColorGroup &cg, int shade=ORIGINAL_SHADE) const;
     const TQColor * checkRadioColors(const TQColorGroup &cg, SFlags flags) const;
     const TQColor * sliderColors(/*const TQColorGroup &cg, */SFlags flags) const;
     const TQColor * backgroundColors(const TQColor &c) const;
@@ -225,6 +227,7 @@
     const TQColor * borderColors(SFlags flags, const TQColor *use) const;
     const TQColor * getSidebarButtons() const;
     void           setMenuColors(const TQColorGroup &cg);
+    void           setMenuTextColors(TQWidget *widget, bool isMenuBar) const;
     const TQColor * menuColors(const TQColorGroup &cg, bool active) const;
     void           setDecorationColors(bool init=false);
     const TQColor * getMdiColors(const TQColorGroup &cg, bool active) const;
@@ -235,7 +238,7 @@
     const TQColor & getFill(SFlags flags, const TQColor *use, bool cr=false, bool darker=false) const;
     const TQColor & getListViewFill(SFlags flags, const TQColor *use) const;
     const TQColor & getTabFill(bool current,  bool highlight, const TQColor *use) const;
-    const TQColor & menuStripeCol() const;
+    const TQColor & menuStripeCol(const TQColorGroup &cg) const;
     const TQColor & checkRadioCol(SFlags flags, const TQColorGroup &cg) const;
     TQColor         shade(const TQColor &a, float k) const;
     void           shade(const color &ca, color *cb, double k) const;
