I have made the following changes intended for : CE:MW:Shared / maliit-plugins
Please review and accept or decline. BOSS has already run some checks on this request. See the "Messages from BOSS" section below. https://build.pub.meego.com//request/show/7145 Thank You, John Brooks [This message was auto-generated] --- Request # 7145: Messages from BOSS: State: review at 2012-10-25T19:35:16 by bossbot Reviews: accepted by bossbot : Prechecks succeeded. new for CE-maintainers : Please replace this text with a review and approve/reject the review (not the SR). BOSS will take care of the rest Changes: submit: home:special:branches:CE:MW:Shared / maliit-plugins -> CE:MW:Shared / maliit-plugins changes files: -------------- --- maliit-plugins.changes +++ maliit-plugins.changes @@ -0,0 +1,8 @@ +* Thu Oct 25 2012 John Brooks <[email protected]> - 0.81.3 +- Add patches from upstream 0.80 branch: +- Fixes NEMO#451: Closing the virtual keyboard usually leaves letters in the text field +- Clean up and optimize keyboard code +- Use a single mouse handler for the keyboard to allow keypress on release and sliding between keys +- Fix the keyboard being draggable +- Improve orientation handling + new: ---- 0001-Import-QtQuick-1.1-instead-of-Qt-4.7.patch 0002-Replace-transparent-Rectangle-with-Item.patch 0003-Fixes-NEMO-451-Use-a-single-MouseArea-for-the-whole-.patch 0004-Use-a-single-Popper-for-all-keys.patch 0005-Split-keyboard-logic-and-layout-further.patch 0006-Simplify-orientation-logic.patch spec files: ----------- --- maliit-plugins.spec +++ maliit-plugins.spec @@ -1,11 +1,13 @@ # # Do NOT Edit the Auto-generated Part! -# Generated by: spectacle version 0.23 +# Generated by: spectacle version 0.25 # + +Name: maliit-plugins + # >> macros # << macros -Name: maliit-plugins Summary: Reference input method plugins Version: 0.81.3 Release: 1 @@ -14,6 +16,12 @@ URL: http://gitorious.org/maliit/maliit-plugins Source0: %{name}-%{version}.tar.bz2 Source100: maliit-plugins.yaml +Patch0: 0001-Import-QtQuick-1.1-instead-of-Qt-4.7.patch +Patch1: 0002-Replace-transparent-Rectangle-with-Item.patch +Patch2: 0003-Fixes-NEMO-451-Use-a-single-MouseArea-for-the-whole-.patch +Patch3: 0004-Use-a-single-Popper-for-all-keys.patch +Patch4: 0005-Split-keyboard-logic-and-layout-further.patch +Patch5: 0006-Simplify-orientation-logic.patch Requires: contextkit-maemo Requires: libmaliit-quick BuildRequires: pkgconfig(QtGui) >= 4.6.0 @@ -24,16 +32,26 @@ Provides: meegotouch-inputmethodkeyboard > 0.6.10 Obsoletes: meegotouch-inputmethodkeyboard <= 0.6.10 - %description Reference inputmethod plugins, such as the Maliit Keyboard - %prep %setup -q -n %{name}-%{version} +# 0001-Import-QtQuick-1.1-instead-of-Qt-4.7.patch +%patch0 -p1 +# 0002-Replace-transparent-Rectangle-with-Item.patch +%patch1 -p1 +# 0003-Fixes-NEMO-451-Use-a-single-MouseArea-for-the-whole-.patch +%patch2 -p1 +# 0004-Use-a-single-Popper-for-all-keys.patch +%patch3 -p1 +# 0005-Split-keyboard-logic-and-layout-further.patch +%patch4 -p1 +# 0006-Simplify-orientation-logic.patch +%patch5 -p1 # >> setup # << setup @@ -48,6 +66,7 @@ # >> build post # << build post + %install rm -rf %{buildroot} # >> install pre @@ -58,10 +77,6 @@ # << install post - - - - %files %defattr(-,root,root,-) %{_bindir}/maliit-keyboard-benchmark @@ -70,5 +85,3 @@ %{_datadir}/maliit/plugins/ # >> files # << files - - other changes: -------------- ++++++ 0001-Import-QtQuick-1.1-instead-of-Qt-4.7.patch (new) --- 0001-Import-QtQuick-1.1-instead-of-Qt-4.7.patch +++ 0001-Import-QtQuick-1.1-instead-of-Qt-4.7.patch @@ -0,0 +1,169 @@ +From f8b9504d49da8118b484ba84afcfdbf8549bd4f3 Mon Sep 17 00:00:00 2001 +From: John Brooks <[email protected]> +Date: Mon, 15 Oct 2012 22:18:27 -0600 +Subject: [PATCH 1/6] Import QtQuick 1.1 instead of Qt 4.7 + +QtQuick 1.1 is available as of Qt 4.7.4, and on more recent versions +has a small performance benefit over the deprecated Qt import. + +RevBy: Pekka Vuorela +--- + nemo-keyboard/nemo-keyboard.qml | 2 +- + nemo-keyboard/org/nemomobile/CharacterKey.qml | 2 +- + nemo-keyboard/org/nemomobile/FunctionKey.qml | 2 +- + nemo-keyboard/org/nemomobile/KeyStyle.qml | 2 +- + nemo-keyboard/org/nemomobile/KeyboardStyle.qml | 2 +- + nemo-keyboard/org/nemomobile/LandscapeVKB.qml | 2 +- + nemo-keyboard/org/nemomobile/PluginClose.qml | 2 +- + nemo-keyboard/org/nemomobile/PluginSwitch.qml | 2 +- + nemo-keyboard/org/nemomobile/Popper.qml | 2 +- + nemo-keyboard/org/nemomobile/PortraitVKB.qml | 2 +- + nemo-keyboard/org/nemomobile/RussianPortrait.qml | 2 +- + 11 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/nemo-keyboard/nemo-keyboard.qml b/nemo-keyboard/nemo-keyboard.qml +index 24ffb0b..1c43157 100644 +--- a/nemo-keyboard/nemo-keyboard.qml ++++ b/nemo-keyboard/nemo-keyboard.qml +@@ -29,7 +29,7 @@ + * + */ + +-import Qt 4.7 ++import QtQuick 1.1 + import org.nemomobile 1.0 + + Rectangle { +diff --git a/nemo-keyboard/org/nemomobile/CharacterKey.qml b/nemo-keyboard/org/nemomobile/CharacterKey.qml +index 5fbf86a..1d0ff88 100644 +--- a/nemo-keyboard/org/nemomobile/CharacterKey.qml ++++ b/nemo-keyboard/org/nemomobile/CharacterKey.qml +@@ -29,7 +29,7 @@ + * + */ + +-import Qt 4.7 ++import QtQuick 1.1 + import "KeyboardUiConstants.js" as UI + + Item { +diff --git a/nemo-keyboard/org/nemomobile/FunctionKey.qml b/nemo-keyboard/org/nemomobile/FunctionKey.qml +index 4d0bc51..ea89f54 100755 +--- a/nemo-keyboard/org/nemomobile/FunctionKey.qml ++++ b/nemo-keyboard/org/nemomobile/FunctionKey.qml +@@ -29,7 +29,7 @@ + * + */ + +-import Qt 4.7 ++import QtQuick 1.1 + import "KeyboardUiConstants.js" as UI + + Item { +diff --git a/nemo-keyboard/org/nemomobile/KeyStyle.qml b/nemo-keyboard/org/nemomobile/KeyStyle.qml +index 6adb232..9e752b2 100644 +--- a/nemo-keyboard/org/nemomobile/KeyStyle.qml ++++ b/nemo-keyboard/org/nemomobile/KeyStyle.qml +@@ -29,7 +29,7 @@ + * + */ + +-import Qt 4.7 ++import QtQuick 1.1 + + Item { + property string background: "#282828" +diff --git a/nemo-keyboard/org/nemomobile/KeyboardStyle.qml b/nemo-keyboard/org/nemomobile/KeyboardStyle.qml +index bdc5329..7189128 100644 +--- a/nemo-keyboard/org/nemomobile/KeyboardStyle.qml ++++ b/nemo-keyboard/org/nemomobile/KeyboardStyle.qml +@@ -29,7 +29,7 @@ + * + */ + +-import Qt 4.7 ++import QtQuick 1.1 + + Item { + property string background: "#d9d9d9" +diff --git a/nemo-keyboard/org/nemomobile/LandscapeVKB.qml b/nemo-keyboard/org/nemomobile/LandscapeVKB.qml +index 8b14518..e9c0908 100755 +--- a/nemo-keyboard/org/nemomobile/LandscapeVKB.qml ++++ b/nemo-keyboard/org/nemomobile/LandscapeVKB.qml +@@ -29,7 +29,7 @@ + * + */ + +-import Qt 4.7 ++import QtQuick 1.1 + import "KeyboardUiConstants.js" as UI + + Rectangle { +diff --git a/nemo-keyboard/org/nemomobile/PluginClose.qml b/nemo-keyboard/org/nemomobile/PluginClose.qml +index cc49eae..96ea57d 100644 +--- a/nemo-keyboard/org/nemomobile/PluginClose.qml ++++ b/nemo-keyboard/org/nemomobile/PluginClose.qml +@@ -29,7 +29,7 @@ + * + */ + +-import Qt 4.7 ++import QtQuick 1.1 + + //! This component is used to close QML plugin by veritical flicking + Flickable { +diff --git a/nemo-keyboard/org/nemomobile/PluginSwitch.qml b/nemo-keyboard/org/nemomobile/PluginSwitch.qml +index 46d49cb..ae69759 100644 +--- a/nemo-keyboard/org/nemomobile/PluginSwitch.qml ++++ b/nemo-keyboard/org/nemomobile/PluginSwitch.qml +@@ -29,7 +29,7 @@ + * + */ + +-import Qt 4.7 ++import QtQuick 1.1 + import com.meego.maliitquick 1.0 + + //! This component is used to swith between plugins by horizontally flicking on QML keyboard +diff --git a/nemo-keyboard/org/nemomobile/Popper.qml b/nemo-keyboard/org/nemomobile/Popper.qml +index 10867fa..ab7e85c 100755 +--- a/nemo-keyboard/org/nemomobile/Popper.qml ++++ b/nemo-keyboard/org/nemomobile/Popper.qml +@@ -27,7 +27,7 @@ + * + */ + +-import QtQuick 1.0 ++import QtQuick 1.1 + import "KeyboardUiConstants.js" as UI + + Image { +diff --git a/nemo-keyboard/org/nemomobile/PortraitVKB.qml b/nemo-keyboard/org/nemomobile/PortraitVKB.qml +index 36ac0aa..bead11f 100644 +--- a/nemo-keyboard/org/nemomobile/PortraitVKB.qml ++++ b/nemo-keyboard/org/nemomobile/PortraitVKB.qml +@@ -27,7 +27,7 @@ + * + */ + +-import Qt 4.7 ++import QtQuick 1.1 + import "KeyboardUiConstants.js" as UI + + Rectangle { +diff --git a/nemo-keyboard/org/nemomobile/RussianPortrait.qml b/nemo-keyboard/org/nemomobile/RussianPortrait.qml +index b729523..3e6ab5d 100755 +--- a/nemo-keyboard/org/nemomobile/RussianPortrait.qml ++++ b/nemo-keyboard/org/nemomobile/RussianPortrait.qml +@@ -27,7 +27,7 @@ + * + */ + +-import QtQuick 1.0 ++import QtQuick 1.1 + import "KeyboardUiConstants.js" as UI + + +-- +1.7.9.5 + ++++++ 0002-Replace-transparent-Rectangle-with-Item.patch (new) --- 0002-Replace-transparent-Rectangle-with-Item.patch +++ 0002-Replace-transparent-Rectangle-with-Item.patch @@ -0,0 +1,42 @@ +From 1fe9029adca66423721b6c5ba3d0e2238d58b20e Mon Sep 17 00:00:00 2001 +From: John Brooks <[email protected]> +Date: Mon, 15 Oct 2012 22:18:42 -0600 +Subject: [PATCH 2/6] Replace transparent Rectangle with Item + +Item is not painted at all, which is marginally faster than painting +a transparent rectangle. + +RevBy: Pekka Vuorela +--- + nemo-keyboard/nemo-keyboard.qml | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +diff --git a/nemo-keyboard/nemo-keyboard.qml b/nemo-keyboard/nemo-keyboard.qml +index 1c43157..649fe66 100644 +--- a/nemo-keyboard/nemo-keyboard.qml ++++ b/nemo-keyboard/nemo-keyboard.qml +@@ -32,19 +32,15 @@ + import QtQuick 1.1 + import org.nemomobile 1.0 + +-Rectangle { ++Item { + id: canvas + transformOrigin: Item.Center + width: MInputMethodQuick.screenWidth + height: MInputMethodQuick.screenHeight +- color: "transparent" +- opacity: 1 + +- Rectangle { ++ Item { + id: root + transformOrigin: Item.Center +- color: "transparent" +- opacity: 1 + + PluginClose { + LandscapeVKB { +-- +1.7.9.5 + ++++++ 0003-Fixes-NEMO-451-Use-a-single-MouseArea-for-the-whole-.patch (new) --- 0003-Fixes-NEMO-451-Use-a-single-MouseArea-for-the-whole-.patch +++ 0003-Fixes-NEMO-451-Use-a-single-MouseArea-for-the-whole-.patch @@ -0,0 +1,471 @@ +From 98f6bffecb680a69a4ad2caca4e0f1d3c13990e0 Mon Sep 17 00:00:00 2001 +From: John Brooks <[email protected]> +Date: Mon, 15 Oct 2012 22:33:22 -0600 +Subject: [PATCH 3/6] Fixes: NEMO#451 - Use a single MouseArea for the whole + keyboard + +With a single MouseArea, the Flickable used for the swipe-down gesture +is no longer needed. This fixes bugs with the Flickable stealing press +events, and accidentally dragging the keyboard all over the screen. + +Also, with a single MouseArea, keys are now registered only on release, +and it's possible to slide between keys before releasing, which improves +usability dramatically. That also fixes NEMO#451, because the swipe down +gesture cannot cause random keypresses. + +RevBy: Pekka Vuorela +--- + nemo-keyboard/nemo-keyboard.qml | 20 +- + nemo-keyboard/org/nemomobile/CharacterKey.qml | 51 +---- + nemo-keyboard/org/nemomobile/EnglishPortrait.qml | 239 ++++++++++++++-------- + nemo-keyboard/org/nemomobile/PluginClose.qml | 47 ----- + 4 files changed, 166 insertions(+), 191 deletions(-) + delete mode 100644 nemo-keyboard/org/nemomobile/PluginClose.qml + +diff --git a/nemo-keyboard/nemo-keyboard.qml b/nemo-keyboard/nemo-keyboard.qml +index 649fe66..38d5818 100644 +--- a/nemo-keyboard/nemo-keyboard.qml ++++ b/nemo-keyboard/nemo-keyboard.qml +@@ -42,18 +42,16 @@ Item { + id: root + transformOrigin: Item.Center + +- PluginClose { +- LandscapeVKB { +- id: vkb_landscape +- anchors.bottom: parent.bottom +- anchors.horizontalCenter: parent.horizontalCenter +- } ++ LandscapeVKB { ++ id: vkb_landscape ++ anchors.bottom: parent.bottom ++ anchors.horizontalCenter: parent.horizontalCenter ++ } + +- PortraitVKB { +- id: vkb_portrait +- anchors.bottom: parent.bottom +- anchors.horizontalCenter: parent.horizontalCenter +- } ++ PortraitVKB { ++ id: vkb_portrait ++ anchors.bottom: parent.bottom ++ anchors.horizontalCenter: parent.horizontalCenter + } + + Component.onCompleted: { +diff --git a/nemo-keyboard/org/nemomobile/CharacterKey.qml b/nemo-keyboard/org/nemomobile/CharacterKey.qml +index 1d0ff88..dc71da8 100644 +--- a/nemo-keyboard/org/nemomobile/CharacterKey.qml ++++ b/nemo-keyboard/org/nemomobile/CharacterKey.qml +@@ -32,7 +32,7 @@ + import QtQuick 1.1 + import "KeyboardUiConstants.js" as UI + +-Item { ++Image { + id: aCharKey + property string caption: "" + property string captionShifted: "" +@@ -42,11 +42,10 @@ Item { + property string sizeType: "keyboard-key-43x60.png" + property bool pressed: false + +- Image { +- id: keyImage +- source: sizeType +- opacity: (aCharKey.pressed) ? 0.5 : 1 +- } ++ property alias text: key_label.text ++ ++ source: sizeType ++ opacity: pressed ? 0.5 : 1 + + Text { + id: key_label +@@ -59,43 +58,5 @@ Item { + color: UI.TEXT_COLOR + text: (inSymView && symView.length) > 0 ? (inSymView2 ? symView2 : symView) : (isShifted ? captionShifted : caption) + } +- +- Popper { +- id: popper +- anchors { bottom: parent.top; horizontalCenter: parent.horizontalCenter } +- text: key_label.text +- pressed: aCharKey.pressed +- } +- +- MouseArea { +- id: mouse_area +- anchors.fill: parent +- +- onPressed: { +- aCharKey.pressed = true +- MInputMethodQuick.sendCommit(key_label.text) +- } +- +- onPressAndHold: charRepeater.start() +- +- onReleased: { +- charRepeater.stop() +- aCharKey.pressed = false +- isShifted = isShiftLocked ? isShifted : false +- } +- +- onCanceled: { +- charRepeater.stop() +- aCharKey.pressed = false +- } +- +- onExited: charRepeater.stop() +- } +- +- Timer { +- id: charRepeater +- interval: 80; repeat: true +- triggeredOnStart: true +- onTriggered: MInputMethodQuick.sendCommit(key_label.text) +- } + } ++ +diff --git a/nemo-keyboard/org/nemomobile/EnglishPortrait.qml b/nemo-keyboard/org/nemomobile/EnglishPortrait.qml +index c5ca9b7..886fd76 100755 +--- a/nemo-keyboard/org/nemomobile/EnglishPortrait.qml ++++ b/nemo-keyboard/org/nemomobile/EnglishPortrait.qml +@@ -2,6 +2,7 @@ + * This file is part of Maliit plugins + * + * Copyright (C) Jakub Pavelek <[email protected]> ++ * Copyright (C) 2012 John Brooks <[email protected]> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: +@@ -30,12 +31,10 @@ + import QtQuick 1.0 + import "KeyboardUiConstants.js" as UI + +- +-Column { ++MouseArea { ++ id: keyboardBase + anchors.fill: parent +- anchors.topMargin: 8 +- anchors.horizontalCenter: parent.horizontalCenter +- spacing: 16 ++ + property variant row1:["q1€", "w2£", "e3$", "r4¥", "t5₹", "y6%", "u7<", "i8>", "o9[", "p0]"] + property variant row2: ["a*`", "s#^", "d+|", "f-_", "g=§", "h({", "j)}", "k?¿", "l!¡"] + property variant row3: ["z@«", "x~»", "c/\"", "v\\“", "b'”", "n;„", "m:&"] +@@ -54,109 +53,173 @@ Column { + + property string layoutName: "English (UK)" + +- Row { //Row 1 +- anchors.horizontalCenter: parent.horizontalCenter +- spacing: keyMargin +- Repeater { +- model: row1 +- CharacterKey { +- width: keyWidth; height: keyHeight +- caption: row1[index][0] +- captionShifted: row1[index][0].toUpperCase() +- symView: row1[index][1] +- symView2: row1[index][2] +- } ++ property int startX ++ property int startY ++ property Item pressedKey ++ ++ onPressed: { ++ startX = mouse.x ++ startY = mouse.y ++ updatePressedKey(mouse.x, mouse.y); ++ } ++ ++ onPositionChanged: updatePressedKey(mouse.x, mouse.y); ++ ++ onReleased: { ++ // Hide keyboard if flicked down by >40% ++ if (mouse.y - startY > (height * 0.4)) { ++ MInputMethodQuick.userHide(); ++ return; + } +- } //end Row1 +- +- Row { //Row 2 +- anchors.horizontalCenter: parent.horizontalCenter +- +- spacing: keyMargin +- Repeater { (272 more lines skipped) ++++++ 0004-Use-a-single-Popper-for-all-keys.patch (new) --- 0004-Use-a-single-Popper-for-all-keys.patch +++ 0004-Use-a-single-Popper-for-all-keys.patch @@ -0,0 +1,102 @@ +From dd3418dd738c182d8c7279ebf33b32ae32ab3150 Mon Sep 17 00:00:00 2001 +From: John Brooks <[email protected]> +Date: Tue, 16 Oct 2012 00:02:33 -0600 +Subject: [PATCH 4/6] Use a single Popper for all keys + +RevBy: Pekka Vuorela +--- + nemo-keyboard/org/nemomobile/EnglishPortrait.qml | 6 +++ + nemo-keyboard/org/nemomobile/Popper.qml | 51 +++++++++++++++------- + 2 files changed, 42 insertions(+), 15 deletions(-) + +diff --git a/nemo-keyboard/org/nemomobile/EnglishPortrait.qml b/nemo-keyboard/org/nemomobile/EnglishPortrait.qml +index 886fd76..75c45dc 100755 +--- a/nemo-keyboard/org/nemomobile/EnglishPortrait.qml ++++ b/nemo-keyboard/org/nemomobile/EnglishPortrait.qml +@@ -110,6 +110,12 @@ MouseArea { + return null; + } + ++ Popper { ++ id: popper ++ z: 10 ++ target: pressedKey ++ } ++ + Column { + id: keyArea + spacing: 16 +diff --git a/nemo-keyboard/org/nemomobile/Popper.qml b/nemo-keyboard/org/nemomobile/Popper.qml +index ab7e85c..af44551 100755 +--- a/nemo-keyboard/org/nemomobile/Popper.qml ++++ b/nemo-keyboard/org/nemomobile/Popper.qml +@@ -32,10 +32,11 @@ import "KeyboardUiConstants.js" as UI + + Image { + id: popper +- visible: false + source: "popper.png" +- property alias text: popperText.text +- property bool pressed: false ++ opacity: 0 ++ ++ property Item target: null ++ + Text { + id: popperText + text: "" +@@ -48,19 +49,39 @@ Image { + color: UI.TEXT_COLOR_POPPER + } + +- onPressedChanged: { +- if (pressed) { +- popper.visible = true +- } else { +- animatePopperFade.start() ++ states: State { ++ name: "active" ++ when: target !== null ++ ++ PropertyChanges { ++ target: popperText ++ text: target.text ++ } ++ ++ PropertyChanges { ++ target: popper ++ opacity: 1 ++ ++ x: popper.parent.mapFromItem(target, 0, 0).x + (target.width - popper.width) / 2 ++ y: popper.parent.mapFromItem(target, 0, 0).y - popper.height + } + } +- Timer { +- id: animatePopperFade +- interval: 50 +- running: false +- repeat: false +- onTriggered: popper.visible = false +- } + ++ transitions: Transition { ++ from: "active" ++ ++ SequentialAnimation { ++ PauseAnimation { ++ duration: 50 ++ } ++ PropertyAction { ++ target: popper ++ properties: "opacity, x, y" ++ } ++ PropertyAction { ++ target: popperText ++ property: "text" ++ } ++ } ++ } + } +-- +1.7.9.5 + ++++++ 0005-Split-keyboard-logic-and-layout-further.patch (new) --- 0005-Split-keyboard-logic-and-layout-further.patch +++ 0005-Split-keyboard-logic-and-layout-further.patch @@ -0,0 +1,1011 @@ +From aa6f61b0035ce858a11bc41364f603658b0ccc5f Mon Sep 17 00:00:00 2001 +From: John Brooks <[email protected]> +Date: Tue, 16 Oct 2012 00:35:30 -0600 +Subject: [PATCH 5/6] Split keyboard logic and layout further + +KeyboardBase implements mouse handling and other logic common to most +keyboards, while the EnglishPortrait and EnglishLandscape items +position keys. + +RevBy: Pekka Vuorela +--- + nemo-keyboard/nemo-keyboard.qml | 73 +----- + nemo-keyboard/org/nemomobile/EnglishLandscape.qml | 175 ++++++++++++++ + nemo-keyboard/org/nemomobile/EnglishPortrait.qml | 257 ++++++++------------- + nemo-keyboard/org/nemomobile/KeyboardBase.qml | 116 ++++++++++ + nemo-keyboard/org/nemomobile/LandscapeVKB.qml | 179 -------------- + nemo-keyboard/org/nemomobile/PortraitVKB.qml | 42 ---- + nemo-keyboard/org/nemomobile/qmldir | 4 +- + 7 files changed, 399 insertions(+), 447 deletions(-) + create mode 100644 nemo-keyboard/org/nemomobile/EnglishLandscape.qml + create mode 100644 nemo-keyboard/org/nemomobile/KeyboardBase.qml + delete mode 100755 nemo-keyboard/org/nemomobile/LandscapeVKB.qml + delete mode 100644 nemo-keyboard/org/nemomobile/PortraitVKB.qml + +diff --git a/nemo-keyboard/nemo-keyboard.qml b/nemo-keyboard/nemo-keyboard.qml +index 38d5818..a6a7414 100644 +--- a/nemo-keyboard/nemo-keyboard.qml ++++ b/nemo-keyboard/nemo-keyboard.qml +@@ -38,20 +38,20 @@ Item { + width: MInputMethodQuick.screenWidth + height: MInputMethodQuick.screenHeight + +- Item { ++ KeyboardBase { + id: root + transformOrigin: Item.Center ++ width: parent.width ++ height: parent.height + +- LandscapeVKB { ++ EnglishLandscape { + id: vkb_landscape +- anchors.bottom: parent.bottom +- anchors.horizontalCenter: parent.horizontalCenter ++ visible: layout == vkb_landscape + } + +- PortraitVKB { ++ EnglishPortrait { + id: vkb_portrait +- anchors.bottom: parent.bottom +- anchors.horizontalCenter: parent.horizontalCenter ++ visible: layout == vkb_portrait + } + + Component.onCompleted: { +@@ -77,20 +77,9 @@ Item { + PropertyChanges { + target: root + rotation: 0 +- width: parent.width +- height: parent.height + x: 0 + y: 0 +- } +- +- PropertyChanges { +- target: vkb_portrait; +- opacity: 0 +- } +- +- PropertyChanges { +- target: vkb_landscape; +- opacity: 1 ++ layout: vkb_landscape + } + }, + +@@ -106,20 +95,9 @@ Item { + PropertyChanges { + target: root + rotation: 90 +- width: parent.height +- height: parent.width + x: (parent.width - parent.height) / 2 + y: (parent.height - parent.width) / 2 +- } +- +- PropertyChanges { +- target: vkb_portrait +- opacity: 1 +- } +- +- PropertyChanges { +- target: vkb_landscape; +- opacity: 0 ++ layout: vkb_portrait + } + }, + +@@ -135,20 +113,9 @@ Item { + PropertyChanges { + target: root + rotation: 180 +- width: parent.width +- height: parent.height + x: 0 + y: 0 +- } +- +- PropertyChanges { +- target: vkb_portrait; +- opacity: 0 +- } +- +- PropertyChanges { +- target: vkb_landscape; +- opacity: 1 ++ layout: vkb_landscape + } + }, + +@@ -165,20 +132,9 @@ Item { + PropertyChanges { + target: root + rotation: 270 +- width: parent.height +- height: parent.width + x: (parent.width - parent.height) / 2 + y: (parent.height - parent.width) / 2 +- } +- +- PropertyChanges { +- target: vkb_portrait +- opacity: 1 +- } +- +- PropertyChanges { +- target: vkb_landscape; +- opacity: 0 ++ layout: vkb_portrait + } + } + ] +@@ -193,13 +149,6 @@ Item { + duration: 400; + easing.type: Easing.InOutQuad + } +- +- PropertyAnimation { +- targets: [vkb_landscape, vkb_portrait]; +- properties: "opacity"; +- duration: 400; +- easing.type: Easing.InOutQuad +- } + } + ] + +diff --git a/nemo-keyboard/org/nemomobile/EnglishLandscape.qml b/nemo-keyboard/org/nemomobile/EnglishLandscape.qml +new file mode 100644 +index 0000000..e63d5c8 +--- /dev/null ++++ b/nemo-keyboard/org/nemomobile/EnglishLandscape.qml +@@ -0,0 +1,175 @@ ++/* ++ * This file is part of Maliit Plugins ++ * ++ * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. ++ * ++ * Contact: Mohammad Anwari <[email protected]> ++ * ++ * Redistribution and use in source and binary forms, with or without modification, ++ * are permitted provided that the following conditions are met: ++ * ++ * Redistributions of source code must retain the above copyright notice, this list ++ * of conditions and the following disclaimer. ++ * Redistributions in binary form must reproduce the above copyright notice, this list ++ * of conditions and the following disclaimer in the documentation and/or other materials ++ * provided with the distribution. ++ * Neither the name of Nokia Corporation nor the names of its contributors may be ++ * used to endorse or promote products derived from this software without specific ++ * prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY ++ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ++ * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ++ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ++ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ++ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ * ++ */ ++ ++import QtQuick 1.1 ++import "KeyboardUiConstants.js" as UI ++ ++Column { (812 more lines skipped) ++++++ 0006-Simplify-orientation-logic.patch (new) --- 0006-Simplify-orientation-logic.patch +++ 0006-Simplify-orientation-logic.patch @@ -0,0 +1,237 @@ +From 82617e534e4cec1009069aec65c3d5e2b327ddb6 Mon Sep 17 00:00:00 2001 +From: John Brooks <[email protected]> +Date: Tue, 16 Oct 2012 21:18:25 -0600 +Subject: [PATCH 6/6] Simplify orientation logic + +RevBy: Pekka Vuorela +--- + nemo-keyboard/nemo-keyboard.qml | 121 +++++++++------------ + nemo-keyboard/org/nemomobile/EnglishLandscape.qml | 6 +- + nemo-keyboard/org/nemomobile/EnglishPortrait.qml | 5 +- + nemo-keyboard/org/nemomobile/KeyboardBase.qml | 2 +- + 4 files changed, 60 insertions(+), 74 deletions(-) + +diff --git a/nemo-keyboard/nemo-keyboard.qml b/nemo-keyboard/nemo-keyboard.qml +index a6a7414..ba1fa04 100644 +--- a/nemo-keyboard/nemo-keyboard.qml ++++ b/nemo-keyboard/nemo-keyboard.qml +@@ -38,20 +38,28 @@ Item { + width: MInputMethodQuick.screenWidth + height: MInputMethodQuick.screenHeight + +- KeyboardBase { ++ Item { + id: root + transformOrigin: Item.Center + width: parent.width + height: parent.height + +- EnglishLandscape { +- id: vkb_landscape +- visible: layout == vkb_landscape +- } ++ KeyboardBase { ++ id: keyboard ++ width: layout ? layout.width : 0 ++ height: layout ? layout.height : 0 ++ anchors.bottom: parent.bottom ++ anchors.horizontalCenter: parent.horizontalCenter ++ ++ EnglishLandscape { ++ id: vkb_landscape ++ visible: keyboard.layout == vkb_landscape ++ } + +- EnglishPortrait { +- id: vkb_portrait +- visible: layout == vkb_portrait ++ EnglishPortrait { ++ id: vkb_portrait ++ visible: keyboard.layout == vkb_portrait ++ } + } + + Component.onCompleted: { +@@ -61,96 +69,73 @@ Item { + } + + focus: true +- state: MInputMethodQuick.appOrientation ++ ++ function updateIMArea() { ++ var x = 0, y = 0, width = 0, height = 0; ++ var angle = MInputMethodQuick.appOrientation; ++ ++ switch (angle) { ++ case 0: ++ y = MInputMethodQuick.screenHeight - vkb_landscape.height; ++ case 180: ++ x = (MInputMethodQuick.screenWidth - vkb_landscape.width) / 2; ++ width = vkb_landscape.width; ++ height = vkb_landscape.height; ++ break; ++ ++ case 270: ++ x = MInputMethodQuick.screenWidth - vkb_portrait.height; ++ case 90: ++ y = (MInputMethodQuick.screenHeight - vkb_portrait.width) / 2; ++ width = vkb_portrait.height; ++ height = vkb_portrait.width; ++ break; ++ } ++ ++ MInputMethodQuick.setInputMethodArea(Qt.rect(x, y, width, height)); ++ } + + states: [ + State { +- name: "0" ++ name: "landscape" ++ when: MInputMethodQuick.appOrientation == 0 || MInputMethodQuick.appOrientation == 180 + + StateChangeScript { +- script: MInputMethodQuick.setInputMethodArea( +- Qt.rect((MInputMethodQuick.screenWidth - vkb_landscape.width) / 2, +- MInputMethodQuick.screenHeight - vkb_landscape.height, +- vkb_landscape.width, vkb_landscape.height)) ++ script: updateIMArea(); + } + + PropertyChanges { + target: root +- rotation: 0 ++ rotation: MInputMethodQuick.appOrientation + x: 0 + y: 0 +- layout: vkb_landscape +- } +- }, +- +- State { +- name: "90" +- +- StateChangeScript { +- script: MInputMethodQuick.setInputMethodArea( +- Qt.rect(0, (MInputMethodQuick.screenHeight - vkb_portrait.width) / 2, +- vkb_portrait.height, vkb_portrait.width)) + } + + PropertyChanges { +- target: root +- rotation: 90 +- x: (parent.width - parent.height) / 2 +- y: (parent.height - parent.width) / 2 +- layout: vkb_portrait +- } +- }, +- +- State { +- name: "180" +- +- StateChangeScript { +- script: MInputMethodQuick.setInputMethodArea( +- Qt.rect((MInputMethodQuick.screenWidth - vkb_landscape.width) / 2, +- 0, vkb_landscape.width, vkb_landscape.height)) +- } +- +- PropertyChanges { +- target: root +- rotation: 180 +- x: 0 +- y: 0 ++ target: keyboard + layout: vkb_landscape + } + }, + + State { +- name: "270" ++ name: "portrait" ++ when: MInputMethodQuick.appOrientation == 90 || MInputMethodQuick.appOrientation == 270 + + StateChangeScript { +- script: MInputMethodQuick.setInputMethodArea( +- Qt.rect(MInputMethodQuick.screenWidth - vkb_portrait.height, +- (MInputMethodQuick.screenHeight - vkb_portrait.width) / 2, +- vkb_portrait.height, vkb_portrait.width)) ++ script: updateIMArea(); + } + + PropertyChanges { + target: root +- rotation: 270 ++ rotation: MInputMethodQuick.appOrientation + x: (parent.width - parent.height) / 2 +- y: (parent.height - parent.width) / 2 +- layout: vkb_portrait + } +- } +- ] + +- transitions: [ +- Transition { +- from: "*" +- to: "*" +- +- RotationAnimation { +- target: root; +- duration: 400; +- easing.type: Easing.InOutQuad ++ PropertyChanges { ++ target: keyboard ++ layout: vkb_portrait + } + } + ] +- + } + +diff --git a/nemo-keyboard/org/nemomobile/EnglishLandscape.qml b/nemo-keyboard/org/nemomobile/EnglishLandscape.qml +index e63d5c8..cc774da 100644 +--- a/nemo-keyboard/org/nemomobile/EnglishLandscape.qml ++++ b/nemo-keyboard/org/nemomobile/EnglishLandscape.qml +@@ -34,9 +34,9 @@ import "KeyboardUiConstants.js" as UI + + Column { + id: vkb +- anchors.fill: parent +- anchors.topMargin: 4 +- anchors.horizontalCenter: parent.horizontalCenter (38 more lines skipped) ++++++ maliit-plugins.yaml --- maliit-plugins.yaml +++ maliit-plugins.yaml @@ -7,6 +7,13 @@ URL: http://gitorious.org/maliit/maliit-plugins Sources: - "%{name}-%{version}.tar.bz2" +Patches: + - 0001-Import-QtQuick-1.1-instead-of-Qt-4.7.patch + - 0002-Replace-transparent-Rectangle-with-Item.patch + - 0003-Fixes-NEMO-451-Use-a-single-MouseArea-for-the-whole-.patch + - 0004-Use-a-single-Popper-for-all-keys.patch + - 0005-Split-keyboard-logic-and-layout-further.patch + - 0006-Simplify-orientation-logic.patch Description: | Reference inputmethod plugins, such as the Maliit Keyboard Requires:
