mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
ebbe01a359
This is a feature that I never fully understood, but that apparently is causing the drawers to show up for people who are just trying to interact with the action button. The approach here is really drastic and crude, but in my testing it seems to work. Reported-by: Hartley Horwitz <hhrwtz@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
345 lines
16 KiB
Diff
345 lines
16 KiB
Diff
diff -rwu ../kirigami/src/controls/GlobalDrawer.qml ./src/controls/GlobalDrawer.qml
|
|
--- ../kirigami/src/controls/GlobalDrawer.qml 2019-10-10 17:13:41.384333413 -0700
|
|
+++ ./src/controls/GlobalDrawer.qml 2019-10-11 19:44:58.988220651 -0700
|
|
@@ -215,6 +215,20 @@
|
|
readonly property Action currentSubMenu: stackView.currentItem ? stackView.currentItem.current: null
|
|
|
|
/**
|
|
+ * scrollViewItem: ScrollView
|
|
+ *
|
|
+ * Points to the internal ScrollView so the caller can implement the Back button
|
|
+ */
|
|
+ readonly property Item scrollViewItem: scrollView
|
|
+
|
|
+ /**
|
|
+ * pop: function
|
|
+ *
|
|
+ * Point to the pop function of the stackView inside the scrollView in order to be able to implement the Back button in the caller
|
|
+ */
|
|
+ function pop() { scrollView.pop }
|
|
+
|
|
+ /**
|
|
* Notifies that the banner has been clicked
|
|
*/
|
|
signal bannerClicked()
|
|
@@ -238,6 +252,7 @@
|
|
anchors.fill: parent
|
|
implicitWidth: Math.min (Units.gridUnit * 20, root.parent.width * 0.8)
|
|
horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
|
|
+ function pop() { stackView.pop() }
|
|
|
|
Flickable {
|
|
id: mainFlickable
|
|
@@ -331,17 +346,13 @@
|
|
ColumnLayout {
|
|
id: topContent
|
|
spacing: 0
|
|
- Layout.alignment: Qt.AlignHCenter
|
|
- Layout.leftMargin: root.leftPadding
|
|
- Layout.rightMargin: root.rightPadding
|
|
Layout.bottomMargin: Units.smallSpacing
|
|
- Layout.topMargin: root.topPadding
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
Layout.preferredHeight: implicitHeight * opacity
|
|
//NOTE: why this? just Layout.fillWidth: true doesn't seem sufficient
|
|
//as items are added only after this column creation
|
|
- Layout.minimumWidth: parent.width - root.leftPadding - root.rightPadding
|
|
+ Layout.minimumWidth: parent.width
|
|
visible: children.length > 0 && childrenRect.height > 0 && opacity > 0
|
|
opacity: !root.collapsed || showTopContentWhenCollapsed
|
|
Behavior on opacity {
|
|
@@ -435,7 +446,7 @@
|
|
easing.type: Easing.InOutQuad
|
|
}
|
|
}
|
|
-
|
|
+/*
|
|
BasicListItem {
|
|
id: backItem
|
|
visible: level > 0
|
|
@@ -454,7 +465,7 @@
|
|
sequence: backItem.MnemonicData.sequence
|
|
onActivated: backItem.clicked()
|
|
}
|
|
-
|
|
+*/
|
|
Repeater {
|
|
id: actionsRepeater
|
|
model: root.actions
|
|
diff -rwu ../kirigami/src/controls/private/GlobalDrawerActionItem.qml ./src/controls/private/GlobalDrawerActionItem.qml
|
|
--- ../kirigami/src/controls/private/GlobalDrawerActionItem.qml 2019-10-10 17:13:41.387666766 -0700
|
|
+++ ./src/controls/private/GlobalDrawerActionItem.qml 2019-10-11 19:44:58.988220651 -0700
|
|
@@ -94,7 +94,7 @@
|
|
Layout.preferredHeight: !root.collapsed ? Units.iconSizes.smallMedium : Units.iconSizes.small/2
|
|
selected: listItem.checked || listItem.pressed
|
|
Layout.preferredWidth: Layout.preferredHeight
|
|
- source: (LayoutMirroring.enabled ? "go-next-symbolic-rtl" : "go-next-symbolic")
|
|
+ source: (LayoutMirroring.enabled ? ":/go-next-symbolic-rtl" : ":/go-next-symbolic")
|
|
visible: (!isExpandible || root.collapsed) && !listItem.isSeparator && modelData.hasOwnProperty("children") && modelData.children!==undefined && modelData.children.length > 0
|
|
}
|
|
data: [
|
|
diff -rwu ../kirigami/src/controls/private/globaltoolbar/BreadcrumbControl.qml ./src/controls/private/globaltoolbar/BreadcrumbControl.qml
|
|
--- ../kirigami/src/controls/private/globaltoolbar/BreadcrumbControl.qml 2019-10-10 17:13:41.391000120 -0700
|
|
+++ ./src/controls/private/globaltoolbar/BreadcrumbControl.qml 2019-10-11 22:59:45.248031517 -0700
|
|
@@ -82,7 +81,7 @@
|
|
Kirigami.Heading {
|
|
Layout.leftMargin: Kirigami.Units.largeSpacing
|
|
font.pointSize: -1
|
|
- font.pixelSize: Math.max(1, mainLayout.height * 0.6)
|
|
+ font.pixelSize: Math.max(1, Kirigami.Units.defaultFontSize)
|
|
color: Kirigami.Theme.textColor
|
|
verticalAlignment: Text.AlignVCenter
|
|
wrapMode: Text.NoWrap
|
|
diff -rwu ../kirigami/src/controls/private/globaltoolbar/PageRowGlobalToolBarUI.qml ./src/controls/private/globaltoolbar/PageRowGlobalToolBarUI.qml
|
|
--- ../kirigami/src/controls/private/globaltoolbar/PageRowGlobalToolBarUI.qml 2019-10-10 17:13:41.391000120 -0700
|
|
+++ ./src/controls/private/globaltoolbar/PageRowGlobalToolBarUI.qml 2019-10-12 10:36:39.396460010 -0700
|
|
@@ -36,15 +36,23 @@
|
|
readonly property Item currentItem: layerIsMainRow ? root.currentItem : root.layers.currentItem
|
|
|
|
height: visible ? implicitHeight : 0
|
|
+
|
|
minimumHeight: globalToolBar.minimumHeight
|
|
preferredHeight: globalToolBar.preferredHeight
|
|
maximumHeight: globalToolBar.maximumHeight
|
|
separatorVisible: globalToolBar.separatorVisible
|
|
+ background: Rectangle { color: subsurfaceTheme.primaryColor }
|
|
|
|
RowLayout {
|
|
anchors.fill: parent
|
|
spacing: 0
|
|
-
|
|
+ // I can't make the layout work without this invisible rectangle to anchor things on
|
|
+ Rectangle {
|
|
+ id: correct
|
|
+ height: parent.height
|
|
+ width: 0
|
|
+ color: "transparent"
|
|
+ }
|
|
Item {
|
|
id: leftHandleAnchor
|
|
visible: (typeof applicationWindow() !== "undefined" && applicationWindow().globalDrawer && applicationWindow().globalDrawer.enabled && applicationWindow().globalDrawer.handleVisible &&
|
|
@@ -60,20 +68,21 @@
|
|
RowLayout {
|
|
id: buttonsLayout
|
|
Layout.fillHeight: true
|
|
-
|
|
Layout.leftMargin: leftHandleAnchor.visible ? Kirigami.Units.smallSpacing : 0
|
|
-
|
|
+ Layout.alignment: Qt.AlignTop | Qt.AlignVCenter
|
|
visible: (globalToolBar.showNavigationButtons != Kirigami.ApplicationHeaderStyle.NoNavigationButtons || root.layers.depth > 1) && (globalToolBar.actualStyle != Kirigami.ApplicationHeaderStyle.None)
|
|
|
|
Layout.maximumWidth: visibleChildren.length > 0 ? implicitWidth : 0
|
|
-
|
|
TemplatesPrivate.BackButton {
|
|
id: backButton
|
|
Layout.leftMargin: leftHandleAnchor.visible ? 0 : Kirigami.Units.smallSpacing
|
|
Layout.preferredWidth: height
|
|
+ Layout.topMargin: 0
|
|
+ Layout.maximumHeight: correct.height
|
|
}
|
|
TemplatesPrivate.ForwardButton {
|
|
Layout.preferredWidth: height
|
|
+ Layout.maximumHeight: correct.height
|
|
}
|
|
}
|
|
|
|
@@ -110,6 +119,6 @@
|
|
Layout.preferredWidth: height
|
|
}
|
|
}
|
|
- background.opacity: breadcrumbLoader.opacity
|
|
+ //background.opacity: breadcrumbLoader.opacity
|
|
}
|
|
|
|
diff -rwu ../kirigami/src/controls/templates/private/BackButton.qml ./src/controls/templates/private/BackButton.qml
|
|
--- ../kirigami/src/controls/templates/private/BackButton.qml 2019-10-10 17:13:41.391000120 -0700
|
|
+++ ./src/controls/templates/private/BackButton.qml 2019-10-12 10:32:00.517728443 -0700
|
|
@@ -27,6 +27,7 @@
|
|
id: button
|
|
|
|
icon.name: (LayoutMirroring.enabled ? "go-previous-symbolic-rtl" : "go-previous-symbolic")
|
|
+ icon.source: (LayoutMirroring.enabled ? "go-previous-symbolic-rtl" : "go-previous-symbolic")
|
|
|
|
enabled: applicationWindow().pageStack.layers.depth > 1 || (applicationWindow().pageStack.depth > 1 && (applicationWindow().pageStack.currentIndex > 0 || applicationWindow().pageStack.contentItem.contentX > 0))
|
|
|
|
diff -rwu ../kirigami/src/controls/templates/private/ForwardButton.qml ./src/controls/templates/private/ForwardButton.qml
|
|
--- ../kirigami/src/controls/templates/private/ForwardButton.qml 2019-10-10 17:13:41.391000120 -0700
|
|
+++ ./src/controls/templates/private/ForwardButton.qml 2019-10-11 19:44:58.988220651 -0700
|
|
@@ -27,6 +27,7 @@
|
|
id: button
|
|
|
|
icon.name: (LayoutMirroring.enabled ? "go-next-symbolic-rtl" : "go-next-symbolic")
|
|
+ icon.source: (LayoutMirroring.enabled ? "go-next-symbolic-rtl" : "go-next-symbolic")
|
|
|
|
enabled: applicationWindow().pageStack.currentIndex < applicationWindow().pageStack.depth-1
|
|
|
|
diff -rwu ../kirigami/src/controls/Units.qml ./src/controls/Units.qml
|
|
--- ../kirigami/src/controls/Units.qml 2019-10-10 17:13:41.387666766 -0700
|
|
+++ ./src/controls/Units.qml 2019-10-11 20:48:07.216139938 -0700
|
|
@@ -113,6 +113,11 @@
|
|
readonly property int wheelScrollLines: 3
|
|
|
|
/**
|
|
+ * Use this to hardcode the font size of the global toolbar that Kirigami gets wrong
|
|
+ */
|
|
+ property double defaultFontSize: fontMetrics.font.pixelSize
|
|
+
|
|
+ /**
|
|
* metrics used by the default font
|
|
*/
|
|
property variant fontMetrics: TextMetrics {
|
|
diff -rwu ../kirigami/src/kirigamiplugin.cpp ./src/kirigamiplugin.cpp
|
|
--- ../kirigami/src/kirigamiplugin.cpp 2019-10-10 17:13:41.391000120 -0700
|
|
+++ ./src/kirigamiplugin.cpp 2019-10-11 19:44:58.991554017 -0700
|
|
@@ -41,7 +41,7 @@
|
|
|
|
//Q_INIT_RESOURCE(kirigami);
|
|
#ifdef KIRIGAMI_BUILD_TYPE_STATIC
|
|
-#include <qrc_kirigami.cpp>
|
|
+//#include <qrc_kirigami.cpp>
|
|
#endif
|
|
|
|
QUrl KirigamiPlugin::componentUrl(const QString &fileName) const
|
|
diff -rwu ../kirigami/src/controls/private/ActionButton.qml ./src/controls/private/ActionButton.qml
|
|
--- ../kirigami/src/controls/private/ActionButton.qml 2019-10-11 14:00:51.783839545 -0400
|
|
+++ ./src/controls/private/ActionButton.qml 2019-10-27 17:12:04.339302719 -0400
|
|
@@ -70,12 +70,12 @@
|
|
|
|
anchors.bottom: edgeMouseArea.bottom
|
|
|
|
- implicitWidth: implicitHeight + Units.iconSizes.smallMedium*2 + Units.gridUnit
|
|
+ implicitWidth: implicitHeight + Units.iconSizes.smallMedium*4 + Units.gridUnit
|
|
implicitHeight: Units.iconSizes.medium + Units.largeSpacing * 2
|
|
|
|
|
|
onXChanged: {
|
|
- if (mouseArea.pressed || edgeMouseArea.pressed || fakeContextMenuButton.pressed) {
|
|
+ if (0 && (mouseArea.pressed || edgeMouseArea.pressed || fakeContextMenuButton.pressed)) {
|
|
if (root.hasGlobalDrawer && globalDrawer.enabled && globalDrawer.modal) {
|
|
globalDrawer.peeking = true;
|
|
globalDrawer.visible = true;
|
|
@@ -97,13 +97,13 @@
|
|
property bool internalVisibility: (!root.hasApplicationWindow || (applicationWindow().controlsVisible && applicationWindow().height > root.height*2)) && (root.action === null || root.action.visible === undefined || root.action.visible)
|
|
preventStealing: true
|
|
|
|
- drag {
|
|
- target: button
|
|
- //filterChildren: true
|
|
- axis: Drag.XAxis
|
|
- minimumX: root.hasContextDrawer && contextDrawer.enabled && contextDrawer.modal ? 0 : root.width/2 - button.width/2
|
|
- maximumX: root.hasGlobalDrawer && globalDrawer.enabled && globalDrawer.modal ? root.width : root.width/2 - button.width/2
|
|
- }
|
|
+// drag {
|
|
+// target: button
|
|
+// //filterChildren: true
|
|
+// axis: Drag.XAxis
|
|
+// minimumX: root.hasContextDrawer && contextDrawer.enabled && contextDrawer.modal ? 0 : root.width/2 - button.width/2
|
|
+// maximumX: root.hasGlobalDrawer && globalDrawer.enabled && globalDrawer.modal ? root.width : root.width/2 - button.width/2
|
|
+// }
|
|
|
|
property var downTimestamp;
|
|
property int startX
|
|
@@ -147,24 +147,24 @@
|
|
drawerShowAdjust = 0;
|
|
|
|
//project where it would be a full second in the future
|
|
- if (root.hasContextDrawer && root.hasGlobalDrawer && globalDrawer.modal && x + speed > Math.min(root.width/4*3, root.width/2 + globalDrawer.contentItem.width/2)) {
|
|
- globalDrawer.open();
|
|
- contextDrawer.close();
|
|
- } else if (root.hasContextDrawer && x + speed < Math.max(root.width/4, root.width/2 - contextDrawer.contentItem.width/2)) {
|
|
- if (root.hasContextDrawer && contextDrawer.modal) {
|
|
- contextDrawer.open();
|
|
- }
|
|
- if (root.hasGlobalDrawer && globalDrawer.modal) {
|
|
- globalDrawer.close();
|
|
- }
|
|
- } else {
|
|
- if (root.hasGlobalDrawer && globalDrawer.modal) {
|
|
- globalDrawer.close();
|
|
- }
|
|
- if (root.hasContextDrawer && contextDrawer.modal) {
|
|
- contextDrawer.close();
|
|
- }
|
|
- }
|
|
+// if (root.hasContextDrawer && root.hasGlobalDrawer && globalDrawer.modal && x + speed > Math.min(root.width/4*3, root.width/2 + globalDrawer.contentItem.width/2)) {
|
|
+// globalDrawer.open();
|
|
+// contextDrawer.close();
|
|
+// } else if (root.hasContextDrawer && x + speed < Math.max(root.width/4, root.width/2 - contextDrawer.contentItem.width/2)) {
|
|
+// if (root.hasContextDrawer && contextDrawer.modal) {
|
|
+// contextDrawer.open();
|
|
+// }
|
|
+// if (root.hasGlobalDrawer && globalDrawer.modal) {
|
|
+// globalDrawer.close();
|
|
+// }
|
|
+// } else {
|
|
+// if (root.hasGlobalDrawer && globalDrawer.modal) {
|
|
+// globalDrawer.close();
|
|
+// }
|
|
+// if (root.hasContextDrawer && contextDrawer.modal) {
|
|
+// contextDrawer.close();
|
|
+// }
|
|
+// }
|
|
//Don't rely on native onClicked, but fake it here:
|
|
//Qt.startDragDistance is not adapted to devices dpi in case
|
|
//of Android, so consider the button "clicked" when:
|
|
@@ -201,10 +201,10 @@
|
|
}
|
|
}
|
|
|
|
- onPositionChanged: {
|
|
- drawerShowAdjust = Math.min(0.3, Math.max(0, (startMouseY - mouse.y)/(Units.gridUnit*15)));
|
|
- button.xChanged();
|
|
- }
|
|
+// onPositionChanged: {
|
|
+// drawerShowAdjust = Math.min(0.3, Math.max(0, (startMouseY - mouse.y)/(Units.gridUnit*15)));
|
|
+// button.xChanged();
|
|
+// }
|
|
onPressAndHold: {
|
|
if (!actionUnderMouse) {
|
|
return;
|
|
@@ -291,7 +291,7 @@
|
|
bottomMargin: Units.smallSpacing
|
|
}
|
|
enabled: root.leftAction && root.leftAction.enabled
|
|
- radius: Units.devicePixelRatio*2
|
|
+ radius: Units.devicePixelRatio*4
|
|
height: Units.iconSizes.smallMedium + Units.smallSpacing * 2
|
|
width: height + (root.action ? Units.gridUnit*2 : 0)
|
|
visible: root.leftAction
|
|
@@ -326,6 +326,17 @@
|
|
margins: Units.smallSpacing * 2
|
|
}
|
|
}
|
|
+ Rectangle {
|
|
+ anchors.left: parent.left
|
|
+ anchors.leftMargin: Units.smallSpacing
|
|
+ anchors.verticalCenter: parent.verticalCenter
|
|
+ width: Units.iconSizes.smallMedium + Units.smallSpacing * 2
|
|
+ height: width
|
|
+ radius: width / 2
|
|
+ color: "transparent"
|
|
+ border.color: Qt.lighter(buttonGraphics.baseColor, 1.1)
|
|
+ border.width: 0.5
|
|
+ }
|
|
}
|
|
//right button
|
|
Rectangle {
|
|
@@ -372,6 +383,17 @@
|
|
margins: Units.smallSpacing * 2
|
|
}
|
|
}
|
|
+ Rectangle {
|
|
+ anchors.right: parent.right
|
|
+ anchors.rightMargin: Units.smallSpacing
|
|
+ anchors.verticalCenter: parent.verticalCenter
|
|
+ width: Units.iconSizes.smallMedium + Units.smallSpacing * 2
|
|
+ height: width
|
|
+ radius: width / 2
|
|
+ color: "transparent"
|
|
+ border.color: Qt.lighter(buttonGraphics.baseColor, 1.1)
|
|
+ border.width: 0.5
|
|
+ }
|
|
}
|
|
}
|
|
|