Use translucent/dialogs/background elements where possible
In effects it's obvious that compositing is enabled, so specifying the translucent element is no problem. In tabbox a context property "compositing" is injected which decides whether "translucent" or "opaque" elements should be used. Here the translucent elements are only used if the Blur effect is available - for this a new Effect::Feature Blur is introduced and in addition it is tested whether the theme provides the translucent element. Also the masking is adjusted to ensure that only the shadow is not blurred. Reason for this change is that Plasma theme seems not always to pick up whether compositing is used when used from inside KWin. It does not cover the Desktop Change OSD which uses PlasmaCore.Dialog and there we cannot (yet) inject that we use compositing. Overall I'm quite unhappy with this patch and I do hope we can fix it in the proper place in the lifetime of 4.10 and revert this patch. CCBUG: 311995 REVIEW: 108438
This commit is contained in:
parent
e128d5ad26
commit
0c92e1f30c
15 changed files with 71 additions and 30 deletions
|
@ -55,6 +55,7 @@ public:
|
||||||
bool isCacheTexture() const {
|
bool isCacheTexture() const {
|
||||||
return m_shouldCache;
|
return m_shouldCache;
|
||||||
}
|
}
|
||||||
|
virtual bool provides(Feature feature);
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void slotWindowAdded(KWin::EffectWindow *w);
|
void slotWindowAdded(KWin::EffectWindow *w);
|
||||||
|
@ -94,6 +95,16 @@ private:
|
||||||
typedef QHash<const EffectWindow*, BlurWindowInfo>::iterator CacheEntry;
|
typedef QHash<const EffectWindow*, BlurWindowInfo>::iterator CacheEntry;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline
|
||||||
|
bool BlurEffect::provides(Effect::Feature feature)
|
||||||
|
{
|
||||||
|
if (feature == Blur) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return KWin::Effect::provides(feature);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} // namespace KWin
|
} // namespace KWin
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -41,6 +41,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include <QtGui/QVector2D>
|
#include <QtGui/QVector2D>
|
||||||
#include <Plasma/FrameSvg>
|
#include <Plasma/FrameSvg>
|
||||||
#include <Plasma/PushButton>
|
#include <Plasma/PushButton>
|
||||||
|
#include <Plasma/Theme>
|
||||||
#include <Plasma/WindowEffects>
|
#include <Plasma/WindowEffects>
|
||||||
|
|
||||||
namespace KWin
|
namespace KWin
|
||||||
|
@ -1418,7 +1419,11 @@ DesktopButtonsView::DesktopButtonsView(QWidget* parent)
|
||||||
scene->addItem(form);
|
scene->addItem(form);
|
||||||
|
|
||||||
m_frame = new Plasma::FrameSvg(this);
|
m_frame = new Plasma::FrameSvg(this);
|
||||||
m_frame->setImagePath("dialogs/background");
|
if (Plasma::Theme::defaultTheme()->currentThemeHasImage("translucent/dialogs/background")) {
|
||||||
|
m_frame->setImagePath("translucent/dialogs/background");
|
||||||
|
} else {
|
||||||
|
m_frame->setImagePath("dialogs/background");
|
||||||
|
}
|
||||||
m_frame->setCacheAllRenderedFrames(true);
|
m_frame->setCacheAllRenderedFrames(true);
|
||||||
m_frame->setEnabledBorders(Plasma::FrameSvg::AllBorders);
|
m_frame->setEnabledBorders(Plasma::FrameSvg::AllBorders);
|
||||||
qreal left, top, right, bottom;
|
qreal left, top, right, bottom;
|
||||||
|
@ -1427,7 +1432,6 @@ DesktopButtonsView::DesktopButtonsView(QWidget* parent)
|
||||||
qreal height = form->size().height() + top + bottom;
|
qreal height = form->size().height() + top + bottom;
|
||||||
m_frame->resizeFrame(QSizeF(width, height));
|
m_frame->resizeFrame(QSizeF(width, height));
|
||||||
Plasma::WindowEffects::enableBlurBehind(winId(), true, m_frame->mask());
|
Plasma::WindowEffects::enableBlurBehind(winId(), true, m_frame->mask());
|
||||||
Plasma::WindowEffects::overrideShadow(winId(), true);
|
|
||||||
form->setPos(left, top);
|
form->setPos(left, top);
|
||||||
scene->setSceneRect(QRectF(QPointF(0, 0), QSizeF(width, height)));
|
scene->setSceneRect(QRectF(QPointF(0, 0), QSizeF(width, height)));
|
||||||
setScene(scene);
|
setScene(scene);
|
||||||
|
|
|
@ -35,6 +35,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include <QtGui/QGraphicsLinearLayout>
|
#include <QtGui/QGraphicsLinearLayout>
|
||||||
#include <Plasma/FrameSvg>
|
#include <Plasma/FrameSvg>
|
||||||
#include <Plasma/PushButton>
|
#include <Plasma/PushButton>
|
||||||
|
#include <Plasma/Theme>
|
||||||
#include <Plasma/WindowEffects>
|
#include <Plasma/WindowEffects>
|
||||||
#include <netwm_def.h>
|
#include <netwm_def.h>
|
||||||
|
|
||||||
|
@ -1961,7 +1962,11 @@ CloseWindowView::CloseWindowView(QWidget* parent)
|
||||||
scene->addItem(form);
|
scene->addItem(form);
|
||||||
|
|
||||||
m_frame = new Plasma::FrameSvg(this);
|
m_frame = new Plasma::FrameSvg(this);
|
||||||
m_frame->setImagePath("dialogs/background");
|
if (Plasma::Theme::defaultTheme()->currentThemeHasImage("translucent/dialogs/background")) {
|
||||||
|
m_frame->setImagePath("translucent/dialogs/background");
|
||||||
|
} else {
|
||||||
|
m_frame->setImagePath("dialogs/background");
|
||||||
|
}
|
||||||
m_frame->setCacheAllRenderedFrames(true);
|
m_frame->setCacheAllRenderedFrames(true);
|
||||||
m_frame->setEnabledBorders(Plasma::FrameSvg::AllBorders);
|
m_frame->setEnabledBorders(Plasma::FrameSvg::AllBorders);
|
||||||
qreal left, top, right, bottom;
|
qreal left, top, right, bottom;
|
||||||
|
@ -1970,7 +1975,6 @@ CloseWindowView::CloseWindowView(QWidget* parent)
|
||||||
qreal height = form->size().height() + top + bottom;
|
qreal height = form->size().height() + top + bottom;
|
||||||
m_frame->resizeFrame(QSizeF(width, height));
|
m_frame->resizeFrame(QSizeF(width, height));
|
||||||
Plasma::WindowEffects::enableBlurBehind(winId(), true, m_frame->mask());
|
Plasma::WindowEffects::enableBlurBehind(winId(), true, m_frame->mask());
|
||||||
Plasma::WindowEffects::overrideShadow(winId(), true);
|
|
||||||
form->setPos(left, top);
|
form->setPos(left, top);
|
||||||
scene->setSceneRect(QRectF(QPointF(0, 0), QSizeF(width, height)));
|
scene->setSceneRect(QRectF(QPointF(0, 0), QSizeF(width, height)));
|
||||||
setScene(scene);
|
setScene(scene);
|
||||||
|
|
|
@ -324,7 +324,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Feature {
|
enum Feature {
|
||||||
Nothing = 0, Resize, GeometryTip, Outline, ScreenInversion
|
Nothing = 0, Resize, GeometryTip, Outline, ScreenInversion, Blur
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -43,6 +43,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
// KWin
|
// KWin
|
||||||
#include "thumbnailitem.h"
|
#include "thumbnailitem.h"
|
||||||
#include <kwindowsystem.h>
|
#include <kwindowsystem.h>
|
||||||
|
#include "../effects.h"
|
||||||
#include "../client.h"
|
#include "../client.h"
|
||||||
#include "../workspace.h"
|
#include "../workspace.h"
|
||||||
|
|
||||||
|
@ -101,6 +102,19 @@ QPixmap ImageProvider::requestPixmap(const QString &id, QSize *size, const QSize
|
||||||
return icon;
|
return icon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool compositing()
|
||||||
|
{
|
||||||
|
#ifndef TABBOX_KCM
|
||||||
|
if (!Workspace::self()->compositing() || !effects) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!static_cast<EffectsHandlerImpl*>(effects)->provides(Effect::Blur)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return Plasma::Theme::defaultTheme()->currentThemeHasImage("translucent/dialogs/background");
|
||||||
|
}
|
||||||
|
|
||||||
DeclarativeView::DeclarativeView(QAbstractItemModel *model, TabBoxConfig::TabBoxMode mode, QWidget *parent)
|
DeclarativeView::DeclarativeView(QAbstractItemModel *model, TabBoxConfig::TabBoxMode mode, QWidget *parent)
|
||||||
: QDeclarativeView(parent)
|
: QDeclarativeView(parent)
|
||||||
, m_model(model)
|
, m_model(model)
|
||||||
|
@ -131,6 +145,7 @@ DeclarativeView::DeclarativeView(QAbstractItemModel *model, TabBoxConfig::TabBox
|
||||||
kdeclarative.setupBindings();
|
kdeclarative.setupBindings();
|
||||||
qmlRegisterType<ThumbnailItem>("org.kde.kwin", 0, 1, "ThumbnailItem");
|
qmlRegisterType<ThumbnailItem>("org.kde.kwin", 0, 1, "ThumbnailItem");
|
||||||
rootContext()->setContextProperty("viewId", static_cast<qulonglong>(winId()));
|
rootContext()->setContextProperty("viewId", static_cast<qulonglong>(winId()));
|
||||||
|
rootContext()->setContextProperty("compositing", compositing());
|
||||||
if (m_mode == TabBoxConfig::ClientTabBox) {
|
if (m_mode == TabBoxConfig::ClientTabBox) {
|
||||||
rootContext()->setContextProperty("clientModel", model);
|
rootContext()->setContextProperty("clientModel", model);
|
||||||
} else if (m_mode == TabBoxConfig::DesktopTabBox) {
|
} else if (m_mode == TabBoxConfig::DesktopTabBox) {
|
||||||
|
@ -173,6 +188,7 @@ void DeclarativeView::showEvent(QShowEvent *event)
|
||||||
item->setProperty("currentIndex", tabBox->first().row());
|
item->setProperty("currentIndex", tabBox->first().row());
|
||||||
connect(item, SIGNAL(currentIndexChanged(int)), SLOT(currentIndexChanged(int)));
|
connect(item, SIGNAL(currentIndexChanged(int)), SLOT(currentIndexChanged(int)));
|
||||||
}
|
}
|
||||||
|
rootContext()->setContextProperty("compositing", compositing());
|
||||||
slotUpdateGeometry();
|
slotUpdateGeometry();
|
||||||
QGraphicsView::showEvent(event);
|
QGraphicsView::showEvent(event);
|
||||||
}
|
}
|
||||||
|
@ -194,10 +210,9 @@ void DeclarativeView::resizeEvent(QResizeEvent *event)
|
||||||
m_frame->setImagePath(maskImagePath);
|
m_frame->setImagePath(maskImagePath);
|
||||||
m_frame->resizeFrame(QSizeF(maskWidth, maskHeight));
|
m_frame->resizeFrame(QSizeF(maskWidth, maskHeight));
|
||||||
QRegion mask = m_frame->mask().translated(maskLeftMargin, maskTopMargin);
|
QRegion mask = m_frame->mask().translated(maskLeftMargin, maskTopMargin);
|
||||||
if (Plasma::Theme::defaultTheme()->windowTranslucencyEnabled()) {
|
if (compositing()) {
|
||||||
// blur background
|
// blur background
|
||||||
Plasma::WindowEffects::enableBlurBehind(winId(), true, mask);
|
Plasma::WindowEffects::enableBlurBehind(winId(), true, mask);
|
||||||
Plasma::WindowEffects::overrideShadow(winId(), true);
|
|
||||||
clearMask();
|
clearMask();
|
||||||
} else {
|
} else {
|
||||||
// do not trim to mask with compositing enabled, otherwise shadows are cropped
|
// do not trim to mask with compositing enabled, otherwise shadows are cropped
|
||||||
|
|
|
@ -23,6 +23,7 @@ install( FILES clients/window_strip/metadata.desktop DESTINATION ${SERVICES_INST
|
||||||
|
|
||||||
install (FILES IconTabBox.qml ShadowedSvgItem.qml DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME}/tabbox/big_icons/contents/ui)
|
install (FILES IconTabBox.qml ShadowedSvgItem.qml DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME}/tabbox/big_icons/contents/ui)
|
||||||
install (FILES IconTabBox.qml ShadowedSvgItem.qml DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME}/tabbox/small_icons/contents/ui)
|
install (FILES IconTabBox.qml ShadowedSvgItem.qml DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME}/tabbox/small_icons/contents/ui)
|
||||||
|
install (FILES ShadowedSvgItem.qml DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME}/tabbox/)
|
||||||
install (FILES ShadowedSvgItem.qml DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME}/tabbox/compact/contents/ui)
|
install (FILES ShadowedSvgItem.qml DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME}/tabbox/compact/contents/ui)
|
||||||
install (FILES ShadowedSvgItem.qml DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME}/tabbox/informative/contents/ui)
|
install (FILES ShadowedSvgItem.qml DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME}/tabbox/informative/contents/ui)
|
||||||
install (FILES ShadowedSvgItem.qml DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME}/tabbox/present_windows/contents/ui)
|
install (FILES ShadowedSvgItem.qml DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME}/tabbox/present_windows/contents/ui)
|
||||||
|
|
|
@ -22,24 +22,26 @@ import QtQuick 1.0
|
||||||
import org.kde.plasma.core 0.1 as PlasmaCore
|
import org.kde.plasma.core 0.1 as PlasmaCore
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
property double leftMargin: background.margins.left + shadow.margins.left
|
property double leftMargin: shadow.margins.left + background.margins.left
|
||||||
property double topMargin: background.margins.top + shadow.margins.top
|
property double topMargin: shadow.margins.top + background.margins.top
|
||||||
property double rightMargin: background.margins.right + shadow.margins.right
|
property double rightMargin: shadow.margins.right + background.margins.right
|
||||||
property double bottomMargin: background.margins.bottom + shadow.margins.bottom
|
property double bottomMargin: shadow.margins.bottom + background.margins.bottom
|
||||||
property double centerWidth: background.width
|
property double centerWidth: shadow.width - shadow.margins.left - shadow.margins.right
|
||||||
property double centerHeight: background.height
|
property double centerHeight: shadow.height - shadow.margins.bottom - shadow.margins.top
|
||||||
property int centerTopMargin: shadow.margins.top
|
property int centerTopMargin: shadow.margins.top
|
||||||
property int centerLeftMargin: shadow.margins.left
|
property int centerLeftMargin: shadow.margins.left
|
||||||
|
property alias maskImagePath: shadow.imagePath
|
||||||
|
|
||||||
PlasmaCore.FrameSvgItem {
|
PlasmaCore.FrameSvgItem {
|
||||||
id: shadow
|
id: shadow
|
||||||
imagePath: "dialogs/background"
|
imagePath: (compositing ? "translucent" : "opaque") + "/dialogs/background"
|
||||||
prefix: "shadow"
|
prefix: "shadow"
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
PlasmaCore.FrameSvgItem {
|
PlasmaCore.FrameSvgItem {
|
||||||
id: background
|
id: background
|
||||||
imagePath: "dialogs/background"
|
imagePath: shadow.imagePath
|
||||||
|
visible: false
|
||||||
anchors {
|
anchors {
|
||||||
fill: parent
|
fill: parent
|
||||||
leftMargin: shadow.margins.left
|
leftMargin: shadow.margins.left
|
||||||
|
|
|
@ -30,7 +30,7 @@ Item {
|
||||||
property int optimalHeight: icons.iconSize + icons.margins.top + icons.margins.bottom + background.topMargin + background.bottomMargin + 40
|
property int optimalHeight: icons.iconSize + icons.margins.top + icons.margins.bottom + background.topMargin + background.bottomMargin + 40
|
||||||
property bool canStretchX: false
|
property bool canStretchX: false
|
||||||
property bool canStretchY: false
|
property bool canStretchY: false
|
||||||
property string maskImagePath: "dialogs/background"
|
property string maskImagePath: background.maskImagePath
|
||||||
property double maskWidth: background.centerWidth
|
property double maskWidth: background.centerWidth
|
||||||
property double maskHeight: background.centerHeight
|
property double maskHeight: background.centerHeight
|
||||||
property int maskTopMargin: background.centerTopMargin
|
property int maskTopMargin: background.centerTopMargin
|
||||||
|
|
|
@ -31,7 +31,7 @@ Item {
|
||||||
property int optimalHeight: compactListView.rowHeight * compactListView.count + background.topMargin + background.bottomMargin
|
property int optimalHeight: compactListView.rowHeight * compactListView.count + background.topMargin + background.bottomMargin
|
||||||
property bool canStretchX: true
|
property bool canStretchX: true
|
||||||
property bool canStretchY: false
|
property bool canStretchY: false
|
||||||
property string maskImagePath: "dialogs/background"
|
property string maskImagePath: background.maskImagePath
|
||||||
property double maskWidth: background.centerWidth
|
property double maskWidth: background.centerWidth
|
||||||
property double maskHeight: background.centerHeight
|
property double maskHeight: background.centerHeight
|
||||||
property int maskTopMargin: background.centerTopMargin
|
property int maskTopMargin: background.centerTopMargin
|
||||||
|
|
|
@ -32,7 +32,7 @@ Item {
|
||||||
property int optimalHeight: listView.rowHeight * listView.count + background.topMargin + background.bottomMargin
|
property int optimalHeight: listView.rowHeight * listView.count + background.topMargin + background.bottomMargin
|
||||||
property bool canStretchX: true
|
property bool canStretchX: true
|
||||||
property bool canStretchY: false
|
property bool canStretchY: false
|
||||||
property string maskImagePath: "dialogs/background"
|
property string maskImagePath: background.maskImagePath
|
||||||
property double maskWidth: background.centerWidth
|
property double maskWidth: background.centerWidth
|
||||||
property double maskHeight: background.centerHeight
|
property double maskHeight: background.centerHeight
|
||||||
property int maskTopMargin: background.centerTopMargin
|
property int maskTopMargin: background.centerTopMargin
|
||||||
|
|
|
@ -30,7 +30,7 @@ Item {
|
||||||
property int optimalHeight: 0.9*screenHeight
|
property int optimalHeight: 0.9*screenHeight
|
||||||
property int imagePathPrefix: (new Date()).getTime()
|
property int imagePathPrefix: (new Date()).getTime()
|
||||||
property int standardMargin: 2
|
property int standardMargin: 2
|
||||||
property string maskImagePath: "dialogs/background"
|
property string maskImagePath: background.maskImagePath
|
||||||
property double maskWidth: background.centerWidth
|
property double maskWidth: background.centerWidth
|
||||||
property double maskHeight: background.centerHeight
|
property double maskHeight: background.centerHeight
|
||||||
property int maskTopMargin: background.centerTopMargin
|
property int maskTopMargin: background.centerTopMargin
|
||||||
|
|
|
@ -30,7 +30,7 @@ Item {
|
||||||
property int optimalHeight: icons.iconSize + icons.margins.top + icons.margins.bottom + background.topMargin + background.bottomMargin + 40
|
property int optimalHeight: icons.iconSize + icons.margins.top + icons.margins.bottom + background.topMargin + background.bottomMargin + 40
|
||||||
property bool canStretchX: false
|
property bool canStretchX: false
|
||||||
property bool canStretchY: false
|
property bool canStretchY: false
|
||||||
property string maskImagePath: "dialogs/background"
|
property string maskImagePath: background.maskImagePath
|
||||||
property double maskWidth: background.centerWidth
|
property double maskWidth: background.centerWidth
|
||||||
property double maskHeight: background.centerHeight
|
property double maskHeight: background.centerHeight
|
||||||
property int maskTopMargin: background.centerTopMargin
|
property int maskTopMargin: background.centerTopMargin
|
||||||
|
|
|
@ -30,7 +30,7 @@ Item {
|
||||||
property int optimalHeight: textListView.rowHeight * textListView.count + background.topMargin + background.bottomMargin
|
property int optimalHeight: textListView.rowHeight * textListView.count + background.topMargin + background.bottomMargin
|
||||||
property bool canStretchX: true
|
property bool canStretchX: true
|
||||||
property bool canStretchY: false
|
property bool canStretchY: false
|
||||||
property string maskImagePath: "dialogs/background"
|
property string maskImagePath: background.maskImagePath
|
||||||
property double maskWidth: background.centerWidth
|
property double maskWidth: background.centerWidth
|
||||||
property double maskHeight: background.centerHeight
|
property double maskHeight: background.centerHeight
|
||||||
property int maskTopMargin: background.centerTopMargin
|
property int maskTopMargin: background.centerTopMargin
|
||||||
|
|
|
@ -32,7 +32,7 @@ Item {
|
||||||
property int optimalHeight: thumbnailListView.thumbnailWidth*(1.0/screenFactor) + hoverItem.margins.top + hoverItem.margins.bottom + background.topMargin + background.bottomMargin + 40
|
property int optimalHeight: thumbnailListView.thumbnailWidth*(1.0/screenFactor) + hoverItem.margins.top + hoverItem.margins.bottom + background.topMargin + background.bottomMargin + 40
|
||||||
property bool canStretchX: false
|
property bool canStretchX: false
|
||||||
property bool canStretchY: false
|
property bool canStretchY: false
|
||||||
property string maskImagePath: "dialogs/background"
|
property string maskImagePath: background.maskImagePath
|
||||||
property double maskWidth: background.centerWidth
|
property double maskWidth: background.centerWidth
|
||||||
property double maskHeight: background.centerHeight
|
property double maskHeight: background.centerHeight
|
||||||
property int maskTopMargin: background.centerTopMargin
|
property int maskTopMargin: background.centerTopMargin
|
||||||
|
|
|
@ -28,9 +28,14 @@ Item {
|
||||||
property bool allDesktops: true
|
property bool allDesktops: true
|
||||||
property string longestCaption: ""
|
property string longestCaption: ""
|
||||||
property int optimalWidth: listView.maxRowWidth
|
property int optimalWidth: listView.maxRowWidth
|
||||||
property int optimalHeight: listView.rowHeight * listView.count + background.margins.top + background.margins.bottom
|
property int optimalHeight: listView.rowHeight * listView.count + background.topMargin + background.bottomMargin
|
||||||
property bool canStretchX: true
|
property bool canStretchX: true
|
||||||
property bool canStretchY: false
|
property bool canStretchY: false
|
||||||
|
property string maskImagePath: background.maskImagePath
|
||||||
|
property double maskWidth: background.centerWidth
|
||||||
|
property double maskHeight: background.centerHeight
|
||||||
|
property int maskTopMargin: background.centerTopMargin
|
||||||
|
property int maskLeftMargin: background.centerLeftMargin
|
||||||
width: Math.min(Math.max(screenWidth * 0.2, optimalWidth), screenWidth * 0.8)
|
width: Math.min(Math.max(screenWidth * 0.2, optimalWidth), screenWidth * 0.8)
|
||||||
height: Math.min(optimalHeight, screenHeight * 0.8)
|
height: Math.min(optimalHeight, screenHeight * 0.8)
|
||||||
|
|
||||||
|
@ -57,10 +62,9 @@ Item {
|
||||||
visible: false
|
visible: false
|
||||||
}
|
}
|
||||||
|
|
||||||
PlasmaCore.FrameSvgItem {
|
ShadowedSvgItem {
|
||||||
id: background
|
id: background
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
imagePath: "dialogs/background"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// delegate
|
// delegate
|
||||||
|
@ -120,7 +124,7 @@ Item {
|
||||||
listView, "calculateMaxRowWidth");
|
listView, "calculateMaxRowWidth");
|
||||||
width = Math.max(textElement.width, width);
|
width = Math.max(textElement.width, width);
|
||||||
textElement.destroy();
|
textElement.destroy();
|
||||||
return width + 32 + hoverItem.margins.right + hoverItem.margins.left + background.margins.left + background.margins.right;
|
return width + 32 + hoverItem.margins.right + hoverItem.margins.left + background.leftMargin + background.rightMargin;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Calculates the height of one row based on the text height and icon size.
|
* Calculates the height of one row based on the text height and icon size.
|
||||||
|
@ -150,10 +154,10 @@ Item {
|
||||||
property int imageId: 0
|
property int imageId: 0
|
||||||
anchors {
|
anchors {
|
||||||
fill: parent
|
fill: parent
|
||||||
topMargin: background.margins.top
|
topMargin: background.topMargin
|
||||||
leftMargin: background.margins.left
|
leftMargin: background.leftMargin
|
||||||
rightMargin: background.margins.right
|
rightMargin: background.rightMargin
|
||||||
bottomMargin: background.margins.bottom
|
bottomMargin: background.bottomMargin
|
||||||
}
|
}
|
||||||
clip: true
|
clip: true
|
||||||
delegate: listDelegate
|
delegate: listDelegate
|
||||||
|
|
Loading…
Reference in a new issue