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.1/ChangeLog
--- tde-style-qtcurve-1.7.1/ChangeLog	2020-02-15 14:11:39.028378674 +0100
+++ tde-style-qtcurve-1.8.1/ChangeLog	2010-12-05 23:19:16.000000000 +0100
@@ -1,3 +1,19 @@
+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.
@@ -11,7 +27,7 @@
  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.
+    QtCurve kwin 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
@@ -67,9 +83,9 @@
 
 1.3.0
 -----
-1. Add option to use twin titlebar colours as menubar shade.
+1. Add option to use kwin titlebar colours as menubar shade.
 2. Fix(?) compilation of config module.
-3. Dont use TDEStandardDirs to create config folder.
+3. Dont use KStandardDirs to create config folder.
 4. Use 'kde' to disable parent-less dialog fix for all KDE applications.
 
 1.2.0
@@ -127,7 +143,7 @@
 14. Use split gradient for dock-widget titlebars.
 15. Reduce number of supplied presets.
 16. Allow to compile style against just Qt3 - tarball includes a simplified copy
-    of TDEStyle. Need to pass -DQTC_QT_ONLY=true to cmake. NOTE: May also need to set TQTDIR
+    of KStyle. Need to pass -DQTC_QT_ONLY=true to cmake. NOTE: May also need to set QTDIR
     *before* calling cmake.
 17. If KDE3 development files not found, then automatically set -DQTC_QT_ONLY=true
     
@@ -191,12 +207,12 @@
  6. Modify defaults:
         Scrollbars outside of scrollview (Gtk/oxygen style)
         Thin scrollbar groove.
- 7. Use TDE_SESSION_VERSION to determine which KDE prefix (KDE3, or KDE4) to
+ 7. Use KDE_SESSION_VERSION to determine which KDE prefix (KDE3, or KDE4) to
     seach first for qtc_xxx.themerc files.
  8. Update Klearlooks to be more consistent with Clearlooks (lighten tab background,
     use highlight strip on active tab, dont colour active tab)
  9. Use default KDE4 settings to determine colour of text for disabled items.
-10. When calling tde-config/kde4-config pipe stderr to /dev/null
+10. When calling kde-config/kde4-config pipe stderr to /dev/null
 
 0.65.4
 ------
@@ -254,9 +270,9 @@
 11. Modified how button, and combo, heights are calculated - no longer set a
     minimum height.
 12. Fix some re-draw errors with thin scrollbar grooves.
-13. Default to reading KDE4 settings if TDE_SESSION_VERSION is not set.
+13. Default to reading KDE4 settings if KDE_SESSION_VERSION is not set.
     Pass -DQTC_DEFAULT_TO_KDE3=true to cmake to force this to default to KDE3.
-14. Call tde-config / kde4-config to ascertain users TDEHOME.
+14. Call kde-config / kde4-config to ascertain users KDEHOME.
 15. Fix slight redraw error with glow style mouse over tabs.
 16. Remove box from listview arrows when configured to drawn listview lines.
 
@@ -289,7 +305,7 @@
     setting.
 15. Fix kaffeine's slider benig completely filled at start of song.
 16. Fix LineEdit in qtconfig.
-17. Under KDE4 (TDE_SESSION_VERSION>=4), default hover/focus colours to the
+17. Under KDE4 (KDE_SESSION_VERSION>=4), default hover/focus colours to the
     KDE4 defaults.
 
 0.63.0
@@ -664,8 +680,8 @@
 ------
 1. Don't lighten border of disabled check/radio buttons.
 2. Lighten trough of disabled slider.
-3. Modify tdehtml check to also check to see if widget name == "__tdehtml"
-4. Store tdehtml widgets in a map, to speed up checking.
+3. Modify khtml check to also check to see if widget name == "__khtml"
+4. Store khtml widgets in a map, to speed up checking.
 5. Fix shadow on comboboxes.
 6. Draw background of checked menuitem icons as per KDE4.
 
@@ -747,7 +763,7 @@
       Tab appearance
       Listview appearance
       Slider appearance
-2. If TDE_SESSION_VERSION is set to >=4, then read settings from
+2. If KDE_SESSION_VERSION is set to >=4, then read settings from
    $XDG_CONFIG_HOME/TrollTech.conf. This only affects Qt-only
    applications - KDE apps should not be affected.
 3. Lighten focus rectangle.
@@ -761,8 +777,8 @@
 ------
 1. Fix slight drawing errors in corner of lineedits on toolbars.
 2. Fix scrollbar borders on certain apps - notably konsole. This was
-   caused by an attempt to fix TDEHTML's scrollbars - that fix will
-   now only be applied to konqueror and kontact (akregator uses tdehtml)
+   caused by an attempt to fix KHTML's scrollbars - that fix will
+   now only be applied to konqueror and kontact (akregator uses khtml)
 
 0.48.3
 ------
@@ -784,7 +800,7 @@
 0.48.1
 ------
 1. Draw light border around all of progressbar.
-2. Fix squared checkboxes in tdehtml.
+2. Fix squared checkboxes in khtml.
 3. Fix drawing of menubar border for inactive windows.
 4. Fix OpenOffice.org scrollbars.
 
@@ -842,7 +858,7 @@
 12. Removed save/load functionality from config dialog - only import/export
     left.
 13. Re-fix kaffeine's sliders.
-14. Hacky fix for scrollbars within tdehtml.
+14. Hacky fix for scrollbars within khtml.
 15. Remove main frame that surounds kontact.
 16. Fix search field/results in systemsettings.
 
@@ -893,7 +909,7 @@
 1. Restore pre 0.45 inactive window highlight. Option is
    still there to re-activate.
 2. Fix dark text appearing on progressbars.
-3. Use TDEStyle to draw status bar elements - if enabled.
+3. Use KStyle to draw status bar elements - if enabled.
 
 0.45
 ----
@@ -936,7 +952,7 @@
  7. Option to use large dots.
  8. Option to set scrollbar button type: kde, windows, platinum,
     next, or none.
- 9. Slightly better radios in tdehtml.
+ 9. Slightly better radios in khtml.
 10. Slightly smaller buttons.
 11. Option to have coloured side-bar buttons - e.g. the buttons on the
     edge of kate's windows.
@@ -1013,7 +1029,7 @@
 16. Display dock window titles.
 17. Make OO.os file dialog have no taksbar/pager entry (if
     --enable-parentless-dialogs-fix is specified).
-18. Better rounded look for TDEHTML widgets.
+18. Better rounded look for KHTML widgets.
 
 0.41.1
 ------
@@ -1239,7 +1255,7 @@
  8. GTK2: Fix for text on combos turning white on mouse over.
  9. GTK: Use same menu colour as KDE when shading!
 10. ALL: Fix for vertical toolbars.
-11. GTK2: Also look in ~/.kde (or $TDEHOME) for user icons.
+11. GTK2: Also look in ~/.kde (or $KDEHOME) for user icons.
 12. GTK2: Only write userChrome.css if made changes.
 
 0.28
@@ -1494,9 +1510,9 @@
 3: ALL: V3 - Lighter background for disabled check/radios.
 4: ALL: V3 - Correct AA colour for radio indicator.
 5: KDE: Draw triangular tabs the same as rounded - prevous versions defaulted to
-        TDEStyle.
+        KStyle.
 6: KDE: Add 10pix (2*10) border to non-default buttons.
-7: KDE: Implement masks for checks and radios - helps with tdehtml.
+7: KDE: Implement masks for checks and radios - helps with khtml.
 
 0.15
 ----
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.1/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.1/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.1/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.1/style/qtcurve.cpp	2020-04-26 20:24:31.933200188 +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())
@@ -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 && itsProgressCols!=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)
 			{
@@ -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();
 
@@ -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]);
 
@@ -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;
@@ -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
@@ -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,7 +5180,7 @@
             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,
@@ -5146,7 +5190,7 @@
             }
 
             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;
@@ -5537,7 +5583,7 @@
                 }
                 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)
@@ -5576,8 +5622,8 @@
 
                 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 +5993,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 +6092,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 +6182,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)]);
@@ -7103,6 +7149,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 +7224,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;
         }
@@ -7277,22 +7324,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)
     {
@@ -8000,15 +8047,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 +8124,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 +8159,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 +8186,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 +8656,7 @@
 
 const TQColor & QtCurveStyle::menuStripeCol(const TQColorGroup &cg) const
 {
+    const TQColor *pc(popupMenuCols(cg));
     switch(opts.menuStripe)
     {
         default:
@@ -8611,12 +8667,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.1/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.1/style/qtcurve.h	2020-04-26 20:22:54.805198925 +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;
@@ -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.1/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.1/style/shortcuthandler.cpp	2020-04-26 20:35:47.000000000 +0200
@@ -0,0 +1,185 @@
+/*
+  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(::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.1/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.1/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
