Updated to QtCurve version 1.8.5

Based on the original LGPL 2.1 QtCurve code from Craig Drummond <craig.p.drummond@gmail.com> available at https://github.com/KDE/qtcurve

Signed-off-by: TCH <tch@protonmail.com>
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
pull/4/head
TCH 4 years ago committed by Michele Calgaro
parent 82fe64d550
commit f77e5f19e6
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -19,8 +19,8 @@ set(DEBIAN_PACKAGE_DESCRIPTION "QtCurve for TQt/TDE")
set(DEBIAN_PACKAGE_SECTION "tde") set(DEBIAN_PACKAGE_SECTION "tde")
set(CPACK_SOURCE_GENERATOR "TBZ2") set(CPACK_SOURCE_GENERATOR "TBZ2")
set(CPACK_PACKAGE_VERSION_MAJOR "1") set(CPACK_PACKAGE_VERSION_MAJOR "1")
set(CPACK_PACKAGE_VERSION_MINOR "7") set(CPACK_PACKAGE_VERSION_MINOR "8")
set(CPACK_PACKAGE_VERSION_PATCH "1") set(CPACK_PACKAGE_VERSION_PATCH "5")
set(CPACK_PACKAGE_CONTACT "Craig Drummond <craig.p.drummond@gmail.com>") set(CPACK_PACKAGE_CONTACT "Craig Drummond <craig.p.drummond@gmail.com>")
set(QTCURVE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}") set(QTCURVE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
set(QTCURVE_VERSION_FULL "${QTCURVE_VERSION}.${CPACK_PACKAGE_VERSION_PATCH}") set(QTCURVE_VERSION_FULL "${QTCURVE_VERSION}.${CPACK_PACKAGE_VERSION_PATCH}")
@ -32,6 +32,7 @@ include(CPack)
##### general package setup ##################### ##### general package setup #####################
project( tde-style-qtcurve ) project( tde-style-qtcurve )
set( VERSION R14.1.0 )
##### include essential cmake modules ########### ##### include essential cmake modules ###########

@ -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.7.1
----- -----
1. Remove box around arrow in listview lines - to match Gtk better. 1. Remove box around arrow in listview lines - to match Gtk better.

@ -1102,7 +1102,9 @@ typedef struct
crSize, crSize,
gbFactor, gbFactor,
gbLabel, gbLabel,
thin; thin,
tbarBtnAppearance,
tbarBtnEffect;
ERound round; ERound round;
bool embolden, bool embolden,
highlightTab, highlightTab,
@ -1124,6 +1126,7 @@ typedef struct
gtkScrollViews, gtkScrollViews,
stdSidebarButtons, stdSidebarButtons,
toolbarTabs, toolbarTabs,
hideShortcutUnderline,
#ifdef __cplusplus #ifdef __cplusplus
gtkComboMenus, gtkComboMenus,
/* /*

@ -37,7 +37,7 @@ install( FILES qtcurve.themerc DESTINATION ${DATA_INSTALL_DIR}/tdestyle/themes )
set( target qtcurve ) set( target qtcurve )
set( ${target}_SRCS set( ${target}_SRCS
qtcurve.cpp pixmaps.h qtcurve.cpp pixmaps.h shortcuthandler.cpp
) )
tde_add_kpart( ${target} AUTOMOC tde_add_kpart( ${target} AUTOMOC

@ -5,12 +5,12 @@
If you get compile errors caused by X11 includes (the line If you get compile errors caused by X11 includes (the line
where first error appears contains word like None, Unsorted, where first error appears contains word like None, Unsorted,
Below, etc.), put #include <fixx11h.h> in the .cpp file Below, etc.), put #include <fixx11h.h> in the .cpp file
(not .h file!) between the place where X11 headers are (not .h file!) between the place where X11 headers are
included and the place where the file with compile included and the place where the file with compile
error is included (or the place where the compile error error is included (or the place where the compile error
in the .cpp file occurs). in the .cpp file occurs).
This file remaps X11 #defines to const variables or This file remaps X11 #defines to const variables or
inline functions. The side effect may be that these inline functions. The side effect may be that these
symbols may now refer to different variables symbols may now refer to different variables

@ -130,7 +130,7 @@ void TQtCTDEStyle::polish( TQStyleControlElementData ceData, ControlElementFlags
TQFrame::Shape shape = frame->frameShape(); TQFrame::Shape shape = frame->frameShape();
if (shape == TQFrame::ToolBarPanel || shape == TQFrame::MenuBarPanel) if (shape == TQFrame::ToolBarPanel || shape == TQFrame::MenuBarPanel)
installObjectEventHandler(ceData, elementFlags, ptr, this); installObjectEventHandler(ceData, elementFlags, ptr, this);
} }
} }
} }
} }
@ -147,7 +147,7 @@ void TQtCTDEStyle::unPolish( TQStyleControlElementData ceData, ControlElementFla
TQFrame::Shape shape = frame->frameShape(); TQFrame::Shape shape = frame->frameShape();
if (shape == TQFrame::ToolBarPanel || shape == TQFrame::MenuBarPanel) if (shape == TQFrame::ToolBarPanel || shape == TQFrame::MenuBarPanel)
removeObjectEventHandler(ceData, elementFlags, ptr, this); removeObjectEventHandler(ceData, elementFlags, ptr, this);
} }
} }
} }
} }
@ -884,7 +884,7 @@ static TQListViewItem* nextVisibleSibling(TQListViewItem* item)
sibling = sibling->nextSibling(); sibling = sibling->nextSibling();
} }
while (sibling && !sibling->isVisible()); while (sibling && !sibling->isVisible());
return sibling; return sibling;
} }

@ -1,12 +1,12 @@
/* /*
* $Id$ * $Id$
* *
* TDEStyle * TDEStyle
* Copyright (C) 2001-2002 Karol Szwed <gallium@kde.org> * Copyright (C) 2001-2002 Karol Szwed <gallium@kde.org>
* *
* TQWindowsStyle CC_ListView and style images were kindly donated by TrollTech, * TQWindowsStyle CC_ListView and style images were kindly donated by TrollTech,
* Copyright (C) 1998-2000 TrollTech AS. * Copyright (C) 1998-2000 TrollTech AS.
* *
* Many thanks to Bradley T. Hughes for the 3 button scrollbar code. * Many thanks to Bradley T. Hughes for the 3 button scrollbar code.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
@ -35,9 +35,9 @@
#include <tqcommonstyle.h> #include <tqcommonstyle.h>
struct TQtCTDEStylePrivate; struct TQtCTDEStylePrivate;
/** /**
* Simplifies and extends the TQStyle API to make style coding easier. * Simplifies and extends the TQStyle API to make style coding easier.
* *
* The TDEStyle class provides a simple internal menu transparency engine * The TDEStyle class provides a simple internal menu transparency engine
* which attempts to use XRender for accelerated blending where requested, * which attempts to use XRender for accelerated blending where requested,
* or falls back to fast internal software tinting/blending routines. * or falls back to fast internal software tinting/blending routines.
@ -53,24 +53,23 @@ struct TQtCTDEStylePrivate;
class TQtCTDEStyle: public TQCommonStyle class TQtCTDEStyle: public TQCommonStyle
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* TQtCTDEStyle Flags: * TQtCTDEStyle Flags:
* *
* @li Default - Default style setting, where menu transparency * @li Default - Default style setting, where menu transparency
* and the FilledFrameWorkaround are disabled. * and the FilledFrameWorkaround are disabled.
* *
* @li AllowMenuTransparency - Enable this flag to use TQtCTDEStyle's * @li AllowMenuTransparency - Enable this flag to use TQtCTDEStyle's
* internal menu transparency engine. * internal menu transparency engine.
* *
* @li FilledFrameWorkaround - Enable this flag to facilitate * @li FilledFrameWorkaround - Enable this flag to facilitate
* proper repaints of TQMenuBars and TQToolBars when the style chooses * proper repaints of TQMenuBars and TQToolBars when the style chooses
* to paint the interior of a TQFrame. The style primitives in question * to paint the interior of a TQFrame. The style primitives in question
* are PE_PanelMenuBar and PE_PanelDockWindow. The HighColor style uses * are PE_PanelMenuBar and PE_PanelDockWindow. The HighColor style uses
* this workaround to enable painting of gradients in menubars and * this workaround to enable painting of gradients in menubars and
* toolbars. * toolbars.
*/ */
typedef uint TDEStyleFlags; typedef uint TDEStyleFlags;
@ -90,12 +89,12 @@ class TQtCTDEStyle: public TQCommonStyle
* @li WindowsStyleScrollBar - Two button scrollbar with the previous * @li WindowsStyleScrollBar - Two button scrollbar with the previous
* button at the top/left, and the next button at the bottom/right. * button at the top/left, and the next button at the bottom/right.
* *
* @li PlatinumStyleScrollBar - Two button scrollbar with both the * @li PlatinumStyleScrollBar - Two button scrollbar with both the
* previous and next buttons at the bottom/right. * previous and next buttons at the bottom/right.
* *
* @li ThreeButtonScrollBar - %KDE style three button scrollbar with * @li ThreeButtonScrollBar - %KDE style three button scrollbar with
* two previous buttons, and one next button. The next button is always * two previous buttons, and one next button. The next button is always
* at the bottom/right, whilst the two previous buttons are on either * at the bottom/right, whilst the two previous buttons are on either
* end of the scrollbar. * end of the scrollbar.
* *
* @li NextStyleScrollBar - Similar to the PlatinumStyle scroll bar, but * @li NextStyleScrollBar - Similar to the PlatinumStyle scroll bar, but
@ -110,14 +109,14 @@ class TQtCTDEStyle: public TQCommonStyle
NextStyleScrollBar = 0x00000004 //!< two button, NeXT style NextStyleScrollBar = 0x00000004 //!< two button, NeXT style
}; };
/** /**
* Constructs a TDEStyle object. * Constructs a TDEStyle object.
* *
* Select the appropriate TDEStyle flags and scrollbar type * Select the appropriate TDEStyle flags and scrollbar type
* for your style. The user's style preferences selected in KControl * for your style. The user's style preferences selected in KControl
* are read by using TQSettings and are automatically applied to the style. * are read by using TQSettings and are automatically applied to the style.
* As a fallback, TDEStyle paints progressbars and tabbars. It inherits from * As a fallback, TDEStyle paints progressbars and tabbars. It inherits from
* TQCommonStyle for speed, so don't expect much to be implemented. * TQCommonStyle for speed, so don't expect much to be implemented.
* *
* It is advisable to use a currently implemented style such as the HighColor * It is advisable to use a currently implemented style such as the HighColor
* style as a foundation for any new TDEStyle, so the limited number of * style as a foundation for any new TDEStyle, so the limited number of
@ -132,7 +131,7 @@ class TQtCTDEStyle: public TQCommonStyle
TQtCTDEStyle( TDEStyleFlags flags = TQtCTDEStyle::Default, TQtCTDEStyle( TDEStyleFlags flags = TQtCTDEStyle::Default,
TDEStyleScrollBarType sbtype = TQtCTDEStyle::WindowsStyleScrollBar ); TDEStyleScrollBarType sbtype = TQtCTDEStyle::WindowsStyleScrollBar );
/** /**
* Destructs the TQtCTDEStyle object. * Destructs the TQtCTDEStyle object.
*/ */
~TQtCTDEStyle(); ~TQtCTDEStyle();
@ -144,7 +143,7 @@ class TQtCTDEStyle: public TQCommonStyle
/** /**
* Modifies the scrollbar type used by the style. * Modifies the scrollbar type used by the style.
* *
* This function is only provided for convenience. It allows * This function is only provided for convenience. It allows
* you to make a late decision about what scrollbar type to use for the * you to make a late decision about what scrollbar type to use for the
* style after performing some processing in your style's constructor. * style after performing some processing in your style's constructor.
@ -165,12 +164,12 @@ class TQtCTDEStyle: public TQCommonStyle
/** /**
* TDEStyle Primitive Elements: * TDEStyle Primitive Elements:
* *
* The TDEStyle class extends the TQt's Style API by providing certain * The TDEStyle class extends the TQt's Style API by providing certain
* simplifications for parts of TQStyle. To do this, the TDEStylePrimitive * simplifications for parts of TQStyle. To do this, the TDEStylePrimitive
* elements were defined, which are very similar to TQt's PrimitiveElement. * elements were defined, which are very similar to TQt's PrimitiveElement.
* *
* The first three Handle primitives simplify and extend PE_DockWindowHandle, * The first three Handle primitives simplify and extend PE_DockWindowHandle,
* so do not reimplement PE_DockWindowHandle if you want the TDEStyle handle * so do not reimplement PE_DockWindowHandle if you want the TDEStyle handle
* simplifications to be operable. Similarly do not reimplement CC_Slider, * simplifications to be operable. Similarly do not reimplement CC_Slider,
* SC_SliderGroove and SC_SliderHandle when using the TDEStyle slider * SC_SliderGroove and SC_SliderHandle when using the TDEStyle slider
* primitives. TDEStyle automatically double-buffers slider painting * primitives. TDEStyle automatically double-buffers slider painting
@ -190,7 +189,7 @@ class TQtCTDEStyle: public TQCommonStyle
* as the applet handles used in Kicker. The default implementation paints a filled * as the applet handles used in Kicker. The default implementation paints a filled
* rect of arbitrary color. * rect of arbitrary color.
* *
* @li KPE_SliderGroove - This primitive must be reimplemented. It is used to * @li KPE_SliderGroove - This primitive must be reimplemented. It is used to
* paint the slider groove. The default implementation paints a filled rect of * paint the slider groove. The default implementation paints a filled rect of
* arbitrary color. * arbitrary color.
* *
@ -199,7 +198,7 @@ class TQtCTDEStyle: public TQCommonStyle
* arbitrary color. * arbitrary color.
* *
* @li KPE_ListViewExpander - This primitive is already implemented in TDEStyle. It * @li KPE_ListViewExpander - This primitive is already implemented in TDEStyle. It
* is used to draw the Expand/Collapse element in TQListViews. To indicate the * is used to draw the Expand/Collapse element in TQListViews. To indicate the
* expanded state, the style flags are set to Style_Off, while Style_On implies collapsed. * expanded state, the style flags are set to Style_Off, while Style_On implies collapsed.
* *
* @li KPE_ListViewBranch - This primitive is already implemented in TDEStyle. It is * @li KPE_ListViewBranch - This primitive is already implemented in TDEStyle. It is
@ -218,8 +217,8 @@ class TQtCTDEStyle: public TQCommonStyle
}; };
/** /**
* This function is identical to TQt's TQStyle::drawPrimitive(), except that * This function is identical to TQt's TQStyle::drawPrimitive(), except that
* it adds one further parameter, 'widget', that can be used to determine * it adds one further parameter, 'widget', that can be used to determine
* the widget state of the TDEStylePrimitive in question. * the widget state of the TDEStylePrimitive in question.
* *
* @see TDEStyle::TDEStylePrimitive * @see TDEStyle::TDEStylePrimitive
@ -302,10 +301,10 @@ class TQtCTDEStyle: public TQCommonStyle
const TQStyleOption& = TQStyleOption::Default, const TQStyleOption& = TQStyleOption::Default,
const TQWidget* widget = 0 ) const; const TQWidget* widget = 0 ) const;
int pixelMetric( PixelMetric m, TQStyleControlElementData ceData, ControlElementFlags elementFlags, int pixelMetric( PixelMetric m, TQStyleControlElementData ceData, ControlElementFlags elementFlags,
const TQWidget* widget = 0 ) const; const TQWidget* widget = 0 ) const;
TQRect subRect( SubRect r, const TQStyleControlElementData ceData, const ControlElementFlags elementFlags, TQRect subRect( SubRect r, const TQStyleControlElementData ceData, const ControlElementFlags elementFlags,
const TQWidget* widget = 0 ) const; const TQWidget* widget = 0 ) const;
TQPixmap stylePixmap( StylePixmap stylepixmap, TQPixmap stylePixmap( StylePixmap stylepixmap,
@ -314,7 +313,7 @@ class TQtCTDEStyle: public TQCommonStyle
const TQStyleOption& = TQStyleOption::Default, const TQStyleOption& = TQStyleOption::Default,
const TQWidget* widget = 0 ) const; const TQWidget* widget = 0 ) const;
int styleHint( StyleHint sh, TQStyleControlElementData ceData, ControlElementFlags elementFlags, int styleHint( StyleHint sh, TQStyleControlElementData ceData, ControlElementFlags elementFlags,
const TQStyleOption &opt = TQStyleOption::Default, const TQStyleOption &opt = TQStyleOption::Default,
TQStyleHintReturn* shr = 0, TQStyleHintReturn* shr = 0,
const TQWidget* w = 0 ) const; const TQWidget* w = 0 ) const;

File diff suppressed because it is too large Load Diff

@ -78,10 +78,11 @@ class TQSlider;
#define BASE_STYLE TDEStyle #define BASE_STYLE TDEStyle
#endif #endif
class ShortcutHandler;
class QtCurveStyle : public BASE_STYLE class QtCurveStyle : public BASE_STYLE
{ {
Q_OBJECT Q_OBJECT
public: public:
@ -139,19 +140,20 @@ class QtCurveStyle : public BASE_STYLE
virtual ~QtCurveStyle(); virtual ~QtCurveStyle();
void applicationPolish(const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void *); void applicationPolish(const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void *);
void applicationUnPolish(const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void *);
void polish(TQPalette &pal); void polish(TQPalette &pal);
TQColorGroup setColorGroup(const TQColorGroup &old, const TQColorGroup &act, bool dis=false); TQColorGroup setColorGroup(const TQColorGroup &old, const TQColorGroup &act, bool dis=false);
void polish(const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void *); void polish(const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void *);
void unPolish(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, void drawLightBevel(TQPainter *p, const TQRect &r, const TQColorGroup &cg, SFlags flags,
int round, const TQColor &fill, const TQColor *custom=NULL, 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 TQWidget *widget=0L) const
{ drawLightBevel(cg.background(), p, r, cg, flags, round, fill, custom, doBorder, doCorners, w); } { 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, void drawLightBevel(const TQColor &bgnd, TQPainter *p, const TQRect &r, const TQColorGroup &cg,
SFlags flags, int round, const TQColor &fill, const TQColor *custom=NULL, 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 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, 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, 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; bool doCorners=true, EBorder borderProfile=BORDER_FLAT, bool blendBorderColors=true, int borderVal=STD_BORDER) const;
@ -195,9 +197,9 @@ class QtCurveStyle : public BASE_STYLE
bool mbi, int round, const TQColor &bgnd, const TQColor *cols) const; 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, void drawProgress(TQPainter *p, const TQRect &r, const TQColorGroup &cg, SFlags flags, int round,
const TQWidget *widget) const; 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; 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; 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 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; void drawSbSliderHandle(TQPainter *p, const TQRect &r, const TQColorGroup &cg, SFlags flags, bool slider=false) const;
@ -215,7 +217,7 @@ class QtCurveStyle : public BASE_STYLE
return tqGray(col.rgb()) < 100 ? TQColor(255, 255, 255) : TQColor(0, 0, 0); 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 * buttonColors(const TQColorGroup &cg) const;
const TQColor * popupMenuCols(const TQColorGroup &cg) const; const TQColor * popupMenuCols(const TQColorGroup &cg) const;
const TQColor & popupMenuCol(const TQColorGroup &cg, int shade=ORIGINAL_SHADE) const; const TQColor & popupMenuCol(const TQColorGroup &cg, int shade=ORIGINAL_SHADE) const;
@ -226,31 +228,31 @@ class QtCurveStyle : public BASE_STYLE
{ return backgroundColors(cg.background()); } { return backgroundColors(cg.background()); }
const TQColor * borderColors(SFlags flags, const TQColor *use) const; const TQColor * borderColors(SFlags flags, const TQColor *use) const;
const TQColor * getSidebarButtons() const; const TQColor * getSidebarButtons() const;
void setMenuColors(const TQColorGroup &cg); void setMenuColors(const TQColorGroup &cg);
void setMenuTextColors(TQWidget *widget, bool isMenuBar) const; void setMenuTextColors(TQWidget *widget, bool isMenuBar) const;
const TQColor * menuColors(const TQColorGroup &cg, bool active) 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; const TQColor * getMdiColors(const TQColorGroup &cg, bool active) const;
#ifdef SET_MDI_WINDOW_BUTTON_POSITIONS #ifdef SET_MDI_WINDOW_BUTTON_POSITIONS
void readMdiPositions() const; void readMdiPositions() const;
#endif #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 & getFill(SFlags flags, const TQColor *use, bool cr=false, bool darker=false) const;
const TQColor & getListViewFill(SFlags flags, const TQColor *use) const; const TQColor & getListViewFill(SFlags flags, const TQColor *use) const;
const TQColor & getTabFill(bool current, bool highlight, const TQColor *use) const; const TQColor & getTabFill(bool current, bool highlight, const TQColor *use) const;
const TQColor & menuStripeCol(const TQColorGroup &cg) const; const TQColor & menuStripeCol(const TQColorGroup &cg) const;
const TQColor & checkRadioCol(SFlags flags, const TQColorGroup &cg) const; const TQColor & checkRadioCol(SFlags flags, const TQColorGroup &cg) const;
TQColor shade(const TQColor &a, float k) const; TQColor shade(const TQColor &a, float k) const;
void shade(const color &ca, color *cb, double k) const; void shade(const color &ca, color *cb, double k) const;
void drawDot(TQPainter *p, const TQRect &r, const TQColor *cols) const; void drawDot(TQPainter *p, const TQRect &r, const TQColor *cols) const;
TQPixmap * getPixelPixmap(const TQColor col) const; TQPixmap * getPixelPixmap(const TQColor col) const;
TQPixmap * getPixmap(const TQColor col, EPixmap pix, double shade=1.0) const; TQPixmap * getPixmap(const TQColor col, EPixmap pix, double shade=1.0) const;
TQPixmap * createStripePixmap(const TQColor &col, bool forWindow) const; TQPixmap * createStripePixmap(const TQColor &col, bool forWindow) const;
void setSbType(); void setSbType();
bool isFormWidget(const TQWidget *w) const { return itsKhtmlWidgets.contains(w); } bool isFormWidget(const TQWidget *w) const { return itsKhtmlWidgets.contains(w); }
void resetHover(); void resetHover();
bool isWindowDragWidget(TQObject *o, const TQPoint &pos=TQPoint()); 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 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: private slots:
@ -263,10 +265,11 @@ class QtCurveStyle : public BASE_STYLE
private: private:
mutable Options opts; mutable Options opts;
TQColor itsHighlightCols[TOTAL_SHADES+1], TQColor itsHighlightCols[TOTAL_SHADES+1],
itsBackgroundCols[TOTAL_SHADES+1], itsBackgroundCols[TOTAL_SHADES+1],
itsMenubarCols[TOTAL_SHADES+1], itsMenubarCols[TOTAL_SHADES+1],
itsFocusCols[TOTAL_SHADES+1], itsFocusCols[TOTAL_SHADES+1],
*itsPopupMenuCols,
*itsSliderCols, *itsSliderCols,
*itsDefBtnCols, *itsDefBtnCols,
*itsMouseOverCols, *itsMouseOverCols,
@ -275,7 +278,6 @@ class QtCurveStyle : public BASE_STYLE
*itsSortedLvColors, *itsSortedLvColors,
*itsProgressCols, *itsProgressCols,
itsButtonCols[TOTAL_SHADES+1], itsButtonCols[TOTAL_SHADES+1],
itsLighterPopupMenuBgndCol,
itsCheckRadioCol; itsCheckRadioCol;
mutable TQColor *itsSidebarButtonsCols; mutable TQColor *itsSidebarButtonsCols;
mutable TQColor *itsActiveMdiColors; mutable TQColor *itsActiveMdiColors;
@ -304,6 +306,7 @@ class QtCurveStyle : public BASE_STYLE
mutable TQValueList<int> itsMdiButtons[2]; // 0=left, 1=right mutable TQValueList<int> itsMdiButtons[2]; // 0=left, 1=right
TQWidget *itsDragWidget; TQWidget *itsDragWidget;
bool itsDragWidgetHadMouseTracking; bool itsDragWidgetHadMouseTracking;
ShortcutHandler *itsShortcutHandler;
}; };
#endif #endif

@ -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"

@ -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
Loading…
Cancel
Save