1
mirror of https://invent.kde.org/network/falkon.git synced 2024-09-21 17:52:10 +02:00

ClickableLabel: Fix resizing icon with label

This commit is contained in:
David Rosca 2016-01-24 13:03:16 +01:00
parent be2d14dcb8
commit 2a5c6ecfa1
2 changed files with 32 additions and 14 deletions

View File

@ -24,32 +24,46 @@ ClickableLabel::ClickableLabel(QWidget* parent)
{
}
QString ClickableLabel::themeIcon() const
{
return m_themeIcon;
}
void ClickableLabel::setThemeIcon(const QString &name)
{
QIcon icon = QIcon::fromTheme(name);
if (!icon.isNull()) {
adjustSize();
setPixmap(icon.pixmap(size()));
}
m_themeIcon = name;
updateIcon();
}
QIcon ClickableLabel::fallbackIcon() const
{
return pixmap() ? QIcon(*pixmap()) : QIcon();
return m_fallbackIcon;
}
void ClickableLabel::setFallbackIcon(const QIcon &image)
void ClickableLabel::setFallbackIcon(const QIcon &fallbackIcon)
{
if (!pixmap() || pixmap()->isNull()) {
adjustSize();
setPixmap(image.pixmap(size()));
m_fallbackIcon = fallbackIcon;
updateIcon();
}
void ClickableLabel::updateIcon()
{
if (!m_themeIcon.isEmpty()) {
const QIcon icon = QIcon::fromTheme(m_themeIcon);
if (!icon.isNull()) {
setPixmap(icon.pixmap(size()));
return;
}
}
if (!m_fallbackIcon.isNull())
setPixmap(m_fallbackIcon.pixmap(size()));
}
QString ClickableLabel::themeIcon() const
void ClickableLabel::resizeEvent(QResizeEvent *ev)
{
return m_themeIcon;
QLabel::resizeEvent(ev);
updateIcon();
}
void ClickableLabel::mouseReleaseEvent(QMouseEvent* ev)

View File

@ -41,16 +41,20 @@ public:
void setThemeIcon(const QString &name);
QIcon fallbackIcon() const;
void setFallbackIcon(const QIcon &image);
void setFallbackIcon(const QIcon &fallbackIcon);
signals:
void clicked(QPoint);
void middleClicked(QPoint);
private:
void updateIcon();
void resizeEvent(QResizeEvent *ev);
void mouseReleaseEvent(QMouseEvent* ev);
QString m_themeIcon;
QIcon m_fallbackIcon;
};