diff options
| author | Mike Skec <skec@protonmail.ch> | 2021-01-05 20:12:44 +1100 |
|---|---|---|
| committer | Felix Queißner <felix@ib-queissner.de> | 2021-01-05 11:14:34 +0100 |
| commit | a5eae8651b0a328c1db3a6c2380eda5dc8773398 (patch) | |
| tree | d78c668cc3c7e4850065cd7a07fd5a138a4ee58d /src | |
| parent | 552327296c64003d4f5b5fedcb123e2ceea7aee5 (diff) | |
| download | kristall-a5eae8651b0a328c1db3a6c2380eda5dc8773398.tar.gz | |
Apply favourites button workaround
https://bugreports.qt.io/browse/QTBUG-2036
Diffstat (limited to 'src')
| -rw-r--r-- | src/browsertab.ui | 7 | ||||
| -rw-r--r-- | src/kristall.pro | 6 | ||||
| -rw-r--r-- | src/widgets/favouritebutton.cpp | 17 | ||||
| -rw-r--r-- | src/widgets/favouritebutton.hpp | 25 |
4 files changed, 52 insertions, 3 deletions
diff --git a/src/browsertab.ui b/src/browsertab.ui index 495ee1f..105ca41 100644 --- a/src/browsertab.ui +++ b/src/browsertab.ui @@ -119,7 +119,7 @@ </widget> </item> <item> - <widget class="QToolButton" name="fav_button"> + <widget class="FavouriteButton" name="fav_button"> <property name="enabled"> <bool>false</bool> </property> @@ -292,6 +292,11 @@ p, li { white-space: pre-wrap; } <extends>QTextBrowser</extends> <header>widgets/kristalltextbrowser.hpp</header> </customwidget> + <customwidget> + <class>FavouriteButton</class> + <extends>QToolButton</extends> + <header>widgets/favouritebutton.hpp</header> + </customwidget> </customwidgets> <resources> <include location="icons.qrc"/> diff --git a/src/kristall.pro b/src/kristall.pro index 03bb58d..7941b6b 100644 --- a/src/kristall.pro +++ b/src/kristall.pro @@ -119,7 +119,8 @@ SOURCES += \ widgets/elidelabel.cpp \ widgets/searchbar.cpp \ widgets/ssltrusteditor.cpp \ - widgets/favouritepopup.cpp + widgets/favouritepopup.cpp \ + widgets/favouritebutton.cpp HEADERS += \ ../lib/luis-l-gist/interactiveview.hpp \ @@ -163,7 +164,8 @@ HEADERS += \ widgets/elidelabel.hpp \ widgets/searchbar.hpp \ widgets/ssltrusteditor.hpp \ - widgets/favouritepopup.hpp + widgets/favouritepopup.hpp \ + widgets/favouritebutton.hpp FORMS += \ browsertab.ui \ diff --git a/src/widgets/favouritebutton.cpp b/src/widgets/favouritebutton.cpp new file mode 100644 index 0000000..a1f3b50 --- /dev/null +++ b/src/widgets/favouritebutton.cpp @@ -0,0 +1,17 @@ +#include "favouritebutton.hpp" + +#include <QStylePainter> +#include <QStyleOptionToolButton> + +FavouriteButton::FavouriteButton(QWidget *parent) + : QToolButton(parent) +{} + +void FavouriteButton::paintEvent(QPaintEvent *event) +{ + QStylePainter p(this); + QStyleOptionToolButton opt; + initStyleOption(&opt); + opt.features &= (~QStyleOptionToolButton::HasMenu); + p.drawComplexControl(QStyle::CC_ToolButton, opt); +} diff --git a/src/widgets/favouritebutton.hpp b/src/widgets/favouritebutton.hpp new file mode 100644 index 0000000..a29763c --- /dev/null +++ b/src/widgets/favouritebutton.hpp @@ -0,0 +1,25 @@ +#ifndef FAVOURITE_BUTTON_HPP +#define FAVOURITE_BUTTON_HPP + +//! This class is used to implement a workaround +//! to get rid of the "little arrow" that Qt +//! forces onto toolbuttons that have menus. +//! +//! https://bugreports.qt.io/browse/QTBUG-2036 + +#include <QToolButton> +#include <QtGui> + +class FavouriteButton : public QToolButton +{ + Q_OBJECT; +public: + explicit FavouriteButton(QWidget * parent = 0); + +protected: + virtual void paintEvent(QPaintEvent * event); + +}; + + +#endif |
