Merge branch 'work/plasmoidsCanIgnoreMargins'

This commit is contained in:
Niccolò Venerandi 2020-10-09 11:28:39 +02:00
commit 6837f0355a
7 changed files with 80 additions and 106 deletions

View File

@ -25,6 +25,7 @@ T.BusyIndicator {
padding: 0
contentItem: Item {
id: baseItem
/* implicitWidth and implicitHeight won't work unless they come
* from a child of the contentItem. No idea why.
*/
@ -61,7 +62,7 @@ T.BusyIndicator {
to: 360
duration: 2000
loops: Animation.Infinite
running: visible
running: control.running || baseItem.opacity > 0
}
}
}

View File

@ -32,7 +32,7 @@ T.ComboBox {
delegate: ItemDelegate {
width: control.popup.width
text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData
highlighted: mouseArea.pressed ? listView.currentIndex == index : control.highlightedIndex == index
highlighted: control.highlightedIndex == index
property bool separatorVisible: false
}
@ -51,113 +51,55 @@ T.ComboBox {
elementId: "down-arrow"
}
// contentItem: Label {
// text: control.displayText
// font: control.font
// color: theme.buttonTextColor
// horizontalAlignment: Text.AlignLeft
// verticalAlignment: Text.AlignVCenter
// elide: Text.ElideRight
// }
contentItem: MouseArea {
id: mouseArea
anchors.fill: parent
acceptedButtons: Qt.LeftButton
preventStealing: true
property int indexUnderMouse: -1
onWheel: {
if (wheel.pixelDelta.y < 0 || wheel.angleDelta.y < 0) {
control.currentIndex = Math.min(control.currentIndex + 1, delegateModel.count -1);
} else {
control.currentIndex = Math.max(control.currentIndex - 1, 0);
}
control.activated(control.currentIndex);
contentItem: T.TextField {
id: textField
padding: 0
anchors {
fill:parent
leftMargin: control.leftPadding
rightMargin: control.rightPadding
topMargin: control.topPadding
bottomMargin: control.bottomPadding
}
onPressed: {
indexUnderMouse = -1;
listView.currentIndex = control.highlightedIndex
control.down = true;
control.pressed = true;
control.popup.visible = !control.popup.visible;
}
onReleased: {
if (!containsMouse) {
control.down = false;
control.pressed = false;
control.popup.visible = false;
}
if (indexUnderMouse > -1) {
control.currentIndex = indexUnderMouse;
text: control.editable ? control.editText : control.displayText
enabled: control.editable
autoScroll: control.editable
readOnly: control.down || !control.hasOwnProperty("editable") || !control.editable
inputMethodHints: control.inputMethodHints
validator: control.validator
// Work around Qt bug where NativeRendering breaks for non-integer scale factors
// https://bugreports.qt.io/browse/QTBUG-70481
renderType: Screen.devicePixelRatio % 1 !== 0 ? Text.QtRendering : Text.NativeRendering
color: PlasmaCore.ColorScope.textColor
selectionColor: Kirigami.Theme.highlightColor
selectedTextColor: Kirigami.Theme.highlightedTextColor
selectByMouse: !Kirigami.Settings.tabletMode
cursorDelegate: Kirigami.Settings.tabletMode ? mobileCursor : undefined
font: control.font
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
opacity: control.enabled ? 1 : 0.3
onFocusChanged: {
if (focus) {
MobileTextSelection.MobileTextActionsToolBar.controlRoot = textField;
}
}
onCanceled: {
control.down = false;
control.pressed = false;
}
onPositionChanged: {
var pos = listView.mapFromItem(this, mouse.x, mouse.y);
indexUnderMouse = listView.indexAt(pos.x, pos.y);
listView.currentIndex = indexUnderMouse;
controlRoot.activated(indexUnderMouse);
}
Connections {
target: popup
onClosed: {
control.down = false;
control.pressed = false;
}
}
T.TextField {
id: textField
padding: 0
anchors {
fill:parent
leftMargin: control.leftPadding
rightMargin: control.rightPadding
topMargin: control.topPadding
bottomMargin: control.bottomPadding
}
text: control.editable ? control.editText : control.displayText
enabled: control.editable
autoScroll: control.editable
readOnly: control.down || !control.hasOwnProperty("editable") || !control.editable
inputMethodHints: control.inputMethodHints
validator: control.validator
// Work around Qt bug where NativeRendering breaks for non-integer scale factors
// https://bugreports.qt.io/browse/QTBUG-70481
renderType: Screen.devicePixelRatio % 1 !== 0 ? Text.QtRendering : Text.NativeRendering
color: PlasmaCore.ColorScope.textColor
selectionColor: Kirigami.Theme.highlightColor
selectedTextColor: Kirigami.Theme.highlightedTextColor
selectByMouse: !Kirigami.Settings.tabletMode
cursorDelegate: Kirigami.Settings.tabletMode ? mobileCursor : undefined
font: control.font
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
opacity: control.enabled ? 1 : 0.3
onFocusChanged: {
if (focus) {
MobileTextSelection.MobileTextActionsToolBar.controlRoot = textField;
}
}
onTextChanged: MobileTextSelection.MobileTextActionsToolBar.shouldBeVisible = false;
onPressed: MobileTextSelection.MobileTextActionsToolBar.shouldBeVisible = true;
onPressAndHold: {
if (!Kirigami.Settings.tabletMode) {
return;
}
forceActiveFocus();
cursorPosition = positionAt(event.x, event.y);
selectWord();
onTextChanged: MobileTextSelection.MobileTextActionsToolBar.shouldBeVisible = false;
onPressed: MobileTextSelection.MobileTextActionsToolBar.shouldBeVisible = true;
onPressAndHold: {
if (!Kirigami.Settings.tabletMode) {
return;
}
forceActiveFocus();
cursorPosition = positionAt(event.x, event.y);
selectWord();
}
}

View File

@ -421,10 +421,12 @@ Item {
PlasmaComponents3.Label {
id: listItemSubtitle
enabled: false
visible: text.length > 0
font: PlasmaCore.Theme.smallestFont
// Otherwise colored text can be hard to see
opacity: color === PlasmaCore.Theme.textColor ? 0.7 : 1.0
Layout.fillWidth: true
textFormat: listItem.allowStyledText ? Text.StyledText : Text.PlainText

View File

@ -179,7 +179,7 @@ void FrameSvg::resizeFrame(const QSizeF &size)
d->pendingFrameSize = size.toSize();
if (!d->repaintBlocked) {
d->updateFrameData(FrameSvgPrivate::UpdateFrame);
d->updateFrameData(Svg::d->lastModified, FrameSvgPrivate::UpdateFrame);
}
}

View File

@ -51,6 +51,16 @@ public:
Q_ENUM(Constraint)
Q_DECLARE_FLAGS(Constraints, Constraint)
/**
* This enumeration lists the various hints that an applet can pass to its
* constraint regarding the way that it is represented
*/
enum ConstraintHints {
NoHint = 0,
CanFillArea = 1 /**< The applet can fill the area and ignore constraint margins*/
};
Q_ENUM(ConstraintHints)
/**
* The FormFactor enumeration describes how a Plasma::Applet should arrange
* itself. The value is derived from the container managing the Applet

View File

@ -605,6 +605,16 @@ bool AppletInterface::hideOnWindowDeactivate() const
return m_hideOnDeactivate;
}
void AppletInterface::setConstraintHints(Plasma::Types::ConstraintHints hints)
{
m_constraintHints = hints;
}
Plasma::Types::ConstraintHints AppletInterface::constraintHints() const
{
return m_constraintHints;
}
QKeySequence AppletInterface::globalShortcut() const
{
return applet()->globalShortcut();

View File

@ -239,6 +239,11 @@ class AppletInterface : public PlasmaQuick::AppletQuickItem
Q_PROPERTY(bool loading MEMBER m_loading NOTIFY isLoadingChanged)
/**
* When false the plasmoid will ignore the margins when contained in a panel
*/
Q_PROPERTY(Plasma::Types::ConstraintHints constraintHints READ constraintHints WRITE setConstraintHints NOTIFY constraintHintsChanged)
/**
* The metadata of the applet.
* @since 5.73
@ -410,6 +415,8 @@ public:
QString configurationRequiredReason() const;
void setConfigurationRequiredReason(const QString &reason);
Plasma::Types::ConstraintHints constraintHints() const;
void setConstraintHints(Plasma::Types::ConstraintHints constraintHints);
KPluginMetaData metaData() const;
@ -458,6 +465,7 @@ Q_SIGNALS:
void associatedApplicationUrlsChanged();
void availableScreenRegionChanged();
void availableScreenRectChanged();
void constraintHintsChanged();
void userConfiguringChanged();
void globalShortcutChanged();
@ -508,6 +516,7 @@ private:
friend class ContainmentInterface;
//This is used by ContainmentInterface
QPointF m_positionBeforeRemoval;
Plasma::Types::ConstraintHints m_constraintHints = Plasma::Types::ConstraintHints::NoHint;
};
QML_DECLARE_TYPEINFO(AppletInterface, QML_HAS_ATTACHED_PROPERTIES)