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:



Reply via email to