I have made the following changes intended for :
  CE:UX:MTF / meegotouch-compositor

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/8202

Thank You,
vesuri

[This message was auto-generated]

---

Request # 8202:

Messages from BOSS:

State: review at 2013-02-26T12:15:36 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:vesuri:branches:CE:UX:MTF / meegotouch-compositor -> CE:UX:MTF / 
meegotouch-compositor
  
changes files:
--------------
--- meegotouch-compositor.changes
+++ meegotouch-compositor.changes
@@ -0,0 +1,3 @@
+* Fri Feb 22 2013 Vesa Halttunen <[email protected]> - 1.3.0
+- Fixes NEMO#577: Drop meegotouch dependency in mcompositor
+

old:
----
  meegotouch-compositor-1.2.2.tar.bz2

new:
----
  meegotouch-compositor-1.3.0.tar.bz2

spec files:
-----------
--- meegotouch-compositor.spec
+++ meegotouch-compositor.spec
@@ -9,7 +9,7 @@
 # << macros
 
 Summary:    MeeGo UI Compositing Window Manager
-Version:    1.2.2
+Version:    1.3.0
 Release:    1
 Group:      System/Desktop
 License:    LGPLv2.1
@@ -23,7 +23,6 @@
 BuildRequires:  pkgconfig(QtNetwork)
 BuildRequires:  pkgconfig(QtOpenGL)
 BuildRequires:  pkgconfig(contextprovider-1.0)
-BuildRequires:  pkgconfig(meegotouch)
 BuildRequires:  pkgconfig(x11)
 BuildRequires:  pkgconfig(x11-xcb)
 BuildRequires:  pkgconfig(xcb) >= 1.6
@@ -118,7 +117,7 @@
 %{_libdir}/libdecorator.so.*
 %{_libdir}/libmcompositor.so.*
 %{_datadir}/contextkit/providers/org.maemo.mcompositor.context
-%{_datadir}/l10n/meegotouch/recovery.qm
+%{_datadir}/translations/recovery.qm
 %{_libdir}/systemd/user/mcompositor.service
 # >> files
 # << files

other changes:
--------------

++++++ meegotouch-compositor-1.2.2.tar.bz2 -> 
meegotouch-compositor-1.3.0.tar.bz2
--- .gitignore
+++ .gitignore
@@ -12,7 +12,23 @@
 tests.xml
 decorators/mdecorator/mdecorator
 mcompositor/mcompositor
+doc/doxygen.log
+doc/html/
+tests/unit/ut_anim/ut_anim
+tests/unit/ut_closeapp/ut_closeapp
+tests/unit/ut_compositing/ut_compositing
+tests/unit/ut_lockscreen/ut_lockscreen
+tests/unit/ut_netClientList/ut_netClientList
+tests/unit/ut_propcache/ut_propcache
+tests/unit/ut_restackwindows/ut_restackwindows
+tests/unit/ut_splashscreen/ut_splashscreen
 tests/windowctl/windowctl
 tests/windowstack/windowstack
 tests/GLES2/test-gles2
 tests/focus-tracker/focus-tracker
+tests/appinterface/appinterface
+tests/manual-splash/manual-splash
+tests/unit/ut_stacking/ut_stacking
+translations/recovery.qm
+*.pro.user
+*.autosave
--- decorators/libdecorator/.gitignore
+++ decorators/libdecorator/.gitignore
@@ -0,0 +1,2 @@
+mdecorator_dbus_*
+libdecorator.so*
--- decorators/libdecorator/mabstractdecorator.cpp
+++ decorators/libdecorator/mabstractdecorator.cpp
@@ -70,23 +70,11 @@
                                                bool show_dialog)
 {
     Q_D(MAbstractDecorator);
-    M::OrientationAngle orient;
 
     d->client = window;
     d->clientGeometry = geo;
 
-    if (angle == 0)
-        orient = M::Angle0;
-    else if (angle == 270)
-        orient = M::Angle270;
-    else if (angle == 90)
-        orient = M::Angle90;
-    else if (angle == 180)
-        orient = M::Angle180;
-    else
-        orient = M::Angle0;
-
-    manageEvent(window, wmname, orient, only_statusbar, show_dialog);
+    manageEvent(window, wmname, angle, only_statusbar, show_dialog);
 }
 
 void MAbstractDecorator::setAvailableGeometry(const QRect& rect)
--- decorators/libdecorator/mabstractdecorator.h
+++ decorators/libdecorator/mabstractdecorator.h
@@ -20,7 +20,6 @@
 #ifndef MABSTRACTDECORATOR_H
 #define MABSTRACTDECORATOR_H
 
-#include <MWindow>
 #include <QObject>
 #include "mabstractappinterface.h"
 
@@ -81,7 +80,7 @@
       */
     virtual void manageEvent(Qt::HANDLE window,
                              const QString &wmname,
-                             M::OrientationAngle orient,
+                             int orient,
                              bool sbonly, bool hung) = 0;
 
      /*!
--- decorators/mdecorator/.gitignore
+++ decorators/mdecorator/.gitignore
@@ -1 +1,2 @@
-duidecorator
+mdecorator
+qrc_res*
--- decorators/mdecorator/main.cpp
+++ decorators/mdecorator/main.cpp
@@ -1,13 +1,8 @@
 /***************************************************************************
 **
 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation ([email protected])
-**
-** This file is part of duicompositor.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at [email protected].
+** Copyright (C) 2012 Jolla Ltd.
+** Contact: Vesa Halttunen ([email protected])
 **
 ** This library is free software; you can redistribute it and/or
 ** modify it under the terms of the GNU Lesser General Public
@@ -17,50 +12,24 @@
 **
 ****************************************************************************/
 
-#include <MApplication>
-#include <mcomponentdata.h>
-#include "mondisplaychangeevent.h"
+#include <QApplication>
+#include <QTranslator>
+#include <QtDeclarative>
 #include "mdecoratorwindow.h"
 
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-#include <X11/Xmd.h>
-
-class MDecoratorApp : public MApplication
+int main(int argc, char **argv)
 {
-public:
-    MDecoratorApp(int argc, char **argv) : MApplication(argc, argv)
-    {
-        window.show();
-    }
-
-    virtual bool x11EventFilter(XEvent *xev)
-    {
-        if (xev->type == VisibilityNotify) {
-            XVisibilityEvent *xve = (XVisibilityEvent *)xev;
+    QApplication app(argc, argv);
 
-            foreach (MWindow *win, MComponentData::instance()->windows()) {
-                if (win && win->effectiveWinId() == xve->window) {
-                    MOnDisplayChangeEvent mev(
-                        xve->state != VisibilityFullyObscured
-                            ? MOnDisplayChangeEvent::FullyOnDisplay
-                            : MOnDisplayChangeEvent::FullyOffDisplay,
-                        QRectF(QPointF(0, 0), win->visibleSceneSize()));
-                    sendEvent(win, &mev);
-                }
-            }
-        }
+    QTranslator engineeringEnglish;
+    engineeringEnglish.load("recovery", "/usr/share/translations");
+    app.installTranslator(&engineeringEnglish);
+    QTranslator translator;
+    translator.load(QLocale(), "recovery", "-", "/usr/share/translations");
+    app.installTranslator(&translator);
 
-        return MApplication::x11EventFilter(xev);
-    }
-
-private:
+    qmlRegisterUncreatableType<MDecoratorWindow>("org.nemomobile.mdecorator", 
0, 1, "MDecoratorWindow", "This type is initialized by main");
     MDecoratorWindow window;
-};
-
-int main(int argc, char **argv)
-{
-    MDecoratorApp app(argc, argv);
 
     return app.exec();
 }
--- decorators/mdecorator/mdecorator.cpp
+++ decorators/mdecorator/mdecorator.cpp
@@ -0,0 +1,40 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2012 Jolla Ltd.
+** Contact: Vesa Halttunen ([email protected])
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#include "mdecorator.h"
+#include "mdecoratorwindow.h"
+
+MDecorator::MDecorator(MDecoratorWindow *p) : MAbstractDecorator(p),
+      decorwindow(p)
+{
+}
+
+void MDecorator::manageEvent(Qt::HANDLE window, const QString &wmname, int 
orient, bool, bool hung)
+{
+    decorwindow->managedWindowChanged(window, wmname, orient, hung);
+    setAvailableGeometry(decorwindow->geometry());
+}
+
+void MDecorator::hideQueryDialog()
+{
+    decorwindow->hideQueryDialog();
+}
+
+void MDecorator::setOnlyStatusbar(bool)
+{
+}
+
+void MDecorator::playFeedback(const QString &)
+{
+}
--- decorators/mdecorator/mdecorator.h
+++ decorators/mdecorator/mdecorator.h
@@ -0,0 +1,41 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2012 Jolla Ltd.
+** Contact: Vesa Halttunen ([email protected])
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#ifndef MDECORATOR_H
+#define MDECORATOR_H
+
+#include <mabstractdecorator.h>
+
+class MDecoratorWindow;
+
+class MDecorator : public MAbstractDecorator
+{
+    Q_OBJECT
+
+public:
+    MDecorator(MDecoratorWindow *p);
+
+    virtual void manageEvent(Qt::HANDLE window, const QString &wmname, int 
orient, bool, bool hung);
+
+protected:
+    virtual void hideQueryDialog();
+    virtual void setOnlyStatusbar(bool);
+    virtual void playFeedback(const QString &);
+
+private:
+    MDecoratorWindow *decorwindow;
+};
+
+
+#endif // MDECORATOR_H
--- decorators/mdecorator/mdecorator.pro
+++ decorators/mdecorator/mdecorator.pro
@@ -1,14 +1,27 @@
 include(../../meegotouch_config.pri)
+
 TEMPLATE = app
 DEPENDPATH += ../libdecorator
 INCLUDEPATH += ../libdecorator
-CONFIG += meegotouch release
-QT += opengl dbus
+CONFIG += release
+QT += opengl dbus declarative
 
 LIBS += ../libdecorator/libdecorator.so -lX11 -lXfixes
 
-SOURCES += main.cpp mdecoratorwindow.cpp
-HEADERS += mdecoratorwindow.h
+SOURCES += main.cpp \
+    mdecoratorwindow.cpp \
+    mdecorator.cpp \
+    mdecoratorappinterface.cpp
+HEADERS += \
+    mdecoratorwindow.h \
+    mdecorator.h \
+    mdecoratorappinterface.h
+
+RESOURCES += \
+    res.qrc
+
+OTHER_FILES += \
+    qml/main.qml
 
 QMAKE_EXTRA_TARGETS += check
 check.depends = $$TARGET
--- decorators/mdecorator/mdecoratorappinterface.cpp
+++ decorators/mdecorator/mdecoratorappinterface.cpp
@@ -0,0 +1,30 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2012 Jolla Ltd.
+** Contact: Vesa Halttunen ([email protected])
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#include "mdecoratorappinterface.h"
+#include "mdecoratorwindow.h"
+
+MDecoratorAppInterface::MDecoratorAppInterface(MDecoratorWindow *p) : 
MAbstractAppInterface(p),
+    decorwindow(p)
+{
+}
+
+void MDecoratorAppInterface::setManagedWindow(WId window)
+{
+    currentWindow = window;
+}
+
+void MDecoratorAppInterface::actionsChanged(QList<MDecoratorIPCAction>, WId)
+{
+}
--- decorators/mdecorator/mdecoratorappinterface.h
+++ decorators/mdecorator/mdecoratorappinterface.h
@@ -0,0 +1,39 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2012 Jolla Ltd.
+** Contact: Vesa Halttunen ([email protected])
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#ifndef MDECORATORAPPINTERFACE_H
+#define MDECORATORAPPINTERFACE_H
+
+#include <mabstractdecorator.h>
+
+class MDecoratorWindow;
+
+class MDecoratorAppInterface : public MAbstractAppInterface
+{
+    Q_OBJECT
+
+public:
+    MDecoratorAppInterface(MDecoratorWindow *p);
+
+    void setManagedWindow(WId window);
+
+protected:
+    virtual void actionsChanged(QList<MDecoratorIPCAction>, WId);
+
+private:
+    MDecoratorWindow *decorwindow;
+    WId currentWindow;
+};
+
+#endif // MDECORATORAPPINTERFACE_H
--- decorators/mdecorator/mdecoratorwindow.cpp
+++ decorators/mdecorator/mdecoratorwindow.cpp
@@ -1,13 +1,8 @@
 /***************************************************************************
 **
 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation ([email protected])
-**
-** This file is part of duicompositor.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at [email protected].
+** Copyright (C) 2012 Jolla Ltd.
+** Contact: Vesa Halttunen ([email protected])
 **
 ** This library is free software; you can redistribute it and/or
 ** modify it under the terms of the GNU Lesser General Public
@@ -17,548 +12,80 @@
 **
 ****************************************************************************/
 
-#include <QtDebug>
-
-#include <MSceneManager>
-#include <MScene>
-#include <MApplicationMenu>
-#include <MApplicationPage>
-#include <MNavigationBarView>
-#include <MLabel>
-#include <QGraphicsLinearLayout>
-#include <mbutton.h>
-#include <mwidgetaction.h>
-
+#include <QCloseEvent>
+#include <QDeclarativeContext>
 #include <QApplication>
 #include <QDesktopWidget>
-#include <QX11Info>
-#include <QGLFormat>
-#include <QGLWidget>
-#include <QLabel>
-#include <QWindowStateChangeEvent>
-#include <MFeedback>
-
+#include "mdecorator.h"
+#include "mdecoratorappinterface.h"
 #include "mdecoratorwindow.h"
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
+#include <QX11Info>
 #include <X11/Xatom.h>
-#include <X11/Xmd.h>
 #include <X11/extensions/Xfixes.h>
 #include <X11/extensions/shape.h>
 
-#include <mabstractdecorator.h>
-#include <mabstractappinterface.h>
-#include <mdesktopentry.h>
-#include <mbuttonmodel.h>
-#include <mdeviceprofile.h>
-
-class MDecorator: public MAbstractDecorator
-{
-    Q_OBJECT
-public:
-    MDecorator(MDecoratorWindow *p)
-        : MAbstractDecorator(p),
-        decorwindow(p)
-    {
-    }
-
-    void manageEvent(Qt::HANDLE window,
-                             const QString &wmname,
-                             M::OrientationAngle orient,
-                             bool sbonly, bool hung)
-    {
-        decorwindow->managedWindowChanged(window, wmname, orient, hung);
-        if (window)
-            setOnlyStatusbar(sbonly);
-    }
-
-protected:
-
-    void hideQueryDialog() {
-        decorwindow->hideQueryDialog();
-    }
-
-    void setOnlyStatusbar(bool mode) 
-    {
-        decorwindow->setOnlyStatusbar(mode);
-        decorwindow->setInputRegion();
-        setAvailableGeometry(decorwindow->availableClientRect());
-    }
-    void playFeedback(const QString &name) {
-        feedback.setName(name);
-        feedback.play();
-    }
-
-private:
-
-    MDecoratorWindow *decorwindow;
-    MFeedback feedback;
-};
-
-class MDecoratorAppInterface : public MAbstractAppInterface
-{
-    Q_OBJECT
-
-public:
-    MDecoratorAppInterface(MDecoratorWindow *p)
-        : MAbstractAppInterface(p)
-        , decorwindow(p)
-    {
-    }
-
-    void setManagedWindow(WId window)
-    {
-        currentWindow = window;
-    }
-
-    virtual void actionsChanged(QList<MDecoratorIPCAction> newMenu, WId window)
-    {
-        if (window != currentWindow)
-            return;
-
-        QList<MAction*> menu;
-        actionHash.clear();
-
-        foreach (MDecoratorIPCAction act, newMenu) {
-            MAction* mact = createMAction(act);
-            menu.append(mact);
-        }
-        decorwindow->addActions(menu);
-    }
-
-public slots:
-    void actionTriggered(bool val)
-    {
-        if (!sender() || !qobject_cast<MAction*>(sender()))
-            return;
-
-        MAction* act = static_cast<MAction*>(sender());
-        if (actionHash.contains(act))
-            emit triggered(actionHash.value(act).id().toString(), val);
-    }
-
-    void actionToggled(bool val)
-    {
-        if (!sender() || !qobject_cast<MAction*>(sender()))
-            return;
-
-        MAction* act = static_cast<MAction*>(sender());
-        if (actionHash.contains(act))
-            emit toggled(actionHash.value(act).id().toString(), val);
-    }
-
-private:
-
-    MAction* createMAction(const MDecoratorIPCAction& act)
-    {
-        //Normal MActions doesn't support custom QIcons, therefore we use 
MButtons and MWidgetAction
-
-        MAction* mact;
-        if (act.type() == MDecoratorIPCAction::MenuAction) {
-            mact = new MAction(decorwindow);
-            mact->setText(act.text());
-            mact->setCheckable(act.isCheckable());
-            mact->setChecked(act.isChecked());
-            mact->setIcon(act.icon());
-            mact->setLocation(MAction::ApplicationMenuLocation);
-        } else {
-            mact = new MWidgetAction(decorwindow);
-            MButton* mbut = new MButton;
-            mbut->setMinimumSize(0, 0);
-            mbut->setObjectName("toolbaractioncommand");
-            mbut->setIcon(act.icon());
-            if (act.icon().isNull())
-                mbut->setText(act.text());
-            static_cast<MWidgetAction*>(mact)->setWidget(mbut);
-            mact->setText(act.text());
-            mact->setCheckable(act.isCheckable());
-            mact->setChecked(act.isChecked());
-            mact->setLocation(MAction::ToolBarLocation);
-
-            updateViewAndStyling(mbut, false);
-
-            if (act.isCheckable())
-                connect(mbut, SIGNAL(toggled(bool)), mact, 
SIGNAL(toggled(bool)));
-            else
-                connect(mbut, SIGNAL(clicked(bool)), mact, 
SIGNAL(triggered(bool)));
-        }
-        connect(mact, SIGNAL(triggered(bool)), SLOT(actionTriggered(bool)));
-        connect(mact, SIGNAL(toggled(bool)), SLOT(actionToggled(bool)));
-
-        actionHash[mact] = act;
-        return mact;
-    }
-
-    //This method is copied from libmeegotouch (MApplicationMenuView), but 
slightly changed
-    void updateViewAndStyling(MButton *button, bool buttonGroup) const
-    {
-        QString toolBarButtonDefaultViewType = buttonGroup ? "toolbartab" : 
"toolbar";
-
-        if (button && button->icon().isNull()) {
-            // Only label -> could use different styling
-            button->setTextVisible(true); //In this case we will show label 
(as it is all we have)
-            if (button->viewType() != toolBarButtonDefaultViewType)
-                button->setViewType(toolBarButtonDefaultViewType);
-            button->setStyleName("ToolBarLabelOnlyButton");
-        } else {
-            if (button->viewType() != toolBarButtonDefaultViewType)
-                button->setViewType(toolBarButtonDefaultViewType);
-            button->setStyleName("ToolBarIconButton");
-            button->setTextVisible(true);
-        }
-    }
-
-    QHash<MAction*, MDecoratorIPCAction> actionHash;
-
-    MDecoratorWindow *decorwindow;
-    WId currentWindow;
-};
-
 MDecoratorWindow::MDecoratorWindow(QWidget *parent)
-    : MApplicationWindow(parent),
-      homeButtonPanel(0),
-      escapeButtonPanel(0),
-      navigationBar(0),
-      statusBar(0),
-      messageBox(0),
-      managed_window(0),
-      menuVisible(false)
-{
-    locale.installTrCatalog("recovery");
-    locale.setDefault(locale);
-
-    foreach (QGraphicsItem* item, items()) {
-        MHomeButtonPanel *h;
-        if (!homeButtonPanel && (h = dynamic_cast<MHomeButtonPanel*>(item))) {
-            homeButtonPanel = h;
-            continue;
-        }
-        MEscapeButtonPanel *e;
-        if (!escapeButtonPanel &&
-            (e = dynamic_cast<MEscapeButtonPanel*>(item))) {
-            escapeButtonPanel = e;
-            continue;
-        }
-        MNavigationBar *n;
-        if (!navigationBar && (n = dynamic_cast<MNavigationBar*>(item))) {
-            navigationBar = n;
-            continue;
-        }
-    }
-    // sometimes Libmeegotouch doesn't create statusbar at this point,
-    // so create it ourselves and mark the window fullscreen to avoid duplicate
-    statusBar = new MStatusBar;
-    statusBar->setVisible(true);
-    sceneManager()->appearSceneWindowNow(statusBar);
-    setWindowState(windowState() | Qt::WindowFullScreen);
-
-    // Check for presence of homeButtonPanel, navigationBar and statusBar
-    if (!homeButtonPanel || !navigationBar || !statusBar)
-        qFatal("Meego elements not found");
-
-    homeButtonPanel = new MHomeButtonPanel();
-    connect(homeButtonPanel, SIGNAL(buttonClicked()), this,
-            SIGNAL(homeClicked()));
-    if (escapeButtonPanel)
-        connect(escapeButtonPanel, SIGNAL(buttonClicked()), this,
-                SIGNAL(escapeClicked()));
-
-    connect(navigationBar, SIGNAL(viewmenuTriggered()), SLOT(menuAppearing()));
-    connect(navigationBar, SIGNAL(closeButtonClicked()), 
SIGNAL(escapeClicked()));
-
-    requested_only_statusbar = false;
-
-    d = new MDecorator(this);
-    app = new MDecoratorAppInterface(this);
-
-    connect(this, SIGNAL(homeClicked()), d, SLOT(minimize()));
-    connect(this, SIGNAL(escapeClicked()), d, SLOT(close()));
-    connect(sceneManager(),
-            SIGNAL(orientationChanged(M::Orientation)),
-            this,
-            SLOT(screenRotated(M::Orientation)));
-
-    setTranslucentBackground(true); // for translucent messageBox
-    setBackgroundBrush(QBrush(QColor(0, 0, 0, 0)));
+    : QDeclarativeView(parent),
+      managedWindow(0),
+      decorator(new MDecorator(this)),
+      appInterface(new MDecoratorAppInterface(this)),
+      windowVisible_(false),
+      orientationAngle_(0)
+{
+    setAttribute(Qt::WA_TranslucentBackground);
     setFocusPolicy(Qt::NoFocus);
     setSceneSize();
     setMDecoratorWindowProperty();
-    setMeegotouchOpaqueProperty(true);
     setInputRegion();
-
-    setProperty("animatedOrientationChange", false);
-    setOrientationAngle(desktopOrientationAngle());
-    setOrientationAngleLocked(true);
-}
-
-void MDecoratorWindow::managedWindowChanged(Qt::HANDLE w,
-                                            const QString &title,
-                                            M::OrientationAngle orient,
-                                            bool hung)
-{
-    app->setManagedWindow(w);
-    app->actionsChanged(QList<MDecoratorIPCAction>(), w);
-
-    Qt::HANDLE old_window = managed_window;
-    managed_window = w;
-    if (messageBox && !hung)
-        hideQueryDialog();
-
-    if (!managed_window) {
-        hideEverything();
-        setProperty("animatedOrientationChange", false);
-        setOrientationAngle(desktopOrientationAngle());
-        return;
-    }
-
-    navigationBar->setViewMenuDescription(title);
-    setProperty("animatedOrientationChange", !!old_window);
-    setOrientationAngle(orient);
-    if (hung) {
-        createQueryDialog();
-        if (isOnDisplay())
-            // We can start showing it, otherwise wait.
-            enterDisplayEvent();
-    } else
-        sceneManager()->appearSceneWindowNow(statusBar);
-}
-
-void MDecoratorWindow::createQueryDialog()
-{
-    QString name;
-
-    if (messageBox)
-        delete messageBox;
-
-    XClassHint cls = {0, 0};
-    XGetClassHint(QX11Info::display(), managed_window, &cls);
-    if (cls.res_name) {
-        name = QString(cls.res_name);
-        if (name.endsWith(".launch"))
-            // Remove the extension in order to find the .desktop file.
-            name.resize(name.length()-strlen(".launch"));
-        MDesktopEntry de(QString("/usr/share/applications/")
-                         + name + ".desktop");
-        if (de.isValid() && !de.name().isEmpty()) {
-            name = de.name();
-
-            // "If a translated string has many length variants, they are
-            //  separated with U+009C (STRING TERMINATOR) character, and
-            //  according to DTD for .ts file format, they should be ordered
-            //  by decreasing length." (quote from mapplicationwindow.cpp)
-            // This confuses the outlier and it decides it doesn't have space
-            // for the "not responding" string.  Only keep the full string.
-            int i = name.indexOf(QChar(0x9c));
-            if (i >= 0)
-                name.truncate(i);
-        }
-        XFree(cls.res_name);
-    } else
-        name.sprintf("window 0x%lx", managed_window);
-
-    if (cls.res_class)
-        XFree(cls.res_class);
-
-    XSetTransientForHint(QX11Info::display(), winId(), managed_window);
-    messageBox = new MMessageBox("", "", M::NoStandardButton);
-    messageBox->setCentralWidget(new QGraphicsWidget(messageBox));
-    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical,
-                                            messageBox->centralWidget());
-    MLabel *title = new MLabel(
-                         qtTrId("qtn_reco_app_not_responding").arg(name),
-                         messageBox);
-    title->setStyleName("CommonQueryTitle");
-    title->setWordWrap(true);
-    title->setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
-    title->setAlignment(Qt::AlignCenter);
-    layout->addItem(title);
-    MLabel *text = new MLabel(qtTrId("qtn_reco_close_app_question"),
-                              messageBox);
-    text->setStyleName("CommonQueryText");
-    text->setWordWrap(true);
-    text->setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
-    text->setAlignment(Qt::AlignCenter);
-    layout->addItem(text);
-    messageBox->centralWidget()->setLayout(layout);
-    MButtonModel *yes = messageBox->addButton(M::YesButton);
-    MButtonModel *no = messageBox->addButton(M::NoButton);
-    connect(yes, SIGNAL(clicked()), this, SLOT(yesButtonClicked()));
-    connect(no, SIGNAL(clicked()), this, SLOT(noButtonClicked()));
+    setResizeMode(QDeclarativeView::SizeRootObjectToView);
+    viewport()->setAutoFillBackground(false);
+    rootContext()->setContextProperty("initialSize", 
QApplication::desktop()->screenGeometry(this).size());
+    rootContext()->setContextProperty("decoratorWindow", this);
+    setSource(QUrl("qrc:/qml/main.qml"));
+    show();
 }
 
-void MDecoratorWindow::hideQueryDialog()
+void MDecoratorWindow::managedWindowChanged(Qt::HANDLE window, const QString 
&title, int orientation, bool hung)
 {
-    if (!messageBox)
-        return;
-
-    XSetTransientForHint(QX11Info::display(), winId(), None);
-    // do this even though messageBox may not be in the scene
-    // (animation is not visible because of stacking changes)
-    sceneManager()->disappearSceneWindow(messageBox);
-    delete messageBox;
-    messageBox = 0;
-
-    restoreEverything();
-    setInputRegion();
-}
+    appInterface->setManagedWindow(window);
+    managedWindow = window;
 
-void MDecoratorWindow::enterDisplayEvent()
-{   // If we've created the dialog it's time to show it.
-    if (!messageBox
-        || messageBox->sceneWindowState() != MSceneWindow::Disappeared)
-        return;
-    hideEverything();
-    sceneManager()->appearSceneWindow(messageBox);
-}
-
-void MDecoratorWindow::leaveDisplayEvent()
-{   // show_query_dialog was cancelled before we could do it
-    hideQueryDialog();
-}
-
-void MDecoratorWindow::yesButtonClicked()
-{
-    d->queryDialogAnswer(managed_window, true);
-    hideQueryDialog();
-}
-
-void MDecoratorWindow::noButtonClicked()
-{
-    d->queryDialogAnswer(managed_window, false);
-    hideQueryDialog();
-}
-
-void MDecoratorWindow::setOnlyStatusbar(bool mode, bool temporary)
-{
-    if (mode || messageBox) {
-        sceneManager()->disappearSceneWindowNow(navigationBar);
-        sceneManager()->disappearSceneWindowNow(homeButtonPanel);
-        if (escapeButtonPanel)
-            sceneManager()->disappearSceneWindowNow(escapeButtonPanel);
-    } else {
-        sceneManager()->appearSceneWindowNow(navigationBar);
-        sceneManager()->appearSceneWindowNow(homeButtonPanel);
-        if (escapeButtonPanel)
-            sceneManager()->appearSceneWindowNow(escapeButtonPanel);
+    if (windowTitle_ != title) {
+        windowTitle_ = title;
+        emit windowTitleChanged();
     }
 
-    if (!temporary)
-        requested_only_statusbar = mode;
-    only_statusbar = mode;
-}
-
-void MDecoratorWindow::hideEverything()
-{
-    setOnlyStatusbar(true, true);
-    sceneManager()->disappearSceneWindowNow(statusBar);
-}
-
-void MDecoratorWindow::restoreEverything()
-{
-    setOnlyStatusbar(requested_only_statusbar);
-    sceneManager()->appearSceneWindowNow(statusBar);
-}
+    if (orientationAngle_ != orientation) {
+        orientationAngle_ = orientation;
+        emit orientationAngleChanged();
+    }
 
-void MDecoratorWindow::screenRotated(const M::Orientation &orientation)
-{
-    Q_UNUSED(orientation);
-    setInputRegion();
-    d->setAvailableGeometry(availableClientRect());
+    setWindowVisible(hung);
 }
 
 void MDecoratorWindow::setInputRegion()
 {
-    static QRegion prev_region;
-    QRegion region;
-    const QRegion fs(QApplication::desktop()->screenGeometry());
-    // region := decoration region
-    if (messageBox || menuVisible) {
-        // Occupy all space.
-        region = fs;
-        setMeegotouchOpaqueProperty(false);
+    Display *dpy = QX11Info::display();
+    XRectangle rect;
+    rect.x = 0;
+    rect.y = 0;
+    if (windowVisible_) {
+        rect.width = ScreenOfDisplay(dpy, DefaultScreen(dpy))->width;
+        rect.height = ScreenOfDisplay(dpy, DefaultScreen(dpy))->height;
     } else {
-        // Decoration includes the status bar, and possibly other elements.
-        QRect sbrect = statusBar->sceneBoundingRect().toRect();
-
-        // work around Libmeegotouch lying about the size
-        if (sbrect.height() == 51)
-            sbrect.setHeight(36);
-        if (sbrect.width() == 51)
-            sbrect.setWidth(36);
-
-        region = sbrect;
-        bool translate = true;
-        int angle = sceneManager()->orientationAngle();
-        if (angle == 270 && sbrect.x() == 0 && sbrect.y() == 0
-            && sbrect.width() < sbrect.height())
-            // SB rect is already in screen coordinates (fixes NB#275508)
-            translate = false;
-
-        if (!only_statusbar) {
-            region += navigationBar->sceneBoundingRect().toRect();
-            region += homeButtonPanel->sceneBoundingRect().toRect();
-            if (escapeButtonPanel)
-                region += escapeButtonPanel->sceneBoundingRect().toRect();
-        }
-
-        // The coordinates we receive from libmeegotouch are rotated
-        // by @angle.  Map @retion back to screen coordinates.
-        if (translate && angle != 0) {
-            QTransform trans;
-            const QRect fs(QApplication::desktop()->screenGeometry());
-
-            trans.rotate(angle);
-            if (angle == 270)
-                trans.translate(-fs.height(), 0);
-            else if (angle == 180)
-                trans.translate(-fs.width(), -fs.height());
-            else if (angle == 90)
-                trans.translate(0, -fs.width());
-            region = trans.map(region);
-        }
-        setMeegotouchOpaqueProperty(true);
+        rect.width = 0;
+        rect.height = 0;
     }
-
-    // Set our input and bounding shape to @region if changed.
-    if (prev_region != region) {
-        prev_region = region;
-
-        // Convert @region to @xrects.
-        XRectangle *xrects;
-        const QVector<QRect> rects = region.rects();
-        int nxrects = rects.count();
-        xrects = new XRectangle[nxrects];
-        for (int i = 0; i < nxrects; ++i) {
-            xrects[i].x = rects[i].x();
-            xrects[i].y = rects[i].y();
-            xrects[i].width = rects[i].width();
-            xrects[i].height = rects[i].height();
-        }
-
-        Display *dpy = QX11Info::display();
-        XserverRegion shapeRegion = XFixesCreateRegion(dpy, xrects, nxrects);
-        delete[] xrects;
-        XFixesSetWindowShapeRegion(dpy, winId(), ShapeInput,
-                                   0, 0, shapeRegion);
-        XFixesSetWindowShapeRegion(dpy, winId(), ShapeBounding,
-                                   0, 0, shapeRegion);
-
-        XFixesDestroyRegion(dpy, shapeRegion);
-    }
-
-    // The rectangle available for the application is the largest square
-    // on the screen not covered by decoration completely.
-    availableRect = (fs - region).boundingRect();
+    XserverRegion shapeRegion = XFixesCreateRegion(dpy, &rect, 1);
+    XFixesSetWindowShapeRegion(dpy, winId(), ShapeInput, 0, 0, shapeRegion);
+    XFixesDestroyRegion(dpy, shapeRegion);
 }
 
 void MDecoratorWindow::setSceneSize()
 {
-    // always keep landscape size
     Display *dpy = QX11Info::display();
     int xres = ScreenOfDisplay(dpy, DefaultScreen(dpy))->width;
     int yres = ScreenOfDisplay(dpy, DefaultScreen(dpy))->height;
-    scene()->setSceneRect(0, 0, xres, yres);
     setMinimumSize(xres, yres);
     setMaximumSize(xres, yres);
 }
@@ -567,96 +94,51 @@
 {
     long on = 1;
 
-    XChangeProperty(QX11Info::display(), winId(),
-                    XInternAtom(QX11Info::display(),
-                                "_MEEGOTOUCH_DECORATOR_WINDOW", False),
-                    XA_CARDINAL,
-                    32, PropModeReplace,
-                    (unsigned char *) &on, 1);
-}
-
-void MDecoratorWindow::setMeegotouchOpaqueProperty(bool enable)
-{
-    static long prev = -1;
-    long new_value = enable ? 1 : 0;
-
-    if (prev != new_value) {
-        XChangeProperty(QX11Info::display(), winId(),
-                        XInternAtom(QX11Info::display(),
-                                    "_MEEGOTOUCH_OPAQUE_WINDOW", False),
-                        XA_CARDINAL,
-                        32, PropModeReplace,
-                        (unsigned char *) &new_value, 1);
-        prev = new_value;
-    }
+    XChangeProperty(QX11Info::display(), winId(), 
XInternAtom(QX11Info::display(), "_MEEGOTOUCH_DECORATOR_WINDOW", False), 
XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&on, 1);
 }
 
-M::OrientationAngle MDecoratorWindow::desktopOrientationAngle() const
+void MDecoratorWindow::closeEvent(QCloseEvent *event)
 {
-    const M::Orientation orientation = 
MDeviceProfile::instance()->orientationFromAngle(M::Angle270);
-    return (orientation == M::Portrait) ? M::Angle270 : M::Angle0;
+    return event->ignore();
 }
 
-const QRect MDecoratorWindow::availableClientRect() const
+bool MDecoratorWindow::windowVisible() const
 {
-    return availableRect;
+    return windowVisible_;
 }
 
-void MDecoratorWindow::closeEvent(QCloseEvent * event )
+void MDecoratorWindow::setWindowVisible(bool visible)
 {
-    // never close the decorator!
-    return event->ignore();
+    if (windowVisible_ != visible) {
+        windowVisible_ = visible;
+        setInputRegion();
+        emit windowVisibleChanged();
+    }
 }
 
-void MDecoratorWindow::addActions(QList<MAction*> new_actions)
+QString MDecoratorWindow::windowTitle() const
 {
-    setUpdatesEnabled(false);
-
-    navigationBar->setArrowIconVisible(false);
-
-    QList<QAction*> oldactions = actions();
-
-    foreach (QAction* act, oldactions)
-        removeAction(act);
-
-    foreach (MAction* act, new_actions) {
-        //the signals have to be disabled because LMT using setChecked on the 
action and that would lead to an trigger/toggle signal
-        act->blockSignals(true);
-        if (act->location() == MAction::ApplicationMenuLocation)
-            navigationBar->setArrowIconVisible(true);
-        this->addAction(act);
-        act->blockSignals(false);
-    }
-
-    setUpdatesEnabled(true);
+    return windowTitle_;
 }
 
-void MDecoratorWindow::menuAppearing()
+int MDecoratorWindow::orientationAngle() const
 {
-    if (menuVisible)
-        return;
-    menuVisible=true;
-    foreach (QGraphicsItem* item, items()) {
-        MApplicationMenu *menu = dynamic_cast<MApplicationMenu*>(item);
-        if (menu) {
-            connect(menu, SIGNAL(disappeared()), SLOT(menuDisappeared()));
-            connect(this, SIGNAL(displayExited()), menu, SLOT(disappear()));
-        }
-    }
-
-    QPixmap pix = QPixmap::grabWindow(winId());
-    setBackgroundBrush(pix);
+    return orientationAngle_;
+}
 
-    setInputRegion();
+void MDecoratorWindow::closeApplication()
+{
+    decorator->queryDialogAnswer(managedWindow, true);
+    hideQueryDialog();
 }
 
-void MDecoratorWindow::menuDisappeared()
+void MDecoratorWindow::doNotCloseApplication()
 {
-    if (!menuVisible)
-        return;
-    menuVisible=false;
-    setInputRegion();
-    setBackgroundBrush(QBrush(Qt::NoBrush));
+    decorator->queryDialogAnswer(managedWindow, false);
+    hideQueryDialog();
 }
 
-#include "mdecoratorwindow.moc"
+void MDecoratorWindow::hideQueryDialog()
+{
+    setWindowVisible(false);
+}
--- decorators/mdecorator/mdecoratorwindow.h
+++ decorators/mdecorator/mdecoratorwindow.h
@@ -1,13 +1,10 @@
 /***************************************************************************
 **
 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation ([email protected])
+** Copyright (C) 2012 Jolla Ltd.
+** Contact: Vesa Halttunen ([email protected])
 **
-** This file is part of duicompositor.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at [email protected].
+** This file is part of mcompositor.
 **
 ** This library is free software; you can redistribute it and/or
 ** modify it under the terms of the GNU Lesser General Public
@@ -19,89 +16,51 @@
 #ifndef MDECORATORWINDOW_H
 #define MDECORATORWINDOW_H
 
-#include <MApplicationWindow>
-#include <MHomeButtonPanel>
-#include <MEscapeButtonPanel>
-#include <MNavigationBar>
-#include <MMessageBox>
-#include <mstatusbar.h>
-#include <mlocale.h>
-
+#include <QDeclarativeView>
 #include <X11/Xlib.h>
-#ifdef HAVE_SHAPECONST
-#include <X11/extensions/shapeconst.h>
-#else
-#include <X11/extensions/shape.h>
-#endif
 
-#include <QObject>
-
-class MSceneManager;
 class MDecorator;
-class MAction;
-class MApplicationMenu;
 class MDecoratorAppInterface;
 
-class MDecoratorWindow : public MApplicationWindow
+class MDecoratorWindow : public QDeclarativeView
 {
     Q_OBJECT
+    Q_PROPERTY(bool windowVisible READ windowVisible WRITE setWindowVisible 
NOTIFY windowVisibleChanged)
+    Q_PROPERTY(QString windowTitle READ windowTitle NOTIFY windowTitleChanged)
+    Q_PROPERTY(int orientationAngle READ orientationAngle NOTIFY 
orientationAngleChanged)
 
 public:
     explicit MDecoratorWindow(QWidget *parent = 0);
 
-    const QRect availableClientRect() const;
-    void setOnlyStatusbar(bool mode, bool temporary = false);
-    void hideEverything();
-    void restoreEverything();
-    /*!
-     * \brief Sets the region of the window that can receive input events.
-     *
-     * Input events landing on the area outside this region will fall directly
-     * to the windows below.
-     */
-    void setInputRegion();
-    void managedWindowChanged(Qt::HANDLE w, const QString &title,
-                                            M::OrientationAngle orient,
-                                            bool hung);
-    void createQueryDialog();
+    void managedWindowChanged(Qt::HANDLE window, const QString &title, int 
orientation, bool hung);
+    bool windowVisible() const;
+    QString windowTitle() const;
+    int orientationAngle() const;
+    void setWindowVisible(bool visible);
     void hideQueryDialog();
-    void addActions(QList<MAction*> actions);
+
+    Q_INVOKABLE void closeApplication();
+    Q_INVOKABLE void doNotCloseApplication();
 
 protected:
-    virtual void closeEvent(QCloseEvent * event );
-    virtual void enterDisplayEvent();
-    virtual void leaveDisplayEvent();
-
-private slots:
-    void screenRotated(const M::Orientation &orientation);
-    void yesButtonClicked();
-    void noButtonClicked();
-    void menuAppearing();
-    void menuDisappeared();
+    virtual void closeEvent(QCloseEvent *event);
 
 signals:
-
-    void homeClicked();
-    void escapeClicked();
+    void windowVisibleChanged();
+    void windowTitleChanged();
+    void orientationAngleChanged();
 
 private:
+    void setInputRegion();
     void setSceneSize();
     void setMDecoratorWindowProperty();
-    void setMeegotouchOpaqueProperty(bool enable);
-    M::OrientationAngle desktopOrientationAngle() const;
 
-    MHomeButtonPanel *homeButtonPanel;
-    MEscapeButtonPanel *escapeButtonPanel;
-    MNavigationBar *navigationBar;
-    MStatusBar *statusBar;
-    MMessageBox *messageBox;
-    Window managed_window;
-    QRect availableRect; // available area for the managed window
-    bool only_statusbar, requested_only_statusbar;
-    MDecorator *d;
-    MDecoratorAppInterface *app;
-    MLocale locale;
-    bool menuVisible;
+    Window managedWindow;
+    MDecorator *decorator;
+    MDecoratorAppInterface *appInterface;
+    bool windowVisible_;
+    QString windowTitle_;
+    int orientationAngle_;
 
     Q_DISABLE_COPY(MDecoratorWindow);
 };
--- decorators/mdecorator/qml
+++ decorators/mdecorator/qml
+(directory)
--- decorators/mdecorator/qml/main.qml
+++ decorators/mdecorator/qml/main.qml
@@ -0,0 +1,111 @@
+import QtQuick 1.2
+import org.nemomobile.mdecorator 0.1
+
+Item {
+    width: initialSize.width
+    height: initialSize.height
+    opacity: decoratorWindow.windowVisible ? 1 : 0
+    Behavior on opacity { NumberAnimation { duration: 250 } }
+
+    Rectangle {
+        anchors.fill: parent
+        color: "black"
+        opacity: 0.6
+    }
+
+    Item {
+        width: (decoratorWindow.orientationAngle % 180 == 90) ? 
initialSize.height : initialSize.width
+        height: (decoratorWindow.orientationAngle % 180 == 90) ? 
initialSize.width : initialSize.height
+        transform: Rotation {
+            origin.x: { switch(decoratorWindow.orientationAngle) {
+                      case 270:
+                          return initialSize.height / 2
+                      case 180:
+                      case 90:
+                          return initialSize.width / 2
+                      default:
+                          return 0
+                      } }
+            origin.y: { switch(decoratorWindow.orientationAngle) {
+                case 270:
+                case 180:
+                    return initialSize.height / 2
+                case 90:
+                    return initialSize.width / 2
+                default:
+                    return 0
+                } }
+            angle: decoratorWindow.orientationAngle == 0 ? 0 : -360 + 
decoratorWindow.orientationAngle
+        }
+
+        Text {
+            anchors.horizontalCenter: parent.horizontalCenter
+            y: parent.height / 10
+            width: parent.width / 10 * 9
+            height: parent.height / 5
+            font.pixelSize: 36
+            color: "white"
+                  //% "%1 is not responding."
+            text: 
qsTrId("qtn_reco_app_not_responding").arg(decoratorWindow.windowTitle) + " " +
+                  //% "Do you want to close it?"
+                  qsTrId("qtn_reco_close_app_question")
+            wrapMode: Text.Wrap
+            horizontalAlignment: Text.AlignHCenter
+            verticalAlignment: Text.AlignVCenter
+        }
+
+        MouseArea {
+            anchors.horizontalCenter: parent.horizontalCenter
+            y: parent.height / 10 * 4
+            width: parent.width / 2
+            height: parent.height / 5
+            onClicked: decoratorWindow.closeApplication()
+            Rectangle {
+                anchors.fill: parent
+                border {
+                    color: "white"
+                    width: 2
+                }
+                color: "black"
+                radius: 5
+
+                Text {
+                    anchors.fill: parent
+                    font.pixelSize: 36
+                    color: "white"
+                    //% "Yes"
+                    text: qsTrId("qtn_comm_command_yes")
+                    horizontalAlignment: Text.AlignHCenter
+                    verticalAlignment: Text.AlignVCenter
+                }
+            }
+        }
+
+        MouseArea {
+            anchors.horizontalCenter: parent.horizontalCenter
+            y: parent.height / 10 * 7
+            width: parent.width / 2
+            height: parent.height / 5
+            onClicked: decoratorWindow.doNotCloseApplication()
+            Rectangle {
+                anchors.fill: parent
+                border {
+                    color: "white"
+                    width: 2
+                }
+                color: "black"
+                radius: 5
+
+                Text {
+                    anchors.fill: parent
+                    font.pixelSize: 36
+                    color: "white"
+                    //% "No"
+                    text: qsTrId("qtn_comm_command_no")
+                    horizontalAlignment: Text.AlignHCenter
+                    verticalAlignment: Text.AlignVCenter
+                }
+            }
+        }
+    }
+}
--- decorators/mdecorator/res.qrc
+++ decorators/mdecorator/res.qrc
@@ -0,0 +1,5 @@
+<RCC>
+    <qresource prefix="/">
+        <file>qml/main.qml</file>
+    </qresource>
+</RCC>
--- meegotouch_config.pri
+++ meegotouch_config.pri
@@ -1,8 +1,5 @@
-# Load more defines from the dui_defines.
-load(meegotouch_defines)
-
-# Add global libdui includes
-INCLUDEPATH += $$M_INSTALL_HEADERS
+M_INSTALL_BIN=/usr/bin
+M_INSTALL_HEADERS=/usr/include/meegotouch
 
 # Check for testability features, should they be compiled in or not?
 !isEqual(TESTABILITY,"off") {
@@ -15,4 +12,4 @@
 }
 
 # Compositor components only
-VERSION = 1.2.2
+VERSION = 1.3.0
--- src/.gitignore
+++ src/.gitignore
@@ -1,2 +1,3 @@
 duicompositor
 qrc_tools.cpp
+libmcompositor.so*
--- src/mcompositewindow.cpp
+++ src/mcompositewindow.cpp
@@ -539,7 +539,9 @@
     bool old_value = isVisible();
     QGraphicsItem::setVisible(visible);
     MCompositeManager *p = (MCompositeManager *) qApp;
+#ifdef WINDOW_DEBUG
     p->d->setWindowDebugProperties(window());
+#endif
 
     QGraphicsScene* sc = scene();    
     if (sc && !visible && sc->items().count() == 1)
@@ -715,9 +717,11 @@
 QVariant MCompositeWindow::itemChange(GraphicsItemChange change, const 
QVariant &value)
 {
     MCompositeManager *p = (MCompositeManager *) qApp;
+#ifdef WINDOW_DEBUG
     if (change == ItemZValueHasChanged) {
         p->d->setWindowDebugProperties(window());
     }
+#endif
 
     if (change == ItemVisibleHasChanged) {
         // Be careful not to update if this item whose visibility is about
--- tests/unit/ut_propcache/ut_propcache.pro
+++ tests/unit/ut_propcache/ut_propcache.pro
@@ -16,4 +16,6 @@
 SOURCES += ut_propcache.cpp
 
 QT += testlib core gui opengl dbus
-CONFIG += debug
+CONFIG += debug link_pkgconfig
+PKGCONFIG += x11
+
--- translations/recovery.ts
+++ translations/recovery.ts
@@ -4,22 +4,24 @@
 <context>
     <name></name>
     <message id="qtn_reco_app_not_responding">
-        <location filename="../decorators/mdecorator/mdecoratorwindow.cpp" 
line="369"/>
-        <source></source>
-        <translation>%1 sucks</translation>
+        <location filename="../decorators/mdecorator/qml/main.qml" line="49"/>
+        <source>%1 is not responding.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message id="qtn_reco_close_app_question">
-        <location filename="../decorators/mdecorator/mdecoratorwindow.cpp" 
line="376"/>
-        <source></source>
-        <translation>Do you want to close it?</translation>
+        <location filename="../decorators/mdecorator/qml/main.qml" line="51"/>
+        <source>Do you want to close it?</source>
+        <translation type="unfinished"></translation>
     </message>
     <message id="qtn_comm_command_yes">
-        <source></source>
-        <translation type="obsolete">Aje</translation>
+        <location filename="../decorators/mdecorator/qml/main.qml" line="77"/>
+        <source>Yes</source>
+        <translation type="unfinished"></translation>
     </message>
     <message id="qtn_comm_command_no">
-        <source></source>
-        <translation type="obsolete">Oh, no!</translation>
+        <location filename="../decorators/mdecorator/qml/main.qml" line="104"/>
+        <source>No</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 </TS>
--- translations/translations.pro
+++ translations/translations.pro
@@ -1,17 +1,26 @@
-LANGUAGES = # empty, means to build only engineering English
-SOURCEDIR = $$PWD/..
-CATALOGNAME = recovery
-TRANSLATIONDIR = $$PWD
-TRANSLATION_INSTALLDIR = $$M_TRANSLATION_DIR
-include($$[QT_INSTALL_DATA]/mkspecs/features/meegotouch_defines.prf)
-include($$[QT_INSTALL_DATA]/mkspecs/features/meegotouch_translations.prf)
+# translations
+QMAKE_LINK = @: IGNORE THIS LINE
+INSTALLS = ts_install engineering_english_install
 
-# Only depend on $$FILES, and do not regenerate recovery.ts all the times.
-FILES = $$SOURCEDIR/decorators/mdecorator/mdecoratorwindow.cpp
-updateeets.input = FILES
-updateeets.clean = nothing
-QMAKE_EXTRA_COMPILERS -= dummy
+TS_FILE = $$PWD/recovery.ts
+EE_QM = $$PWD/recovery.qm
+ts.commands += lupdate $$PWD/../decorators/mdecorator/qml -ts $$TS_FILE
+ts.CONFIG += no_check_exist
+ts.output = $$TS_FILE
+ts.input = .
+ts_install.files = $$TS_FILE
+ts_install.path = /usr/share/doc/mcompositor-l10n-engineering-english
+ts_install.CONFIG += no_check_exist
 
-updateeets.files = $$ENGINEERING_ENGLISH
-updateeets.path = /usr/share/doc/mcompositor-l10n-engineering-english
-INSTALLS += updateeets
+# should add -markuntranslated "-" when proper translations are in place (or 
for testing)
+engineering_english.commands += lrelease -idbased $$TS_FILE -qm $$EE_QM
+engineering_english.CONFIG += no_check_exist
+engineering_english.depends = ts
+engineering_english.input = $$TS_FILE
+engineering_english.output = $$EE_QM
+engineering_english_install.path = /usr/share/translations
+engineering_english_install.files = $$EE_QM
+engineering_english_install.CONFIG += no_check_exist
+
+QMAKE_EXTRA_TARGETS += ts engineering_english
+PRE_TARGETDEPS += ts engineering_english

++++++ meegotouch-compositor.yaml
--- meegotouch-compositor.yaml
+++ meegotouch-compositor.yaml
@@ -1,6 +1,6 @@
 Name: meegotouch-compositor
 Summary: MeeGo UI Compositing Window Manager
-Version: 1.2.2
+Version: 1.3.0
 Release: 1
 Group: System/Desktop
 License: LGPLv2.1
@@ -16,7 +16,6 @@
     - QtNetwork
     - QtOpenGL
     - contextprovider-1.0
-    - meegotouch
     - x11
     - x11-xcb
     - xcb >= 1.6
@@ -46,7 +45,7 @@
     - "%{_libdir}/libdecorator.so.*"
     - "%{_libdir}/libmcompositor.so.*"
     - "%{_datadir}/contextkit/providers/org.maemo.mcompositor.context"
-    - "%{_datadir}/l10n/meegotouch/recovery.qm"
+    - "%{_datadir}/translations/recovery.qm"
     - "%{_libdir}/systemd/user/mcompositor.service"
 
 SubPackages:



Reply via email to