aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Skec <skec@protonmail.ch>2021-01-05 20:12:44 +1100
committerFelix Queißner <felix@ib-queissner.de>2021-01-05 11:14:34 +0100
commita5eae8651b0a328c1db3a6c2380eda5dc8773398 (patch)
treed78c668cc3c7e4850065cd7a07fd5a138a4ee58d /src
parent552327296c64003d4f5b5fedcb123e2ceea7aee5 (diff)
downloadkristall-a5eae8651b0a328c1db3a6c2380eda5dc8773398.tar.gz
Apply favourites button workaround
https://bugreports.qt.io/browse/QTBUG-2036
Diffstat (limited to 'src')
-rw-r--r--src/browsertab.ui7
-rw-r--r--src/kristall.pro6
-rw-r--r--src/widgets/favouritebutton.cpp17
-rw-r--r--src/widgets/favouritebutton.hpp25
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