mirror of
https://invent.kde.org/network/falkon.git
synced 2024-12-20 02:36:34 +01:00
[Oxygen] Set rounded corners for custom tooltips.
Show custom tooltips with rounded corners when using Oxygen theme. Tab previews and popup statusbar message are now painted with rounded corners.
This commit is contained in:
parent
beaf05f28e
commit
9861af4d64
@ -7,6 +7,7 @@ Version 1.5.0
|
|||||||
* proxy exceptions now supports wildcards (*, ?)
|
* proxy exceptions now supports wildcards (*, ?)
|
||||||
* cancel upload when trying to upload non-readable files
|
* cancel upload when trying to upload non-readable files
|
||||||
* GreaseMonkey: added support for GM_Settings
|
* GreaseMonkey: added support for GM_Settings
|
||||||
|
* oxygen: set rounded corners for tooltips
|
||||||
* fixed: size of preferences dialog on low-res screens
|
* fixed: size of preferences dialog on low-res screens
|
||||||
* fixed: loading plugins with relative paths in portable build
|
* fixed: loading plugins with relative paths in portable build
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ int ProxyStyle::pixelMetric(PixelMetric metric, const QStyleOption* option, cons
|
|||||||
if (m_TabBarTabHSpace == -1) {
|
if (m_TabBarTabHSpace == -1) {
|
||||||
m_TabBarTabHSpace = qMin(QProxyStyle::pixelMetric(PM_TabBarTabHSpace, option, widget), 14);
|
m_TabBarTabHSpace = qMin(QProxyStyle::pixelMetric(PM_TabBarTabHSpace, option, widget), 14);
|
||||||
|
|
||||||
if (baseStyle()->objectName() == QLatin1String("oxygen")) {
|
if (name() == QLatin1String("oxygen")) {
|
||||||
m_TabBarTabHSpace = 14;
|
m_TabBarTabHSpace = 14;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -55,3 +55,8 @@ int ProxyStyle::pixelMetric(PixelMetric metric, const QStyleOption* option, cons
|
|||||||
return QProxyStyle::pixelMetric(metric, option, widget);
|
return QProxyStyle::pixelMetric(metric, option, widget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString ProxyStyle::name() const
|
||||||
|
{
|
||||||
|
return baseStyle()->objectName();
|
||||||
|
}
|
||||||
|
@ -28,9 +28,10 @@ public:
|
|||||||
explicit ProxyStyle();
|
explicit ProxyStyle();
|
||||||
|
|
||||||
int styleHint(StyleHint hint, const QStyleOption* option = 0, const QWidget* widget = 0, QStyleHintReturn* returnData = 0) const;
|
int styleHint(StyleHint hint, const QStyleOption* option = 0, const QWidget* widget = 0, QStyleHintReturn* returnData = 0) const;
|
||||||
|
|
||||||
int pixelMetric(PixelMetric metric, const QStyleOption* option, const QWidget* widget) const;
|
int pixelMetric(PixelMetric metric, const QStyleOption* option, const QWidget* widget) const;
|
||||||
|
|
||||||
|
QString name() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
mutable int m_TabBarTabHSpace;
|
mutable int m_TabBarTabHSpace;
|
||||||
};
|
};
|
||||||
|
@ -19,9 +19,11 @@
|
|||||||
#include "qupzilla.h"
|
#include "qupzilla.h"
|
||||||
#include "tabwidget.h"
|
#include "tabwidget.h"
|
||||||
#include "tabbedwebview.h"
|
#include "tabbedwebview.h"
|
||||||
#include "webpage.h"
|
|
||||||
#include "squeezelabelv1.h"
|
#include "squeezelabelv1.h"
|
||||||
#include "mainapplication.h"
|
#include "mainapplication.h"
|
||||||
|
#include "webpage.h"
|
||||||
|
#include "proxystyle.h"
|
||||||
|
#include "qztools.h"
|
||||||
|
|
||||||
#include <QStyleOptionFrame>
|
#include <QStyleOptionFrame>
|
||||||
#include <QStatusBar>
|
#include <QStatusBar>
|
||||||
@ -60,6 +62,16 @@ void TipLabel::hideDelayed()
|
|||||||
m_timer->start();
|
m_timer->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TipLabel::resizeEvent(QResizeEvent* ev)
|
||||||
|
{
|
||||||
|
SqueezeLabelV1::resizeEvent(ev);
|
||||||
|
|
||||||
|
// Oxygen is setting rounded corners only for top-level tooltips
|
||||||
|
if (mApp->proxyStyle()->name() == QLatin1String("oxygen")) {
|
||||||
|
setMask(QzTools::roundedRect(rect(), 4));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void TipLabel::paintEvent(QPaintEvent* ev)
|
void TipLabel::paintEvent(QPaintEvent* ev)
|
||||||
{
|
{
|
||||||
QStylePainter p(this);
|
QStylePainter p(this);
|
||||||
|
@ -39,6 +39,7 @@ public:
|
|||||||
bool eventFilter(QObject* o, QEvent* e);
|
bool eventFilter(QObject* o, QEvent* e);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void resizeEvent(QResizeEvent* ev);
|
||||||
void paintEvent(QPaintEvent* ev);
|
void paintEvent(QPaintEvent* ev);
|
||||||
|
|
||||||
QTimer* m_timer;
|
QTimer* m_timer;
|
||||||
|
@ -352,6 +352,34 @@ QString QzTools::applyDirectionToPage(QString &pageContents)
|
|||||||
return pageContents;
|
return pageContents;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Thanks to http://www.qtcentre.org/threads/3205-Toplevel-widget-with-rounded-corners?p=17492#post17492
|
||||||
|
QRegion QzTools::roundedRect(const QRect &rect, int radius)
|
||||||
|
{
|
||||||
|
QRegion region;
|
||||||
|
|
||||||
|
// middle and borders
|
||||||
|
region += rect.adjusted(radius, 0, -radius, 0);
|
||||||
|
region += rect.adjusted(0, radius, 0, -radius);
|
||||||
|
|
||||||
|
// top left
|
||||||
|
QRect corner(rect.topLeft(), QSize(radius * 2, radius * 2));
|
||||||
|
region += QRegion(corner, QRegion::Ellipse);
|
||||||
|
|
||||||
|
// top right
|
||||||
|
corner.moveTopRight(rect.topRight());
|
||||||
|
region += QRegion(corner, QRegion::Ellipse);
|
||||||
|
|
||||||
|
// bottom left
|
||||||
|
corner.moveBottomLeft(rect.bottomLeft());
|
||||||
|
region += QRegion(corner, QRegion::Ellipse);
|
||||||
|
|
||||||
|
// bottom right
|
||||||
|
corner.moveBottomRight(rect.bottomRight());
|
||||||
|
region += QRegion(corner, QRegion::Ellipse);
|
||||||
|
|
||||||
|
return region;
|
||||||
|
}
|
||||||
|
|
||||||
QIcon QzTools::iconFromFileName(const QString &fileName)
|
QIcon QzTools::iconFromFileName(const QString &fileName)
|
||||||
{
|
{
|
||||||
static QHash<QString, QIcon> iconCache;
|
static QHash<QString, QIcon> iconCache;
|
||||||
@ -730,3 +758,4 @@ QString QzTools::operatingSystem()
|
|||||||
return str;
|
return str;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
#include <QRegion>
|
||||||
|
|
||||||
#include "qz_namespace.h"
|
#include "qz_namespace.h"
|
||||||
|
|
||||||
@ -60,6 +61,7 @@ QString QT_QUPZILLA_EXPORT resolveFromPath(const QString &name);
|
|||||||
QStringList QT_QUPZILLA_EXPORT splitCommandArguments(const QString &command);
|
QStringList QT_QUPZILLA_EXPORT splitCommandArguments(const QString &command);
|
||||||
bool QT_QUPZILLA_EXPORT startExternalProcess(const QString &executable, const QString &args);
|
bool QT_QUPZILLA_EXPORT startExternalProcess(const QString &executable, const QString &args);
|
||||||
|
|
||||||
|
QRegion QT_QUPZILLA_EXPORT roundedRect(const QRect &rect, int radius);
|
||||||
QIcon QT_QUPZILLA_EXPORT iconFromFileName(const QString &fileName);
|
QIcon QT_QUPZILLA_EXPORT iconFromFileName(const QString &fileName);
|
||||||
bool QT_QUPZILLA_EXPORT isUtf8(const char* string);
|
bool QT_QUPZILLA_EXPORT isUtf8(const char* string);
|
||||||
|
|
||||||
|
@ -18,7 +18,10 @@
|
|||||||
* ============================================================ */
|
* ============================================================ */
|
||||||
#include "qupzilla.h"
|
#include "qupzilla.h"
|
||||||
#include "tabpreview.h"
|
#include "tabpreview.h"
|
||||||
|
#include "qztools.h"
|
||||||
#include "webtab.h"
|
#include "webtab.h"
|
||||||
|
#include "mainapplication.h"
|
||||||
|
#include "proxystyle.h"
|
||||||
#include "tabbedwebview.h"
|
#include "tabbedwebview.h"
|
||||||
|
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
@ -227,14 +230,27 @@ void TabPreview::showAnimated()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TabPreview::resizeEvent(QResizeEvent* ev)
|
||||||
|
{
|
||||||
|
QFrame::resizeEvent(ev);
|
||||||
|
|
||||||
|
// Oxygen is setting rounded corners only for top-level tooltips
|
||||||
|
if (mApp->proxyStyle()->name() == QLatin1String("oxygen")) {
|
||||||
|
setMask(QzTools::roundedRect(rect(), 4));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void TabPreview::paintEvent(QPaintEvent* pe)
|
void TabPreview::paintEvent(QPaintEvent* pe)
|
||||||
{
|
{
|
||||||
|
QStylePainter painter(this);
|
||||||
QStyleOptionFrame opt;
|
QStyleOptionFrame opt;
|
||||||
opt.init(this);
|
opt.init(this);
|
||||||
|
|
||||||
QStylePainter painter(this);
|
|
||||||
painter.setClipRegion(pe->region());
|
painter.setClipRegion(pe->region());
|
||||||
painter.drawPrimitive(QStyle::PE_PanelTipLabel, opt);
|
painter.drawPrimitive(QStyle::PE_PanelTipLabel, opt);
|
||||||
|
painter.end();
|
||||||
|
|
||||||
|
QFrame::paintEvent(pe);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabPreview::calculateSteps(const QRect &oldGeometry, const QRect &newGeometry)
|
void TabPreview::calculateSteps(const QRect &oldGeometry, const QRect &newGeometry)
|
||||||
|
@ -57,6 +57,7 @@ private slots:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
void resizeEvent(QResizeEvent* ev);
|
||||||
void paintEvent(QPaintEvent* pe);
|
void paintEvent(QPaintEvent* pe);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Loading…
Reference in New Issue
Block a user