mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	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
 | |
| +		    }
 | |
|                  }
 | |
|              }
 | |
|  
 |