diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c956792
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+SOURCES/hi128-app-qt4-logo.png
+SOURCES/hi48-app-qt4-logo.png
+SOURCES/qt-everywhere-opensource-src-4.8.5.tar.gz
diff --git a/.qt.metadata b/.qt.metadata
index aafd569..e4ee5bd 100644
--- a/.qt.metadata
+++ b/.qt.metadata
@@ -1,4 +1,3 @@
-2a1577e5c201a8a7e8ac105999732d9111aa0511 SOURCES/hi48-app-qt4-logo.png
 a1fe2c718e113dce72f960b549356395c86372f3 SOURCES/hi128-app-qt4-logo.png
+2a1577e5c201a8a7e8ac105999732d9111aa0511 SOURCES/hi48-app-qt4-logo.png
 745f9ebf091696c0d5403ce691dc28c039d77b9e SOURCES/qt-everywhere-opensource-src-4.8.5.tar.gz
-2bd7a9654a56f486013714e5b954d40af0185077 SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch
diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch b/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch
new file mode 100644
index 0000000..018872f
--- /dev/null
+++ b/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch
@@ -0,0 +1,84 @@
+diff -up qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp.QTBUG-21900 qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp
+--- qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp.QTBUG-21900	2013-05-30 16:18:05.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp	2013-06-09 11:53:45.891771748 -0500
+@@ -818,6 +818,27 @@ static Bool qt_sync_request_scanner(Disp
+ #endif
+ #endif // QT_NO_XSYNC
+ 
++struct qt_configure_event_data
++{
++    WId window;
++    WId parent;
++};
++
++static Bool qt_configure_event_scanner(Display*, XEvent *event, XPointer arg)
++{
++    qt_configure_event_data *data =
++        reinterpret_cast<qt_configure_event_data*>(arg);
++    if (event->type == ConfigureNotify &&
++        event->xconfigure.window == data->window) {
++        return true;
++    } else if (event->type == ReparentNotify &&
++               event->xreparent.window == data->window) {
++        data->parent = event->xreparent.parent;
++    }
++
++    return false;
++}
++
+ static void qt_x11_create_intern_atoms()
+ {
+     const char *names[QX11Data::NAtoms];
+@@ -5302,8 +5323,11 @@ bool QETWidget::translateConfigEvent(con
+         if (d->extra->compress_events) {
+             // ConfigureNotify compression for faster opaque resizing
+             XEvent otherEvent;
+-            while (XCheckTypedWindowEvent(X11->display, internalWinId(), ConfigureNotify,
+-                                          &otherEvent)) {
++            qt_configure_event_data configureData;
++            configureData.window = internalWinId();
++            configureData.parent = d->topData()->parentWinId;
++            while (XCheckIfEvent(X11->display, &otherEvent,
++                                 &qt_configure_event_scanner, (XPointer)&configureData)) {
+                 if (qt_x11EventFilter(&otherEvent))
+                     continue;
+ 
+@@ -5316,13 +5340,19 @@ bool QETWidget::translateConfigEvent(con
+                 newSize.setWidth(otherEvent.xconfigure.width);
+                 newSize.setHeight(otherEvent.xconfigure.height);
+ 
++                trust = isVisible()
++                        && (configureData.parent == XNone ||
++                            configureData.parent == QX11Info::appRootWindow());
++
+                 if (otherEvent.xconfigure.send_event || trust) {
+                     newCPos.rx() = otherEvent.xconfigure.x +
+                                    otherEvent.xconfigure.border_width;
+                     newCPos.ry() = otherEvent.xconfigure.y +
+                                    otherEvent.xconfigure.border_width;
+                     isCPos = true;
+-                }
++                } else {
++                    isCPos = false;
++               }
+             }
+ #ifndef QT_NO_XSYNC
+             qt_sync_request_event_data sync_event;
+@@ -5335,9 +5365,14 @@ bool QETWidget::translateConfigEvent(con
+         }
+ 
+         if (!isCPos) {
+-            // we didn't get an updated position of the toplevel.
+-            // either we haven't moved or there is a bug in the window manager.
+-            // anyway, let's query the position to be certain.
++            // If the last configure event didn't have a trustable position,
++            // it's necessary to query, see ICCCM 4.24:
++            //
++            //  Any real ConfigureNotify event on a top-level window implies
++            //  that the window’s position on the root may have changed, even
++            //  though the event reports that the window’s position in its
++            //  parent is unchanged because the window may have been reparented.
++
+             int x, y;
+             Window child;
+             XTranslateCoordinates(X11->display, internalWinId(),