summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2025-08-18 15:03:24 +0800
committerlittleblack111 <littleblack11111@gmail.com>2025-08-19 20:15:22 +0800
commit47b7722e4dcc750bdad71731977e0cdb1d95b022 (patch)
treecc5556f3446612fff5dd5386e9369b4a19c4cfad
parentb941aadf3f061c2fe5751694820ab3757a0c6f85 (diff)
refactor(Emoji, Spell): optimize cell dimensions and selection logic
-rw-r--r--launcher/components/Emoji.qml12
-rw-r--r--launcher/components/Spell.qml10
2 files changed, 10 insertions, 12 deletions
diff --git a/launcher/components/Emoji.qml b/launcher/components/Emoji.qml
index d4bc54f..d1343e6 100644
--- a/launcher/components/Emoji.qml
+++ b/launcher/components/Emoji.qml
@@ -13,10 +13,6 @@ IComponent {
property var emojis: active ? Emoji.query(input) : []
property int selectedIndex: -1
- property int cols: Math.max(1, Math.floor(innerLoader.width / Math.max(1, Math.round(Launcher.widgetFontSize * 4))))
- property int cellWidth: Math.floor(innerLoader.width / cols)
- property int cellHeight: Math.ceil(Launcher.widgetFontSize * 2) + Launcher.innerMargin * 2
-
name: "Emoji"
prefix: name.toLowerCase() + " "
@@ -76,11 +72,13 @@ IComponent {
selectedIndex++;
}
up: function () {
+ const cols = loader.view ? Math.max(1, Math.floor(loader.view.width / loader.view.cellWidth)) : 1;
if (selectedIndex - cols < 0)
return true;
selectedIndex -= cols;
}
down: function () {
+ const cols = loader.view ? Math.max(1, Math.floor(loader.view.width / loader.view.cellWidth)) : 1;
if (selectedIndex + cols >= emojis.length)
return true;
selectedIndex += cols;
@@ -121,14 +119,14 @@ IComponent {
flow: GridView.FlowLeftToRight
snapMode: GridView.NoSnap
- cellWidth: root.cellWidth
- cellHeight: root.cellHeight
+ cellWidth: Math.min(width / Math.max(1, Math.floor(width / (Launcher.widgetFontSize * 5))), width / 3)
+ cellHeight: Launcher.widgetFontSize * 2.2 + Launcher.innerMargin * 2
delegate: Item {
required property var modelData
required property int index
width: grid.cellWidth
- height: chipContent.implicitHeight + Launcher.innerMargin * 2
+ height: grid.cellHeight
scale: index === selectedIndex ? 1.03 : 0.97
IRect {
diff --git a/launcher/components/Spell.qml b/launcher/components/Spell.qml
index 2072057..d4f505b 100644
--- a/launcher/components/Spell.qml
+++ b/launcher/components/Spell.qml
@@ -94,14 +94,14 @@ IComponent {
}
up: function () {
- const cols = Math.max(1, Math.floor(innerLoader.width / Math.max(1, Math.round(Launcher.widgetFontSize * 6))));
+ const cols = loader.view ? Math.max(1, Math.floor(loader.view.width / loader.view.cellWidth)) : 1;
if (selectedIndex - cols < 0)
return true;
selectedIndex -= cols;
}
down: function () {
- const cols = Math.max(1, Math.floor(innerLoader.width / Math.max(1, Math.round(Launcher.widgetFontSize * 6))));
+ const cols = loader.view ? Math.max(1, Math.floor(loader.view.width / loader.view.cellWidth)) : 1;
if (selectedIndex + cols >= aspell.length)
return true;
selectedIndex += cols;
@@ -144,15 +144,15 @@ IComponent {
flow: GridView.FlowLeftToRight
snapMode: GridView.NoSnap
- cellWidth: Math.floor(width / Math.max(1, Math.floor(width / Math.max(1, Math.round(Launcher.widgetFontSize * 6)))))
- cellHeight: Math.ceil(Launcher.widgetFontSize * 1.6) + Launcher.innerMargin * 2
+ cellWidth: Math.min(width / Math.max(1, Math.floor(width / (Launcher.widgetFontSize * 4))), width / 2)
+ cellHeight: Launcher.widgetFontSize * 1.4 + Launcher.innerMargin * 2
delegate: Item {
required property var modelData
required property int index
width: grid.cellWidth
- height: chipContent.implicitHeight + Launcher.innerMargin * 2
+ height: grid.cellHeight
scale: index === selectedIndex ? 1.03 : 0.97
IRect {