Improving characters choosing popup.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
+ No longer covering the input + No longer cut off when editing the name + Improved keyboard navigation.
This commit is contained in:
parent
f5b489ef44
commit
da8aa59b0a
3 changed files with 71 additions and 30 deletions
|
@ -16,8 +16,9 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import QtQuick.Controls
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQml.Models
|
||||
|
||||
/*!
|
||||
\qmltype InsertCharacter
|
||||
|
@ -42,15 +43,18 @@ Popup {
|
|||
*/
|
||||
property string category: 'all'
|
||||
|
||||
width: 280
|
||||
height: Math.ceil(insertGrid.insertChars.length/insertGrid.columns)*(width/insertGrid.columns)+5
|
||||
width: insertGrid.width + 10
|
||||
height: insertGrid.height + 10
|
||||
modal: true
|
||||
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
|
||||
|
||||
Grid {
|
||||
GridView {
|
||||
id: insertGrid
|
||||
width: parent.width
|
||||
columns: 7
|
||||
width: 280
|
||||
height: Math.ceil(model.count/columns)*cellHeight
|
||||
property int columns: 7
|
||||
cellWidth: width/columns
|
||||
cellHeight: cellWidth
|
||||
|
||||
property var insertCharsExpression: [
|
||||
"∞","π","¹","²","³","⁴","⁵",
|
||||
|
@ -86,21 +90,34 @@ Popup {
|
|||
}[insertPopup.category]
|
||||
}
|
||||
|
||||
Repeater {
|
||||
model: parent.insertChars.length
|
||||
|
||||
Button {
|
||||
id: insertBtn
|
||||
width: insertGrid.width/insertGrid.columns
|
||||
height: width
|
||||
text: insertGrid.insertChars[modelData]
|
||||
flat: text == " "
|
||||
font.pixelSize: 18
|
||||
|
||||
onClicked: {
|
||||
selected(text)
|
||||
}
|
||||
model: ListModel {}
|
||||
|
||||
delegate: Button {
|
||||
id: insertBtn
|
||||
width: insertGrid.cellWidth
|
||||
height: insertGrid.cellHeight
|
||||
text: chr
|
||||
flat: text == " "
|
||||
font.pixelSize: 18
|
||||
|
||||
onClicked: {
|
||||
insertPopup.selected(text)
|
||||
insertPopup.close()
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: function() {
|
||||
for(const chr of insertChars) {
|
||||
console.log("Appending", chr)
|
||||
model.append({ 'chr': chr })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setFocus() {
|
||||
insertGrid.currentIndex = 0
|
||||
insertGrid.forceActiveFocus()
|
||||
}
|
||||
|
||||
Keys.onEscapePressed: close()
|
||||
}
|
||||
|
|
|
@ -500,29 +500,41 @@ Item {
|
|||
|
||||
Button {
|
||||
id: insertButton
|
||||
text: "α"
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 5
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: 20
|
||||
height: width
|
||||
|
||||
Icon {
|
||||
id: icon
|
||||
width: 12
|
||||
height: 12
|
||||
anchors.centerIn: parent
|
||||
|
||||
color: sysPalette.windowText
|
||||
source: '../icons/properties/expression.svg'
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
insertPopup.open()
|
||||
insertPopup.focus = true
|
||||
insertPopup.setFocus()
|
||||
}
|
||||
}
|
||||
|
||||
P.InsertCharacter {
|
||||
id: insertPopup
|
||||
|
||||
x: Math.round((parent.width - width) / 2)
|
||||
y: Math.round((parent.height - height) / 2)
|
||||
x: parent.width - width
|
||||
y: parent.height
|
||||
|
||||
category: "expression"
|
||||
|
||||
onSelected: function(c) {
|
||||
editor.insert(editor.cursorPosition, c)
|
||||
insertPopup.close()
|
||||
}
|
||||
|
||||
onClosed: function() {
|
||||
focus = false
|
||||
editor.focus = true
|
||||
}
|
||||
|
|
|
@ -144,28 +144,40 @@ Item {
|
|||
|
||||
Button {
|
||||
id: insertButton
|
||||
text: "α"
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 5
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: 20
|
||||
height: width
|
||||
visible: !isInt && !isDouble
|
||||
|
||||
Icon {
|
||||
id: icon
|
||||
width: 12
|
||||
height: 12
|
||||
anchors.centerIn: parent
|
||||
|
||||
color: sysPalette.windowText
|
||||
source: '../icons/properties/expression.svg'
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
insertPopup.open()
|
||||
insertPopup.focus = true
|
||||
insertPopup.setFocus()
|
||||
}
|
||||
}
|
||||
|
||||
Popup.InsertCharacter {
|
||||
id: insertPopup
|
||||
|
||||
x: Math.round((parent.width - width) / 2)
|
||||
y: Math.round((parent.height - height) / 2)
|
||||
x: parent.width - width
|
||||
y: parent.height
|
||||
|
||||
onSelected: function(c) {
|
||||
input.insert(input.cursorPosition, c)
|
||||
insertPopup.close()
|
||||
}
|
||||
|
||||
onClosed: function() {
|
||||
focus = false
|
||||
input.focus = true
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue