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.7.1/ChangeLog tde-style-qtcurve-1.8.5/ChangeLog
--- tde-style-qtcurve-1.7.1/ChangeLog	2020-02-15 14:11:39.028378674 +0100
+++ tde-style-qtcurve-1.8.5/ChangeLog	2020-04-29 12:14:29.672496670 +0200
@@ -1,3 +1,38 @@
+1.8.5
+-----
+1. Allow scrollbar sliders to be as thin as 5 pixels. At this setting, sliders
+   will be squared.
+
+1.8.4
+-----
+1. Fix crash upon exit - due to double free.
+
+1.8.3
+-----
+1. If a gradient uses alpha, then blen gradient colour with background
+   colour - as Qt3 does not support painting with an alpha channel.
+
+1.8.2
+-----
+1. When hiding shortcuts, only show these if widget is enabled.
+2. Slightly clean-up code.
+
+1.8.1
+-----
+1. Safer handling of hidden shortcut underscore in popup menus. Only keep
+   track of menu widget, not its ancestors.
+2. If hiding keyboard shortcut underlines: Keep track of open popup menus,
+   and only show keyboard short cut for the current one.
+
+1.8.0
+-----
+1. Add option to not display keyboard shortcurt underline until 'Alt' is
+   pressed.
+2. Add options to specify appearance of toolbar buttons.
+3. Allow to use popup menu shade factor when colouring as per menubar.
+4. If highlighting scrollviews, and allow mouse-over for entries, also allow
+   mouse-over for scrollviews.
+
 1.7.1
 -----
 1. Remove box around arrow in listview lines - to match Gtk better.
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.7.1/common/common.h tde-style-qtcurve-1.8.5/common/common.h
--- tde-style-qtcurve-1.7.1/common/common.h	2020-02-15 16:32:49.504488848 +0100
+++ tde-style-qtcurve-1.8.5/common/common.h	2020-04-26 19:12:01.837143607 +0200
@@ -1102,7 +1102,9 @@
                      crSize,
                      gbFactor,
                      gbLabel,
-                     thin;
+                     thin,
+                     tbarBtnAppearance,
+                     tbarBtnEffect;
     ERound           round;
     bool             embolden,
                      highlightTab,
@@ -1124,6 +1126,7 @@
                      gtkScrollViews,
                      stdSidebarButtons,
                      toolbarTabs,
+                     hideShortcutUnderline,
 #ifdef __cplusplus
                      gtkComboMenus,
 /*
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.7.1/style/qtcurve.cpp tde-style-qtcurve-1.8.5/style/qtcurve.cpp
--- tde-style-qtcurve-1.7.1/style/qtcurve.cpp	2020-02-15 16:29:20.168486125 +0100
+++ tde-style-qtcurve-1.8.5/style/qtcurve.cpp	2020-04-27 14:15:46.162491557 +0200
@@ -110,6 +110,7 @@
 #include <iostream>
 #define COMMON_FUNCTIONS
 #include "qtcurve.h"
+#include "shortcuthandler.h"
 #define CONFIG_READ
 #include "config_file.c"
 #include "pixmaps.h"
@@ -511,6 +512,20 @@
     return false;
 }
 
+static bool isOnToolbar(const TQWidget *widget, TQPainter *p)
+{
+    const TQWidget *wid=widget ? widget->parentWidget() : (p && p->device() ? dynamic_cast<TQWidget *>(p->device()) : 0L);
+
+    while(wid)
+    {
+        if(::tqqt_cast<const TQToolBar *>(wid))
+            return true;
+        wid=wid->parentWidget();
+    }
+
+    return false;
+}
+
 static void setRgb(TQColor *col, const TQStringList &rgb)
 {
     if(3==rgb.size())
@@ -715,11 +730,11 @@
     CACHE_COL_SEL_TAB
 };
 
-static TQString createKey(int size, TQRgb color, bool horiz, int app, ECacheFlags flags)
+static TQString createKey(int size, TQRgb color, TQRgb bgnd, bool horiz, int app, ECacheFlags flags)
 {
     TQString key;
 
-    TQTextOStream(&key) << size << '-' << color << '-' << horiz << '-' << app << '-' << flags;
+    TQTextOStream(&key) << size << '-' << color << '-' << bgnd << '-' << horiz << '-' << app << '-' << flags;
 
     return key;
 }
@@ -841,6 +856,7 @@
 QtCurveStyle::QtCurveStyle()
 #endif
             : BASE_STYLE(AllowMenuTransparency, WindowsStyleScrollBar),
+              itsPopupMenuCols(0L),
               itsSliderCols(0L),
               itsDefBtnCols(0L),
               itsMouseOverCols(0L),
@@ -866,7 +882,8 @@
               itsActive(true),
               itsIsSpecialHover(false),
               itsDragWidget(0L),
-              itsDragWidgetHadMouseTracking(false)
+              itsDragWidgetHadMouseTracking(false),
+              itsShortcutHandler(new ShortcutHandler(this))
 {
 #ifdef TQTC_STYLE_SUPPORT
     TQString rcFile;
@@ -1108,10 +1125,6 @@
 
     setMenuColors(TQApplication::palette().active());
 
-    if(USE_LIGHTER_POPUP_MENU)
-        itsLighterPopupMenuBgndCol=shade(itsBackgroundCols[ORIGINAL_SHADE],
-                                         TO_FACTOR(opts.lighterPopupMenuBgnd));
-
     if ((SHADE_CUSTOM==opts.shadeMenubars || SHADE_BLEND_SELECTED==opts.shadeMenubars || SHADE_SELECTED==opts.shadeMenubars) &&
         "soffice.bin"==TQString(tqApp->argv()[0]) && TOO_DARK(SHADE_CUSTOM==opts.shadeMenubars
                                                        ? opts.customMenubarsColor
@@ -1143,9 +1156,10 @@
 
 QtCurveStyle::~QtCurveStyle()
 {
-    if(itsSidebarButtonsCols!=itsSliderCols &&
-       itsSidebarButtonsCols!=itsDefBtnCols)
+    if(itsSidebarButtonsCols!=itsSliderCols && itsSidebarButtonsCols!=itsDefBtnCols)
         delete [] itsSidebarButtonsCols;
+    if(itsPopupMenuCols && itsPopupMenuCols!=itsMenubarCols && itsPopupMenuCols!=itsBackgroundCols && itsPopupMenuCols!=itsActiveMdiColors)
+        delete [] itsPopupMenuCols;
     if(itsActiveMdiColors && itsActiveMdiColors!=itsHighlightCols && itsActiveMdiColors!=itsBackgroundCols)
         delete [] itsActiveMdiColors;
     if(itsMdiColors && itsMdiColors!=itsBackgroundCols)
@@ -1184,6 +1198,12 @@
     return d;
 }
 
+inline void addEventFilter(TQObject *object, TQObject *filter)
+{
+    object->removeEventFilter(filter);
+    object->installEventFilter(filter);
+}
+
 void QtCurveStyle::applicationPolish(const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void *ptr)
 {
     if (ceData.widgetObjectTypes.contains(TQAPPLICATION_OBJECT_NAME_STRING)) {
@@ -1276,6 +1296,19 @@
 	if(opts.fixParentlessDialogs && (opts.noDlgFixApps.contains(appName) || opts.noDlgFixApps.contains("kde")))
 		opts.fixParentlessDialogs=false;
 	#endif
+//	BASE_STYLE::polish(app);
+	if(opts.hideShortcutUnderline)
+		addEventFilter(app, itsShortcutHandler);
+    }
+}
+
+void QtCurveStyle::applicationUnPolish(const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void *ptr)
+{
+    if (ceData.widgetObjectTypes.contains(TQAPPLICATION_OBJECT_NAME_STRING)) {
+	TQApplication *app = reinterpret_cast<TQApplication*>(ptr);
+	if(opts.hideShortcutUnderline)
+		app->removeEventFilter(itsShortcutHandler);
+//	BASE_STYLE::unPolish(app);
     }
 }
 
@@ -1408,10 +1441,6 @@
         shadeColors(midColor(itsHighlightCols[ORIGINAL_SHADE],
                    itsButtonCols[ORIGINAL_SHADE]), itsSidebarButtonsCols);
 
-    if(USE_LIGHTER_POPUP_MENU && newGray)
-        itsLighterPopupMenuBgndCol=shade(itsBackgroundCols[ORIGINAL_SHADE],
-                                         TO_FACTOR(opts.lighterPopupMenuBgnd));
-
     if(newCheckRadioSelCols) {
         if(SHADE_BLEND_SELECTED==opts.crColor) {
             shadeColors(midColor(itsHighlightCols[ORIGINAL_SHADE], itsButtonCols[ORIGINAL_SHADE]), itsCheckRadioSelCols);
@@ -2130,7 +2159,8 @@
 		{
 			TQWidget  *widget=(TQWidget*)object;
 			TQPainter painter(widget);
-			TQColor   col(popupMenuCol(widget->palette().active()));
+			const TQColor *pc(popupMenuCols(widget->palette().active()));
+			TQColor   col(pc[ORIGINAL_SHADE]);
 
 			if(APPEARANCE_STRIPED==opts.menuBgndAppearance)
 			{
@@ -2143,7 +2173,7 @@
 			}
 			else
 			{
-				drawBevelGradientReal(col, &painter, ceData.rect, GT_HORIZ==opts.menuBgndGrad, false,
+				drawBevelGradientReal(col, col, &painter, ceData.rect, GT_HORIZ==opts.menuBgndGrad, false,
 						opts.menuBgndAppearance, WIDGET_OTHER);
 			}
 			return false;
@@ -2478,12 +2508,13 @@
 					itsHoverTab=0L;
 					itsHoverWidget->repaint(false);
 				}
-				else if(!itsHoverWidget->hasMouseTracking() ||
-					(itsFormMode=isFormWidget(itsHoverWidget)))
+				else if(!itsHoverWidget->hasMouseTracking() || (itsFormMode=isFormWidget(itsHoverWidget)))
 				{
 					itsHoverWidget->repaint(false);
 					itsFormMode=false;
 				}
+				else if(opts.highlightScrollViews && ::tqqt_cast<TQScrollView *>(itsHoverWidget))
+					itsHoverWidget->repaint(false);
 			}
 			else
 			itsHoverWidget=0L;
@@ -2519,38 +2550,38 @@
     return BASE_STYLE::objectEventHandler(ceData, elementFlags, source, event);
 }
 
-void QtCurveStyle::drawLightBevel(const TQColor &bgnd, TQPainter *p, const TQRect &rOrig,
-                                  const TQColorGroup &cg, SFlags flags,
-                                  int round, const TQColor &fill, const TQColor *custom,
-                                  bool doBorder, bool doCorners, EWidget w) const
+void QtCurveStyle::drawLightBevel(const TQColor &bgnd, TQPainter *p, const TQRect &rOrig, const TQColorGroup &cg, SFlags flags, int round,
+                                  const TQColor &fill, const TQColor *custom, bool doBorder, bool doCorners, EWidget w, const TQWidget *widget) const
 {
-    EAppearance  app(widgetApp(w, &opts));
+    EAppearance   app(widgetApp(APPEARANCE_NONE!=opts.tbarBtnAppearance &&
+                               (WIDGET_TOOLBAR_BUTTON==w || (WIDGET_BUTTON(w) && isOnToolbar(widget, p)))
+                                ? WIDGET_TOOLBAR_BUTTON : w, &opts));
     TQRect        r(rOrig),
-                 br(r);
-    bool         bevelledButton(WIDGET_BUTTON(w) && APPEARANCE_BEVELLED==app),
-                 sunken(flags &(Style_Down|Style_On|Style_Sunken)),
-                 flatWidget(WIDGET_PROGRESSBAR==w && !opts.borderProgress),
-                 lightBorder(!flatWidget && DRAW_LIGHT_BORDER(sunken , w, app)),
-                 draw3dfull(!flatWidget && !lightBorder && DRAW_3D_FULL_BORDER(sunken, app)),
-                 draw3d(!flatWidget && (draw3dfull || (!lightBorder && DRAW_3D_BORDER(sunken, app)))),
-                 doColouredMouseOver(!sunken && doBorder &&
+                  br(r);
+    bool          bevelledButton(WIDGET_BUTTON(w) && APPEARANCE_BEVELLED==app),
+                  sunken(flags &(Style_Down|Style_On|Style_Sunken)),
+                  flatWidget(WIDGET_PROGRESSBAR==w && !opts.borderProgress),
+                  lightBorder(!flatWidget && DRAW_LIGHT_BORDER(sunken , w, app)),
+                  draw3dfull(!flatWidget && !lightBorder && DRAW_3D_FULL_BORDER(sunken, app)),
+                  draw3d(!flatWidget && (draw3dfull || (!lightBorder && DRAW_3D_BORDER(sunken, app)))),
+                  doColouredMouseOver(!sunken && doBorder &&
                                     opts.coloredMouseOver && flags&Style_MouseOver &&
                                     WIDGET_SPIN!=w && WIDGET_COMBO_BUTTON!=w && WIDGET_SB_BUTTON!=w &&
                                     (WIDGET_SB_SLIDER!=w || !opts.colorSliderMouseOver) &&
                                     !(flags&DW_CLOSE_BUTTON) &&
                                     (opts.coloredTbarMo || !(flags&STD_TOOLBUTTON)) &&
                                     (flags&CHECK_BUTTON || flags&TOGGLE_BUTTON || !sunken)),
-                 plastikMouseOver(doColouredMouseOver && MO_PLASTIK==opts.coloredMouseOver),
-                 colouredMouseOver(doColouredMouseOver &&
+                  plastikMouseOver(doColouredMouseOver && MO_PLASTIK==opts.coloredMouseOver),
+                  colouredMouseOver(doColouredMouseOver &&
                                        (MO_COLORED==opts.coloredMouseOver || MO_COLORED_THICK==opts.coloredMouseOver ||
                                         (MO_GLOW==opts.coloredMouseOver && itsFormMode))),
-                 doEtch(!itsFormMode && doBorder && ETCH_WIDGET(w) && !(flags&CHECK_BUTTON) &&
+                  doEtch(!itsFormMode && doBorder && ETCH_WIDGET(w) && !(flags&CHECK_BUTTON) &&
                         DO_EFFECT),
-                 glowFocus(doEtch && USE_GLOW_FOCUS(flags&Style_MouseOver) && flags&Style_HasFocus && flags&Style_Enabled),
-                 sunkenToggleMo(sunken && !(flags&Style_Down) && flags&(Style_MouseOver|TOGGLE_BUTTON)),
-                 horiz(flags&Style_Horizontal);
+                  glowFocus(doEtch && USE_GLOW_FOCUS(flags&Style_MouseOver) && flags&Style_HasFocus && flags&Style_Enabled),
+                  sunkenToggleMo(sunken && !(flags&Style_Down) && flags&(Style_MouseOver|TOGGLE_BUTTON)),
+                  horiz(flags&Style_Horizontal);
     const TQColor *cols(custom ? custom : itsBackgroundCols),
-                 *border(colouredMouseOver ? borderColors(flags, cols) : cols);
+                  *border(colouredMouseOver ? borderColors(flags, cols) : cols);
 
     p->save();
 
@@ -2570,7 +2601,7 @@
             p->setClipRegion(p->clipRegion().eor(TQRegion(br)));
         }
         br.addCoords(1, 1,-1,-1);
-        drawBevelGradient(fill, p, br, horiz, sunken, app, w);
+        drawBevelGradient(fill, bgnd, p, br, horiz, sunken, app, w);
         br.addCoords(-1, -1, 1, 1);
         if(WIDGET_PROGRESSBAR==w && opts.stripedProgress)
             p->restore();
@@ -2642,16 +2673,16 @@
 
                 if(horiz)
                 {
-                    drawBevelGradient(itsMouseOverCols[col], p, TQRect(r.x()+so, r.y(), len, r.height()),
+                    drawBevelGradient(itsMouseOverCols[col], bgnd, p, TQRect(r.x()+so, r.y(), len, r.height()),
                                       horiz, sunken, app, w);
-                    drawBevelGradient(itsMouseOverCols[col], p, TQRect(r.x()+r.width()-eo, r.y(), len, r.height()),
+                    drawBevelGradient(itsMouseOverCols[col], bgnd, p, TQRect(r.x()+r.width()-eo, r.y(), len, r.height()),
                                       horiz, sunken, app, w);
                 }
                 else
                 {
-                    drawBevelGradient(itsMouseOverCols[col], p, TQRect(r.x(), r.y()+so, r.width(), len),
+                    drawBevelGradient(itsMouseOverCols[col], bgnd, p, TQRect(r.x(), r.y()+so, r.width(), len),
                                       horiz, sunken, app, w);
-                    drawBevelGradient(itsMouseOverCols[col], p, TQRect(r.x(), r.y()+r.height()-eo, r.width(), len),
+                    drawBevelGradient(itsMouseOverCols[col], bgnd, p, TQRect(r.x(), r.y()+r.height()-eo, r.width(), len),
                                       horiz, sunken, app, w);
                 }
             }
@@ -2736,7 +2767,7 @@
             drawGlow(p, rOrig, cg, WIDGET_DEF_BUTTON==w && flags&Style_MouseOver ? WIDGET_STD_BUTTON : w,
                      glowFocus ? itsFocusCols : 0);
         else
-            drawEtch(p, rOrig, cg, EFFECT_SHADOW==opts.buttonEffect && WIDGET_BUTTON(w) && !sunken, ROUNDED_NONE==round);
+            drawEtch(p, rOrig, cg, EFFECT_SHADOW==opts.buttonEffect && WIDGET_BUTTON(w) && !sunken, ROUNDED_NONE==round, w);
     }
 
     p->restore();
@@ -2777,12 +2808,15 @@
     }
 }
 
-void QtCurveStyle::drawEtch(TQPainter *p, const TQRect &r, const TQColorGroup &cg, bool raised, bool square) const
+void QtCurveStyle::drawEtch(TQPainter *p, const TQRect &r, const TQColorGroup &cg, bool raised, bool square, EWidget w) const
 {
     square=square || ROUND_NONE==opts.round;
 
     int mod(square ? 0 : 2);
 
+    if(WIDGET_TOOLBAR_BUTTON==w && EFFECT_ETCH==opts.tbarBtnEffect)
+        raised=false;
+
     {
         TQColor col(raised ? shade(cg.background(), ETCHED_DARK) : itsBackgroundCols[1]);
 
@@ -3311,7 +3345,7 @@
 
                 bool sunken(flags &(Style_Down | Style_On | Style_Sunken));
 
-                drawBevelGradient(getFill(flags, use), p, r, flags&Style_Horizontal,
+                drawBevelGradient(getFill(flags, use), cg.background(), p, r, flags&Style_Horizontal,
                                   sunken, opts.lvAppearance, WIDGET_LISTVIEW_HEADER);
 
                 if(APPEARANCE_RAISED==opts.lvAppearance)
@@ -3589,7 +3623,7 @@
             if(IS_FLAT(opts.appearance))
                 p->fillRect(TQRect(rect.x()+1, rect.y()+1, rect.width()-2, rect.height()-2), bgnd);
             else
-                drawBevelGradient(bgnd, p, TQRect(rect.x()+1, rect.y()+1, rect.width()-2, rect.height()-2), true,
+                drawBevelGradient(bgnd, bgnd, p, TQRect(rect.x()+1, rect.y()+1, rect.width()-2, rect.height()-2), true,
                                   drawSunken, app, wid);
 
             if(MO_NONE!=opts.coloredMouseOver && !glow && sflags&Style_MouseOver && sflags&Style_Enabled)
@@ -3722,7 +3756,7 @@
                 p->save();
 
                 if(opts.crHighlight && sflags&Style_MouseOver)
-                    drawBevelGradient(shade(cg.background(), TO_FACTOR(opts.crHighlight)), p, r, true,
+                    drawBevelGradient(shade(cg.background(), TO_FACTOR(opts.crHighlight)), cg.background(), p, r, true,
                                       false, opts.selectionAppearance, WIDGET_SELECTION);
                 else
                     p->fillRect(r, cg.background());
@@ -3739,7 +3773,7 @@
                 if(IS_FLAT(opts.appearance))
                     p->fillRect(TQRect(x+1, y+1, rect.width()-2, rect.height()-2), bgnd);
                 else
-                    drawBevelGradient(bgnd, p, TQRect(x+1, y+1, rect.width()-2, rect.height()-2), true,
+                    drawBevelGradient(bgnd, bgnd, p, TQRect(x+1, y+1, rect.width()-2, rect.height()-2), true,
                                       drawSunken, app, wid);
 
                 if(coloredMo)
@@ -3865,7 +3899,7 @@
                 color=shade(color, TO_FACTOR(opts.tabBgnd));
                 
             if(flags&Style_MouseOver && opts.splitterHighlight)
-                drawBevelGradient(shade(cg.background(), TO_FACTOR(opts.splitterHighlight)), p, r, !(flags&Style_Horizontal),
+                drawBevelGradient(shade(cg.background(), TO_FACTOR(opts.splitterHighlight)), cg.background(), p, r, !(flags&Style_Horizontal),
                                   false, opts.selectionAppearance, WIDGET_SELECTION);
             else
                 p->fillRect(r, color);
@@ -3930,8 +3964,6 @@
                                      (sv ||
                                       (widget && widget->parentWidget() && ::tqqt_cast<const TQFrame *>(widget) &&
                                        widget->parentWidget()->inherits("KateView"))));
-                const TQColor *use(opts.highlightScrollViews && /*!square &&*/ flags&Style_HasFocus ? itsHighlightCols :
-                                    backgroundColors(cg));
 
 //                 if(square)
 //                 {
@@ -3950,19 +3982,29 @@
                         flags&=~Style_HasFocus;
                     if(sv && opts.etchEntry && ((TQFrame *)widget)->lineWidth()>2)
                     {
-                        drawEntryField(p, r, cg, flags, flags&Style_Enabled
-                                                            ? /*flags&Style_MouseOver
+                        drawEntryField(p, r, cg, flags, flags&Style_Enabled && opts.highlightScrollViews
+                                                            ? flags&Style_MouseOver
                                                                 ? ENTRY_MOUSE_OVER
-                                                                :*/ flags&Style_HasFocus
+                                                                : flags&Style_HasFocus
                                                                     ? ENTRY_FOCUS
                                                                     : ENTRY_NONE
                                                             : ENTRY_NONE, square ? ROUNDED_NONE : ROUNDED_ALL, WIDGET_SCROLLVIEW);
                     }
                     else
+                    {
+                        const TQColor *use(sv && opts.highlightScrollViews
+                                            ? widget==itsHoverWidget
+                                                ? itsMouseOverCols
+                                                : flags&Style_HasFocus
+                                                    ? itsFocusCols 
+                                                    : backgroundColors(cg)
+                                            : backgroundColors(cg));
+
                         drawBorder(cg.background(), p, r, cg,
                                    (SFlags)(flags|Style_Horizontal|Style_Enabled),
                                    square ? ROUNDED_NONE : ROUNDED_ALL, use, sv ? WIDGET_SCROLLVIEW : WIDGET_OTHER, APP_KICKER!=itsThemedApp,
                                    itsIsTransKicker ? BORDER_FLAT : (flags&Style_Sunken ? BORDER_SUNKEN : BORDER_RAISED) );
+                    }
                     itsFormMode=false;
                 }
             }
@@ -3996,7 +4038,7 @@
                 else
                 {
                     if(GB_3D==border)
-                        p->setPen(popupMenuCol(cg));
+                        p->setPen(use[ORIGINAL_SHADE]);
                     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]);
@@ -4006,7 +4048,7 @@
             }
             else if(IS_FLAT_BGND(opts.menuBgndAppearance))
             {
-                p->setPen(/*USE_LIGHTER_POPUP_MENU ? */popupMenuCol(cg)/* : cg.background()*/);
+                p->setPen(/*USE_LIGHTER_POPUP_MENU ? */use[ORIGINAL_SHADE]/* : cg.background()*/);
                 p->drawRect(TQRect(r.x()+1, r.y()+1, r.width()-2, r.height()-2));
             }
             break;
@@ -4140,7 +4182,7 @@
                 p->setClipRegion(TQRegion(s2)+TQRegion(addpage));
 
             if(opts.flatSbarButtons && SCROLLBAR_NONE!=opts.scrollbarType && ROUNDED && !IS_FLAT(opts.sbarBgndAppearance))
-                drawBevelGradient(itsBackgroundCols[ORIGINAL_SHADE], p, r, flags&Style_Horizontal, false,
+                drawBevelGradient(itsBackgroundCols[ORIGINAL_SHADE], itsBackgroundCols[ORIGINAL_SHADE], p, r, flags&Style_Horizontal, false,
                                   opts.sbarBgndAppearance, WIDGET_SB_BGND);
             else if(opts.thinSbarGroove && (SCROLLBAR_NONE==opts.scrollbarType || opts.flatSbarButtons) && IS_FLAT(opts.sbarBgndAppearance))
             {
@@ -4430,8 +4472,8 @@
             TQRect r2(r);
             r2.addCoords(1, 1, -1, -1);
 //             p->fillRect(r2, flags&Style_Enabled ? cg.base() : cg.background());
-            drawEntryField(p, r, cg, flags, !isReadOnly && isEnabled
-                                                ? flags&Style_MouseOver && !scrollView
+            drawEntryField(p, r, cg, flags, !isReadOnly && isEnabled && (!scrollView || opts.highlightScrollViews)
+                                                ? flags&Style_MouseOver
                                                     ? ENTRY_MOUSE_OVER
                                                     : flags&Style_HasFocus
                                                         ? ENTRY_FOCUS
@@ -4557,7 +4599,7 @@
             r.rect(&x, &y, &w, &h);
 
             if(!IS_FLAT(opts.dwtAppearance))
-                drawBevelGradient(cg.background(), p, r, horizontal, false, opts.dwtAppearance, WIDGET_DOCK_WIDGET_TITLE);
+                drawBevelGradient(cg.background(), cg.background(), p, r, horizontal, false, opts.dwtAppearance, WIDGET_DOCK_WIDGET_TITLE);
             else
                 p->fillRect(r, cg.background()); // .dark(DW_BGND));
 //             p->setPen(itsBackgroundCols[STD_BORDER]);
@@ -4784,7 +4826,7 @@
             if(invertedSel)
                 p->fillRect(glowTr, col);
             else
-                drawBevelGradient(col, p, glowTr, true,
+                drawBevelGradient(col, cg.background(), p, glowTr, true,
                                   active, active ? SEL_TAB_APP : NORM_TAB_APP, top ? WIDGET_TAB_TOP : WIDGET_TAB_BOT);
 
             drawBorder(cg.background(), p, glowTr, cg, flags|Style_Horizontal|Style_Enabled,
@@ -4989,7 +5031,7 @@
                 }
             }
 
-            drawItem(p, tr, AlignCenter | ShowPrefix, cg, flags & Style_Enabled, 0, t->text());
+            drawItem(p, tr, AlignCenter | ShowPrefix | (styleHint(SH_UnderlineAccelerator, ceData, elementFlags, data, 0, widget) ? 0 : NoAccel), cg, flags & Style_Enabled, 0, t->text());
 
             if ((flags & Style_HasFocus) && !t->text().isEmpty())
             {
@@ -5095,7 +5137,8 @@
 
             // Make the label indicate if the button is a default button or not
             int          i,
-                         j(opts.embolden && (elementFlags & CEF_IsDefault) ? 2 : 1);
+                         j(opts.embolden && button->isDefault() ? 2 : 1),
+                         textFlags(AlignCenter|ShowPrefix|(styleHint(SH_UnderlineAccelerator, ceData, elementFlags, data, 0, widget) ? 0 : NoAccel));
             bool         sidebar(!opts.stdSidebarButtons &&
                                  (((elementFlags & CEF_IsFlat) && button->inherits("KMultiTabBarTab")) ||
                                   ((elementFlags & CEF_HasParentWidget) && button->inherits("Ideal::Button") &&
@@ -5105,7 +5148,7 @@
                                     : ceData.colorGroup.buttonText());
 
             for(i=0; i<j; i++)
-                drawItem(p, TQRect(x+i, y, w, h), AlignCenter|ShowPrefix, ceData.colorGroup,
+                drawItem(p, TQRect(x+i, y, w, h), textFlags, ceData.colorGroup,
                          (elementFlags & CEF_IsEnabled),
                          button->pixmap(), button->text(), -1, &textCol);
 
@@ -5127,6 +5170,7 @@
                              maxpmw(data.maxIconWidth()),
                              x, y, w, h;
             bool             reverse(TQApplication::reverseLayout());
+            const TQColor    *use(popupMenuCols(cg));
 
             maxpmw=TQMAX(maxpmw, constMenuPixmapWidth);
             r.rect(&x, &y, &w, &h);
@@ -5136,17 +5180,17 @@
             else
             {
                 if(IS_FLAT_BGND(opts.menuBgndAppearance))
-                    p->fillRect(r, popupMenuCol(cg));
+                    p->fillRect(r, use[ORIGINAL_SHADE]);
 
                 if(opts.menuStripe)
-                    drawBevelGradient(menuStripeCol(cg), p,
+                    drawBevelGradient(menuStripeCol(cg), use[ORIGINAL_SHADE], 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, popupMenuCol(cg),
+                drawMenuItem(p, r, flags, cg, false, ROUNDED_ALL, use[ORIGINAL_SHADE],
                              opts.useHighlightForMenu ? itsHighlightCols : itsBackgroundCols);
 
             if(!mi)
@@ -5224,15 +5268,18 @@
 
             if(!text.isNull())
             {
-                int t(text.find('\t'));
+                int t(text.find('\t')),
+                    textFlags=AlignVCenter|ShowPrefix|DontClip|SingleLine;
+
+                if (!styleHint(SH_UnderlineAccelerator, ceData, elementFlags, data, 0, widget))
+                    textFlags |= NoAccel;
 
                 // draw accelerator/tab-text
                 if(t>=0)
-                    p->drawText(tr, AlignVCenter|ShowPrefix|DontClip|SingleLine|(reverse ? AlignLeft : AlignRight),
-                                text.mid(t+1));
+                    p->drawText(tr, textFlags|(reverse ? AlignLeft : AlignRight), text.mid(t+1));
 
-                p->drawText(ir, AlignVCenter|ShowPrefix|DontClip|SingleLine|(reverse ? AlignRight : AlignLeft), text, t);
-            } 
+                p->drawText(ir, textFlags|(reverse ? AlignRight : AlignLeft), text, t);
+            }
             else if(mi->pixmap())
             {
                 TQPixmap *pixmap(mi->pixmap());
@@ -5279,8 +5326,7 @@
             TQMenuItem *mi(data.menuItem());
 
             if(mi->text().isEmpty()) // Draw pixmap...
-                drawItem(p, r, AlignCenter|ShowPrefix|DontClip|SingleLine, cg, flags&Style_Enabled,
-                     mi->pixmap(), TQString());
+                drawItem(p, r, AlignCenter|ShowPrefix|DontClip|SingleLine, cg, flags&Style_Enabled, mi->pixmap(), TQString());
             else
             {
                 const TQColor *col=((opts.colorMenubarMouseOver && active) || (!opts.colorMenubarMouseOver && down))
@@ -5292,7 +5338,7 @@
                                     : &cg.foreground();
 
                 p->setPen(*col);
-                p->drawText(r, AlignCenter|ShowPrefix|DontClip|SingleLine, mi->text());
+                p->drawText(r, AlignCenter|ShowPrefix|DontClip|SingleLine|(styleHint(SH_UnderlineAccelerator, ceData, elementFlags, data, 0, widget) ? 0 : NoAccel), mi->text());
             }
 
             break;
@@ -5331,8 +5377,7 @@
                     col=itsBackgroundCols[2];
             }
 
-            drawBevelGradient(col, p, rx, true,
-                                false, opts.progressGrooveAppearance, WIDGET_PBAR_TROUGH);
+            drawBevelGradient(col, cg.background(), p, rx, true, false, opts.progressGrooveAppearance, WIDGET_PBAR_TROUGH);
 
             const TQColor *use(backgroundColors(cg));
 
@@ -5531,13 +5576,13 @@
 
                     r-=visualRect(subRect(SR_CheckBoxIndicator, ceData, elementFlags, widget), ceData, elementFlags);
                     p->setClipRegion(r);
-                    drawBevelGradient(shade(cg.background(), TO_FACTOR(opts.crHighlight)), p, checkbox->rect(), true,
+                    drawBevelGradient(shade(cg.background(), TO_FACTOR(opts.crHighlight)), cg.background(), p, checkbox->rect(), true,
                                       false, opts.selectionAppearance, WIDGET_SELECTION);
                     p->setClipping(false);
                 }
                 int alignment(TQApplication::reverseLayout() ? AlignRight : AlignLeft);
 
-                drawItem(p, r, alignment | AlignVCenter | ShowPrefix, cg,
+                drawItem(p, r, alignment|AlignVCenter|ShowPrefix|(styleHint(SH_UnderlineAccelerator, ceData, elementFlags, data, 0, widget) ? 0 : NoAccel), cg,
                          flags & Style_Enabled, checkbox->pixmap(),  checkbox->text());
 
                 if(checkbox->hasFocus() && FOCUS_GLOW!=opts.focus)
@@ -5569,15 +5614,15 @@
                                                rb.height()));
                     r-=visualRect(subRect(SR_RadioButtonIndicator, ceData, elementFlags, widget), ceData, elementFlags);
                     p->setClipRegion(r);
-                    drawBevelGradient(shade(cg.background(), TO_FACTOR(opts.crHighlight)), p, ceData.rect, true,
+                    drawBevelGradient(shade(cg.background(), TO_FACTOR(opts.crHighlight)), cg.background(), p, ceData.rect, true,
                                       false, opts.selectionAppearance, WIDGET_SELECTION);
                     p->setClipping(false);
                 }
 
                 int alignment(TQApplication::reverseLayout() ? AlignRight : AlignLeft);
 
-                drawItem(p, r, alignment | AlignVCenter | ShowPrefix, cg, flags & Style_Enabled,
-                         radiobutton->pixmap(), radiobutton->text());
+                drawItem(p, r, alignment|AlignVCenter|ShowPrefix|(styleHint(SH_UnderlineAccelerator, ceData, elementFlags, data, 0, widget) ? 0 : NoAccel),
+                         cg, flags & Style_Enabled, radiobutton->pixmap(), radiobutton->text());
 
                 if((elementFlags & CEF_HasFocus) && FOCUS_GLOW!=opts.focus)
                     drawPrimitive(PE_FocusRect, p, ceData, elementFlags, visualRect(subRect(SR_RadioButtonFocusRect, ceData, elementFlags,
@@ -5947,7 +5992,7 @@
                                 getFill(fillFlags, cols, false, (SHADE_DARKEN==opts.comboBtn ||
                                                                     (SHADE_NONE!=opts.comboBtn && !(flags&Style_Enabled))) &&
                                                                     editable),
-                                cols, true, true, editable ? WIDGET_COMBO_BUTTON : WIDGET_COMBO);
+                                cols, true, true, editable ? WIDGET_COMBO_BUTTON : WIDGET_COMBO, widget);
                 }
             }
 
@@ -6046,7 +6091,7 @@
                     drawLightBevel(p, btn, cg, btnFlags|Style_Horizontal, reverse ? ROUNDED_LEFT : ROUNDED_RIGHT,
                                    getFill(btnFlags, cols, false, SHADE_DARKEN==opts.comboBtn ||
                                                                   (SHADE_NONE!=opts.comboBtn && !(flags&Style_Enabled))),
-                                   cols, true, true, WIDGET_COMBO);
+                                   cols, true, true, WIDGET_COMBO, widget);
                     p->restore();
                 }
 
@@ -6136,14 +6181,14 @@
                     btnFlags|=Style_Horizontal;
 
                     drawLightBevel(p, btns, cg, btnFlags, reverse ?  ROUNDED_LEFT : ROUNDED_RIGHT, getFill(btnFlags, use),
-                                   use, true, true, WIDGET_SPIN);
+                                   use, true, true, WIDGET_SPIN, widget);
                     if(hw && (HOVER_SW_DOWN==itsHover || HOVER_SW_UP==itsHover) && flags&Style_Enabled && !(flags&Style_Sunken))
                     {
                         btnFlags|=Style_MouseOver;
                         p->save();
                         p->setClipRect(HOVER_SW_UP==itsHover ? up : down);
                         drawLightBevel(p, btns, cg, btnFlags, reverse ?  ROUNDED_LEFT : ROUNDED_RIGHT, getFill(btnFlags, use),
-                                       use, true, true, WIDGET_SPIN);
+                                       use, true, true, WIDGET_SPIN, widget);
                         p->restore();
                     }
                     p->setPen(use[BORDER_VAL(style&Style_Enabled)]);
@@ -6342,7 +6387,7 @@
 
                 if(opts.thinSbarGroove) {
                     if(opts.flatSbarButtons && SCROLLBAR_NONE!=opts.scrollbarType && ROUNDED) {
-                        drawBevelGradient(itsBackgroundCols[ORIGINAL_SHADE], p, slider, flags&Style_Horizontal, false,
+                        drawBevelGradient(itsBackgroundCols[ORIGINAL_SHADE], itsBackgroundCols[ORIGINAL_SHADE], p, slider, flags&Style_Horizontal, false,
                                           opts.sbarBgndAppearance, WIDGET_SB_BGND);
                     }
                     else if(opts.thinSbarGroove && (SCROLLBAR_NONE==opts.scrollbarType || opts.flatSbarButtons) &&
@@ -6496,7 +6541,7 @@
                             textRect(full ? tb->rect().x() : ir.x(), ir.y(), full ? tb->rect().width() : ir.width(), ir.height());
                 EAppearance app=isActive ? opts.titlebarAppearance : opts.inactiveTitlebarAppearance;
 
-                drawBevelGradient(cols[ORIGINAL_SHADE], p, r, true, false, app, WIDGET_MDI_WINDOW);
+                drawBevelGradient(cols[ORIGINAL_SHADE], cg.background(), p, r, true, false, app, WIDGET_MDI_WINDOW);
                 ir.addCoords(2, 0, -4, 0);
 
                 TQFontMetrics fm(TQFontMetrics(ceData.font));
@@ -7103,6 +7148,8 @@
 {
     switch(stylehint)
     {
+        case SH_UnderlineAccelerator:
+            return widget && opts.hideShortcutUnderline ? itsShortcutHandler->showShortcut(widget) : true;
         case SH_PopupMenu_SubMenuPopupDelay:
             return opts.menuDelay;
         case SH_ScrollView_FrameOnlyAroundContents:
@@ -7176,9 +7223,8 @@
             f.setBold(true);
             p->setPen(box->colorGroup().foreground());
             p->setFont(f);
-            p->drawText(TQRect(left, top, width, th), (TQApplication::reverseLayout()
-                                                        ? AlignRight
-                                                        : AlignLeft)|AlignVCenter|ShowPrefix|SingleLine,
+            p->drawText(TQRect(left, top, width, th), (TQApplication::reverseLayout() ? AlignRight : AlignLeft)|
+                                                      AlignVCenter|ShowPrefix|SingleLine,
                         text);
             return;
         }
@@ -7265,8 +7311,7 @@
     }
 }
 
-void QtCurveStyle::drawMenuItem(TQPainter *p, const TQRect &r, int flags, const TQColorGroup &cg,
-                                bool mbi, int round, const TQColor &bgnd, const TQColor *cols) const
+void QtCurveStyle::drawMenuItem(TQPainter *p, const TQRect &r, int flags, const TQColorGroup &cg, bool mbi, int round, const TQColor &bgnd, const TQColor *cols) const
 {
     int fill=opts.useHighlightForMenu && (!mbi || itsHighlightCols==cols) ? ORIGINAL_SHADE : 4,
         border=opts.borderMenuitems ? 0 : fill;
@@ -7277,22 +7322,22 @@
                
     if(!mbi && APPEARANCE_FADE==opts.menuitemAppearance)
     {
-        bool  reverse=TQApplication::reverseLayout();
-        int   roundOffet=ROUNDED ? 1 : 0;
-        TQRect main(r.x()+(reverse ? 1+MENUITEM_FADE_SIZE : roundOffet+1), r.y()+roundOffet+1,
-                   r.width()-(1+MENUITEM_FADE_SIZE), r.height()-(2+(roundOffet*2))),
-              fade(reverse ? r.x()+1 : r.width()-MENUITEM_FADE_SIZE, r.y()+1, MENUITEM_FADE_SIZE, r.height()-2);
+        bool         reverse=TQApplication::reverseLayout();
+        int          roundOffet=ROUNDED ? 1 : 0;
+        TQRect       main(r.x()+(reverse ? 1+MENUITEM_FADE_SIZE : roundOffet+1), r.y()+roundOffet+1,
+                          r.width()-(1+MENUITEM_FADE_SIZE), r.height()-(2+(roundOffet*2))),
+                     fade(reverse ? r.x()+1 : r.width()-MENUITEM_FADE_SIZE, r.y()+1, MENUITEM_FADE_SIZE, r.height()-2);
+        const TQColor *pc(popupMenuCols(cg));
 
         p->fillRect(main, cols[fill]);
         if(ROUNDED)
         {
             main.addCoords(-1, -1, 1, 1);
-            drawBorder(popupMenuCol(cg), p, main, cg, Style_Horizontal|Style_Raised, reverse ? ROUNDED_RIGHT : ROUNDED_LEFT,
-                       cols, WIDGET_MENU_ITEM, false, BORDER_FLAT, false, fill);
+            drawBorder(pc[ORIGINAL_SHADE], p, main, cg, Style_Horizontal|Style_Raised, reverse ? ROUNDED_RIGHT : ROUNDED_LEFT,
+                       pc, WIDGET_MENU_ITEM, false, BORDER_FLAT, false, fill);
         }
 
-        TQColor bgnd(popupMenuCol(cg));
-        drawGradient(reverse ? bgnd : cols[fill], reverse ? cols[fill] : bgnd, p, fade, false);
+        drawGradient(reverse ? pc[ORIGINAL_SHADE] : cols[fill], reverse ? cols[fill] : pc[ORIGINAL_SHADE], p, fade, false);
     }
     else if(mbi || opts.borderMenuitems)
     {
@@ -7312,13 +7357,13 @@
             fr.addCoords(1, 1, -1, -1);
 
             if(fr.width()>0 && fr.height()>0)
-                drawBevelGradient(cols[fill], p, fr, true, false, opts.menuitemAppearance, WIDGET_MENU_ITEM);
+                drawBevelGradient(cols[fill], cg.background(), p, fr, true, false, opts.menuitemAppearance, WIDGET_MENU_ITEM);
             drawBorder(bgnd, p, r, cg, flags, round, cols, WIDGET_OTHER, false, BORDER_FLAT, false, border);
         }
         itsFormMode=false;
     }
     else
-        drawBevelGradient(cols[fill], p, r, true, false, opts.menuitemAppearance, WIDGET_MENU_ITEM);
+        drawBevelGradient(cols[fill], cg.background(), p, r, true, false, opts.menuitemAppearance, WIDGET_MENU_ITEM);
 }
 
 void QtCurveStyle::drawProgress(TQPainter *p, const TQRect &rx, const TQColorGroup &cg, SFlags flags,
@@ -7414,7 +7459,7 @@
     }
 }
 
-void QtCurveStyle::drawBevelGradient(const TQColor &base, TQPainter *p, const TQRect &origRect, bool horiz, bool sel, EAppearance bevApp, EWidget w) const
+void QtCurveStyle::drawBevelGradient(const TQColor &base, const TQColor &bgnd, TQPainter *p, const TQRect &origRect, bool horiz, bool sel, EAppearance bevApp, EWidget w) const
 {
     if(IS_FLAT(bevApp) && opts.colorSelTab && sel)
         bevApp=APPEARANCE_GRADIENT;
@@ -7435,7 +7480,7 @@
                                     : APPEARANCE_GRADIENT);
         TQRect       r(0, 0, horiz ? PIXMAP_DIMENSION : origRect.width(),
                       horiz ? origRect.height() : PIXMAP_DIMENSION);
-        TQString     key(createKey(horiz ? r.height() : r.width(), base.rgb(), horiz, app,
+        TQString     key(createKey(horiz ? r.height() : r.width(), base.rgb(), bgnd.rgb(), horiz, app,
                                   tab && sel && opts.colorSelTab ? CACHE_COL_SEL_TAB : CACHE_STD));
         TQPixmap     *pix(itsPixmapCache.find(key));
         bool        inCache(true);
@@ -7444,9 +7489,9 @@
         {
             pix=new TQPixmap(r.width(), r.height());
 
-            TQPainter       pixPainter(pix);
+            TQPainter pixPainter(pix);
 
-            drawBevelGradientReal(base, &pixPainter, r, horiz, sel, app, w);
+            drawBevelGradientReal(base, bgnd, &pixPainter, r, horiz, sel, app, w);
             pixPainter.end();
             int cost(pix->width()*pix->height()*(pix->depth()/8));
 
@@ -7462,7 +7507,7 @@
     }
 }
 
-void QtCurveStyle::drawBevelGradientReal(const TQColor &base, TQPainter *p, const TQRect &r, bool horiz, bool sel, EAppearance app, EWidget w) const
+void QtCurveStyle::drawBevelGradientReal(const TQColor &base, const TQColor &bgnd, TQPainter *p, const TQRect &r, bool horiz, bool sel, EAppearance app, EWidget w) const
 {
 
     const Gradient *grad=getGradient(app, &opts);
@@ -7490,7 +7535,8 @@
 
             if(/*sel && */opts.colorSelTab && i>0)
                 col=tint(col, itsHighlightCols[0], (1.0-(*it).pos)*(0.2+TO_ALPHA(opts.colorSelTab)));
-
+            if((*it).alpha<0.9999)
+                col=tint(bgnd, col, (*it).alpha);
             if(i)
                 drawGradient(prev, col, p,
                              horiz
@@ -7518,7 +7564,8 @@
 
             if(sel && opts.colorSelTab && topTab && i<numStops-1)
                 col=tint(col, itsHighlightCols[0], (1.0-(*it).pos)*(0.2+TO_ALPHA(opts.colorSelTab)));
-
+            if((*it).alpha<0.9999)
+                col=tint(bgnd, col, (*it).alpha);
             if(i)
                 drawGradient(prev, col, p,
                              horiz
@@ -7531,8 +7578,7 @@
     }
 }
 
-void QtCurveStyle::drawGradient(const TQColor &top, const TQColor &bot,
-                                TQPainter *p, TQRect const &r, bool horiz) const
+void QtCurveStyle::drawGradient(const TQColor &top, const TQColor &bot, TQPainter *p, TQRect const &r, bool horiz) const
 {
     if(r.width()>0 && r.height()>0)
     {
@@ -7733,7 +7779,7 @@
         }
         else
         {
-            drawBevelGradient(fill, p, TQRect(x, y, horiz ? r.width()-1 : size, horiz ? size : r.height()-1),
+            drawBevelGradient(fill, cg.background(), p, TQRect(x, y, horiz ? r.width()-1 : size, horiz ? size : r.height()-1),
                               horiz, false, opts.sliderAppearance);
 
             if(MO_PLASTIK==opts.coloredMouseOver && flags&Style_MouseOver && !opts.colorSliderMouseOver)
@@ -7743,18 +7789,18 @@
 
                 if(horiz)
                 {
-                    drawBevelGradient(itsMouseOverCols[col], p, TQRect(x+1, y+1, len, size-2),
+                    drawBevelGradient(itsMouseOverCols[col], cg.background(), p, TQRect(x+1, y+1, len, size-2),
                                       horiz, false, opts.sliderAppearance);
-                    drawBevelGradient(itsMouseOverCols[col], p,
+                    drawBevelGradient(itsMouseOverCols[col], cg.background(), p,
                                       TQRect(x+r.width()-((SLIDER_ROUND_ROTATED==opts.sliderStyle ? 3 : 1)+len),
                                             y+1, len, size-2),
                                       horiz, false, opts.sliderAppearance);
                 }
                 else
                 {
-                    drawBevelGradient(itsMouseOverCols[col], p, TQRect(x+1, y+1, size-2, len),
+                    drawBevelGradient(itsMouseOverCols[col], cg.background(), p, TQRect(x+1, y+1, size-2, len),
                                       horiz, false, opts.sliderAppearance);
-                    drawBevelGradient(itsMouseOverCols[col], p,
+                    drawBevelGradient(itsMouseOverCols[col], cg.background(), p,
                                       TQRect(x+1, y+r.height()-((SLIDER_ROUND_ROTATED==opts.sliderStyle ? 3 : 1)+len),
                                             size-2, len),
                                       horiz, false, opts.sliderAppearance);
@@ -7901,7 +7947,7 @@
     if(menu && BLEND_TITLEBAR)
         rx.addCoords(0, -qtcGetWindowBorderSize().titleHeight, 0, 0);
 
-    drawBevelGradient(color, p, rx, horiz, false, app);
+    drawBevelGradient(color, cg.background(), p, rx, horiz, false, app);
 }
 
 void QtCurveStyle::drawHandleMarkers(TQPainter *p, const TQRect &r, SFlags flags, bool tb,
@@ -8000,15 +8046,6 @@
     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))
@@ -8086,6 +8123,21 @@
         case SHADE_WINDOW_BORDER:
             break;
     }
+
+    TQColor *base=opts.shadePopupMenu
+                    ? SHADE_WINDOW_BORDER==opts.shadeMenubars
+                        ? (TQColor *)getMdiColors(cg, true)
+                        : itsMenubarCols
+                    : itsBackgroundCols;
+
+    if(USE_LIGHTER_POPUP_MENU)
+    {
+        if(!itsPopupMenuCols)
+            itsPopupMenuCols=new TQColor [TOTAL_SHADES+1];
+        shadeColors(shade(base[ORIGINAL_SHADE], TO_FACTOR(opts.lighterPopupMenuBgnd)), itsPopupMenuCols);
+    }
+    else
+        itsPopupMenuCols=base;
 }
 
 void QtCurveStyle::setMenuTextColors(TQWidget *widget, bool isMenuBar) const
@@ -8106,7 +8158,8 @@
         }
         else if(opts.shadePopupMenu)
         {
-            pal.setBrush(TQPalette::Disabled, TQColorGroup::Foreground, midColor(itsActiveMdiTextColor, popupMenuCol(pal.active())));
+            pal.setBrush(TQPalette::Disabled, TQColorGroup::Foreground, midColor(itsActiveMdiTextColor,
+                                                                                 popupMenuCols(pal.active())[ORIGINAL_SHADE]));
             pal.setBrush(TQPalette::Disabled, TQColorGroup::Text, pal.brush(TQPalette::Disabled, TQColorGroup::Foreground));
         }
 
@@ -8132,8 +8185,9 @@
         }
         else if(!isMenuBar && opts.shadePopupMenu)
         {
+            const TQColor *pc(popupMenuCols(pal.active()));
             pal.setBrush(TQPalette::Disabled, TQColorGroup::Foreground,
-                         midColor(pal.brush(TQPalette::Active, TQColorGroup::Foreground).color(), popupMenuCol(pal.active())));
+                         midColor(pal.brush(TQPalette::Active, TQColorGroup::Foreground).color(), pc[ORIGINAL_SHADE]));
             pal.setBrush(TQPalette::Disabled, TQColorGroup::Text, pal.brush(TQPalette::Disabled, TQColorGroup::Foreground));
         }
         widget->setPalette(pal);
@@ -8601,6 +8655,7 @@
 
 const TQColor & QtCurveStyle::menuStripeCol(const TQColorGroup &cg) const
 {
+    const TQColor *pc(popupMenuCols(cg));
     switch(opts.menuStripe)
     {
         default:
@@ -8611,12 +8666,12 @@
         case SHADE_BLEND_SELECTED:
             // Hack! Use opts.customMenuStripeColor to store this setting!
             if(IS_BLACK(opts.customMenuStripeColor))
-                opts.customMenuStripeColor=midColor(itsHighlightCols[ORIGINAL_SHADE], popupMenuCol(cg));
+                opts.customMenuStripeColor=midColor(itsHighlightCols[ORIGINAL_SHADE], pc[ORIGINAL_SHADE]);
             return opts.customMenuStripeColor;
         case SHADE_SELECTED:
             return itsHighlightCols[MENU_STRIPE_SHADE];
         case SHADE_DARKEN:
-            return popupMenuCol(cg);
+            return pc[MENU_STRIPE_SHADE];
     }
 }
 
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.7.1/style/qtcurve.h tde-style-qtcurve-1.8.5/style/qtcurve.h
--- tde-style-qtcurve-1.7.1/style/qtcurve.h	2020-02-15 14:08:11.672375977 +0100
+++ tde-style-qtcurve-1.8.5/style/qtcurve.h	2020-04-27 13:48:31.014483862 +0200
@@ -78,6 +78,8 @@
 #define BASE_STYLE TDEStyle
 #endif
 
+class ShortcutHandler;
+
 class QtCurveStyle : public BASE_STYLE
 {
     Q_OBJECT
@@ -139,19 +141,20 @@
     virtual ~QtCurveStyle();
 
     void applicationPolish(const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void *);
+    void applicationUnPolish(const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void *);
     void polish(TQPalette &pal);
     TQColorGroup setColorGroup(const TQColorGroup &old, const TQColorGroup &act, bool dis=false);
     void polish(const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void *);
     void unPolish(const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void *);
     void drawLightBevel(TQPainter *p, const TQRect &r, const TQColorGroup &cg, SFlags flags,
                         int round, const TQColor &fill, const TQColor *custom=NULL,
-                        bool doBorder=true, bool doCorners=true, EWidget w=WIDGET_OTHER) const
-    { drawLightBevel(cg.background(), p, r, cg, flags, round, fill, custom, doBorder, doCorners, w); }
+                        bool doBorder=true, bool doCorners=true, EWidget w=WIDGET_OTHER, const TQWidget *widget=0L) const
+    { drawLightBevel(cg.background(), p, r, cg, flags, round, fill, custom, doBorder, doCorners, w, widget); }
     void drawLightBevel(const TQColor &bgnd, TQPainter *p, const TQRect &r, const TQColorGroup &cg,
                         SFlags flags, int round, const TQColor &fill, const TQColor *custom=NULL,
-                        bool doBorder=true, bool doCorners=true, EWidget w=WIDGET_OTHER) const;
+                        bool doBorder=true, bool doCorners=true, EWidget w=WIDGET_OTHER, const QWidget *widget=0L) const;
     void drawGlow(TQPainter *p, const TQRect &r, const TQColorGroup &cg, EWidget w, const TQColor *cols=0) const;
-    void drawEtch(TQPainter *p, const TQRect &r, const TQColorGroup &cg, bool raised=false, bool square=false) const;
+    void drawEtch(TQPainter *p, const TQRect &r, const TQColorGroup &cg, bool raised=false, bool square=false, EWidget w=WIDGET_OTHER) const;
     void drawBorder(const TQColor &bgnd, TQPainter *p, const TQRect &r, const TQColorGroup &cg,
                     SFlags flags, int round, const TQColor *custom=NULL, EWidget w=WIDGET_OTHER,
                     bool doCorners=true, EBorder borderProfile=BORDER_FLAT, bool blendBorderColors=true, int borderVal=STD_BORDER) const;
@@ -195,9 +198,9 @@
                       bool mbi, int round, const TQColor &bgnd, const TQColor *cols) const;
     void drawProgress(TQPainter *p, const TQRect &r, const TQColorGroup &cg, SFlags flags, int round,
                       const TQWidget *widget) const;
-    void drawBevelGradient(const TQColor &base, TQPainter *p, TQRect const &r,
+    void drawBevelGradient(const TQColor &base, const TQColor &bgnd, TQPainter *p, TQRect const &r,
                            bool horiz, bool sel, EAppearance bevApp, EWidget w=WIDGET_OTHER) const;
-    void drawBevelGradientReal(const TQColor &base, TQPainter *p, TQRect const &r,
+    void drawBevelGradientReal(const TQColor &base, const TQColor &bgnd, TQPainter *p, TQRect const &r,
                                bool horiz, bool sel, EAppearance bevApp, EWidget w=WIDGET_OTHER) const;
     void drawGradient(const TQColor &top, const TQColor &bot, TQPainter *p, const TQRect &r, bool horiz=true) const;
     void drawSbSliderHandle(TQPainter *p, const TQRect &r, const TQColorGroup &cg, SFlags flags, bool slider=false) const;
@@ -215,7 +218,7 @@
         return tqGray(col.rgb()) < 100 ? TQColor(255, 255, 255) : TQColor(0, 0, 0);
     }
 
-    void           shadeColors(const TQColor &base, TQColor *vals) const;
+    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;
@@ -226,31 +229,31 @@
                                 { return backgroundColors(cg.background()); }
     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;
+    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);
+    void            setDecorationColors(bool init=false);
     const TQColor * getMdiColors(const TQColorGroup &cg, bool active) const;
 #ifdef SET_MDI_WINDOW_BUTTON_POSITIONS
     void           readMdiPositions() const;
 #endif
-    bool           redrawHoverWidget(const TQPoint &pos);
+    bool            redrawHoverWidget(const TQPoint &pos);
     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 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;
-    void           drawDot(TQPainter *p, const TQRect &r, const TQColor *cols) const;
+    void            shade(const color &ca, color *cb, double k) const;
+    void            drawDot(TQPainter *p, const TQRect &r, const TQColor *cols) const;
     TQPixmap *      getPixelPixmap(const TQColor col) const;
     TQPixmap *      getPixmap(const TQColor col, EPixmap pix, double shade=1.0) const;
     TQPixmap *      createStripePixmap(const TQColor &col, bool forWindow) const;
-    void           setSbType();
-    bool           isFormWidget(const TQWidget *w) const { return itsKhtmlWidgets.contains(w); }
-    void           resetHover();
-    bool           isWindowDragWidget(TQObject *o, const TQPoint &pos=TQPoint());
-    void           adjustScrollbarRects(bool &itsFormMode, bool &horiz, bool &useThreeButtonScrollBar, TQRect &subline, TQRect &addline, TQRect &subpage, TQRect &addpage, TQRect &slider, TQRect &first, TQRect &last, TQRect &subline2, TQRect &sbRect, Options& opts, const TQWidget* widget) const;
+    void            setSbType();
+    bool            isFormWidget(const TQWidget *w) const { return itsKhtmlWidgets.contains(w); }
+    void            resetHover();
+    bool            isWindowDragWidget(TQObject *o, const TQPoint &pos=TQPoint());
+    void            adjustScrollbarRects(bool &itsFormMode, bool &horiz, bool &useThreeButtonScrollBar, TQRect &subline, TQRect &addline, TQRect &subpage, TQRect &addpage, TQRect &slider, TQRect &first, TQRect &last, TQRect &subline2, TQRect &sbRect, Options& opts, const TQWidget* widget) const;
 
     private slots:
 
@@ -263,10 +266,11 @@
     private:
 
     mutable Options            opts;
-    TQColor                     itsHighlightCols[TOTAL_SHADES+1],
+    TQColor                    itsHighlightCols[TOTAL_SHADES+1],
                                itsBackgroundCols[TOTAL_SHADES+1],
                                itsMenubarCols[TOTAL_SHADES+1],
                                itsFocusCols[TOTAL_SHADES+1],
+                               *itsPopupMenuCols,
                                *itsSliderCols,
                                *itsDefBtnCols,
                                *itsMouseOverCols,
@@ -275,7 +279,6 @@
                                *itsSortedLvColors,
                                *itsProgressCols,
                                itsButtonCols[TOTAL_SHADES+1],
-                               itsLighterPopupMenuBgndCol,
                                itsCheckRadioCol;
     mutable TQColor             *itsSidebarButtonsCols;
     mutable TQColor             *itsActiveMdiColors;
@@ -304,6 +307,7 @@
     mutable TQValueList<int>    itsMdiButtons[2]; // 0=left, 1=right
     TQWidget                    *itsDragWidget;
     bool                       itsDragWidgetHadMouseTracking;
+    ShortcutHandler            *itsShortcutHandler;
 };
 
 #endif
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.7.1/style/shortcuthandler.cpp tde-style-qtcurve-1.8.5/style/shortcuthandler.cpp
--- tde-style-qtcurve-1.7.1/style/shortcuthandler.cpp	1970-01-01 01:00:00.000000000 +0100
+++ tde-style-qtcurve-1.8.5/style/shortcuthandler.cpp	2020-04-26 20:38:03.965210750 +0200
@@ -0,0 +1,188 @@
+/*
+  QtCurve (C) Craig Drummond, 2007 - 2010 craig.p.drummond@gmail.com
+
+  ----
+
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU General Public
+  License version 2 as published by the Free Software Foundation.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; see the file COPYING.  If not, write to
+  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  Boston, MA 02110-1301, USA.
+*/
+
+#include "shortcuthandler.h"
+#include <tqpopupmenu.h>
+#include <tqapplication.h>
+#include <tqobjectlist.h>
+#include <tqmainwindow.h>
+#include <tqdialog.h>
+#include <tqstyle.h>
+
+ShortcutHandler::ShortcutHandler(TQObject *parent)
+               : TQObject(parent)
+               , itsAltDown(false)
+{
+}
+
+ShortcutHandler::~ShortcutHandler()
+{
+}
+
+bool ShortcutHandler::hasSeenAlt(const TQWidget *widget) const
+{
+    if(widget && !widget->isEnabled())
+        return false;
+
+    if(::tqqt_cast<const TQPopupMenu *>(widget))
+        return itsOpenMenus.count() && itsOpenMenus.last()==widget;
+    else
+        return itsOpenMenus.isEmpty() &&  itsSeenAlt.contains((TQWidget *)(widget->topLevelWidget()));
+/*    return false;
+    {
+        const TQWidget *w=widget;
+        
+        while(w)
+        {
+            if(itsSeenAlt.contains((TQWidget *)w))
+                return true;
+            w=w->parentWidget();
+        }
+    }
+    if(itsHandlePopupsOnly)
+        return false;
+    widget = widget->topLevelWidget();
+    return itsSeenAlt.contains((TQWidget *)widget);*/
+}
+
+bool ShortcutHandler::showShortcut(const TQWidget *widget) const
+{
+    return itsAltDown && hasSeenAlt(widget);
+}
+
+void ShortcutHandler::widgetDestroyed(TQObject *o)
+{
+    itsUpdated.remove(static_cast<TQWidget *>(o));
+    itsOpenMenus.remove(static_cast<TQWidget *>(o));
+}
+
+void ShortcutHandler::updateWidget(TQWidget *w)
+{
+    if(!itsUpdated.contains(w))
+    {
+        connect(w, SIGNAL(destroyed(TQObject *)), this, SLOT(widgetDestroyed(TQObject *)));
+        itsUpdated.append(w);
+        w->repaint(TRUE);
+    }
+}
+
+void ShortcutHandler::setSeenAlt(TQWidget *w)
+{
+    if(!itsSeenAlt.contains(w))
+        itsSeenAlt.append(w);
+}
+
+bool ShortcutHandler::eventFilter(TQObject *o, TQEvent *e)
+{
+    if (!o->isWidgetType())
+        return TQObject::eventFilter(o, e);
+
+    TQWidget *widget = ::tqqt_cast<TQWidget*>(o);
+    switch(e->type()) 
+    {
+        case TQEvent::KeyPress:
+            if (Key_Alt==((TQKeyEvent*)e)->key())
+            {
+                itsAltDown = true;
+
+                if(::tqqt_cast<TQPopupMenu *>(widget))
+                {
+                    setSeenAlt(widget);
+                    updateWidget(widget);
+                    if(widget->parentWidget() && widget->parentWidget()->topLevelWidget())
+                        itsSeenAlt.append(widget->parentWidget()->topLevelWidget());
+                }
+                else
+                {
+                    widget = widget->topLevelWidget();
+                    setSeenAlt(widget);
+
+                    // Alt has been pressed - find all widgets that care
+                    TQObjectList *l = widget->queryList("TQWidget");
+                    TQObjectListIt it( *l );
+                    TQWidget *w;
+                    while ((w = (TQWidget *)it.current()) != 0)
+                    {
+                        ++it;
+                        if (!(w->isTopLevel() || !w->isVisible())) // || w->style().styleHint(QStyle::SH_UnderlineAccelerator, w)))
+                            updateWidget(w);
+                    }
+                    delete l;
+                }
+            }
+            break;
+        case TQEvent::WindowDeactivate:
+        case TQEvent::KeyRelease:
+            if (TQEvent::WindowDeactivate==e->type() || Key_Alt==static_cast<TQKeyEvent*>(e)->key())
+            {
+                itsAltDown = false;
+                TQValueList<TQWidget *>::const_iterator it(itsUpdated.begin()),
+                                                      end(itsUpdated.end());
+                                           
+                for (; it!=end; ++it)
+                    (*it)->repaint(TRUE);
+                if(!itsUpdated.contains(widget))
+                    widget->repaint(TRUE);
+                itsSeenAlt.clear();
+                itsUpdated.clear();
+            }
+            break;
+        case TQEvent::Show:
+            if(::tqqt_cast<TQPopupMenu *>(widget))
+            {
+                TQWidget *prev=itsOpenMenus.count() ? itsOpenMenus.last() : 0L;
+                itsOpenMenus.append(widget);
+                if(itsAltDown && prev)
+                    prev->repaint(TRUE);
+                connect(widget, SIGNAL(destroyed(TQObject *)), this, SLOT(widgetDestroyed(TQObject *)));
+            }
+            break;
+        case TQEvent::Hide:
+            if(::tqqt_cast<TQPopupMenu *>(widget))
+            {
+                itsSeenAlt.remove(widget);
+                itsUpdated.remove(widget);
+                itsOpenMenus.remove(widget);
+                if(itsAltDown)
+                {
+                    if(itsOpenMenus.count())
+                        itsOpenMenus.last()->repaint(TRUE);
+                    else if(widget->parentWidget() && widget->parentWidget()->topLevelWidget())
+                        widget->parentWidget()->topLevelWidget()->repaint(TRUE);
+                }
+            }
+            break;
+        case TQEvent::Close:
+            // Reset widget when closing
+            itsSeenAlt.remove(widget);
+            itsUpdated.remove(widget);
+            itsSeenAlt.remove(widget->topLevelWidget());
+            itsOpenMenus.remove(widget);
+            if(itsAltDown && itsOpenMenus.count())
+                itsOpenMenus.last()->repaint(TRUE);
+            break;
+            break;
+        default:
+            break;
+    }
+    return TQObject::eventFilter(o, e);
+}
+
+#include "shortcuthandler.moc"
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.7.1/style/shortcuthandler.h tde-style-qtcurve-1.8.5/style/shortcuthandler.h
--- tde-style-qtcurve-1.7.1/style/shortcuthandler.h	1970-01-01 01:00:00.000000000 +0100
+++ tde-style-qtcurve-1.8.5/style/shortcuthandler.h	2020-04-26 20:26:09.565201458 +0200
@@ -0,0 +1,62 @@
+#ifndef __SHORTCUT_HANDLER_H__
+#define __SHORTCUT_HANDLER_H__
+
+/*
+  QtCurve (C) Craig Drummond, 2007 - 2010 craig.p.drummond@gmail.com
+
+  ----
+
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU General Public
+  License version 2 as published by the Free Software Foundation.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; see the file COPYING.  If not, write to
+  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  Boston, MA 02110-1301, USA.
+*/
+
+#include <tqobject.h>
+#include <tqvaluelist.h>
+#include <tqevent.h>
+
+class TQWidget;
+
+class ShortcutHandler : public TQObject
+{
+    Q_OBJECT
+
+    public:
+        
+    explicit ShortcutHandler(TQObject *parent = 0);
+    virtual ~ShortcutHandler();
+
+    bool hasSeenAlt(const TQWidget *widget) const; 
+    bool isAltDown() const { return itsAltDown; }
+    bool showShortcut(const TQWidget *widget) const;
+
+    private slots:
+
+    void widgetDestroyed(TQObject *o);
+
+    protected:
+
+    void updateWidget(TQWidget *w);
+    void setSeenAlt(TQWidget *w);
+    bool eventFilter(TQObject *watched, TQEvent *event);
+
+    private:
+
+    bool                    itsAltDown;
+    TQValueList<TQWidget *> itsSeenAlt,
+                            itsUpdated,
+                            itsOpenMenus;
+
+};
+
+#endif
\ No newline at end of file
