rev 9362 - trunk/packages/qt-x11-free/debian/patches
Fathi Boudra
fabo at alioth.debian.org
Sat Feb 9 10:38:30 UTC 2008
Author: fabo
Date: 2008-02-09 10:38:29 +0000 (Sat, 09 Feb 2008)
New Revision: 9362
Added:
trunk/packages/qt-x11-free/debian/patches/0086-revert-qt-khmer-fix.diff
trunk/packages/qt-x11-free/debian/patches/0087-use-xrandr-1.2.diff
Log:
Introduced qt-copy patches.
Added: trunk/packages/qt-x11-free/debian/patches/0086-revert-qt-khmer-fix.diff
===================================================================
--- trunk/packages/qt-x11-free/debian/patches/0086-revert-qt-khmer-fix.diff (rev 0)
+++ trunk/packages/qt-x11-free/debian/patches/0086-revert-qt-khmer-fix.diff 2008-02-09 10:38:29 UTC (rev 9362)
@@ -0,0 +1,40 @@
+qt-bugs@ issue :
+bugs.kde.org number :
+applied: no
+author: Dirk Mueller <mueller at kde.org>
+
+according to bug 345459, this fix for stacking letters from 3.3.8
+made it only a lot worse. revert.
+
+
+--- a/src/kernel/qfontengine_x11.cpp
++++ b/src/kernel/qfontengine_x11.cpp
+@@ -2675,23 +2675,16 @@
+ // ###### fix the case where we have y advances. How do we handle this in Uniscribe?????
+ if (positions[i].new_advance) {
+ item->advances[i] = item->flags & QTextEngine::RightToLeft
+- ? -qRound((positions[i].x_advance >> 6)*scale)
++ ? -qRound((positions[i].x_advance >> 6)*scale)
+ : qRound((positions[i].x_advance >> 6)*scale);
+ } else {
+ item->advances[i] += item->flags & QTextEngine::RightToLeft
+- ? -qRound((positions[i].x_advance >> 6)*scale)
++ ? -qRound((positions[i].x_advance >> 6)*scale)
+ : qRound((positions[i].x_advance >> 6)*scale);
+ }
+- int back = 0;
+- item->offsets[i].x = qRound((positions[i].x_pos >> 6)*scale);
+- item->offsets[i].y = qRound((positions[i].y_pos >> 6)*scale);
+- while (positions[i-back].back) {
+- back += positions[i - back].back;
+- item->offsets[i].x += qRound((positions[i - back].x_pos >> 6)*scale);
+- item->offsets[i].y += qRound((positions[i - back].y_pos >> 6)*scale);
+- }
+- item->offsets[i].y = -item->offsets[i].y;
+- back = positions[i].back;
++ item->offsets[i].x = qRound((positions[i].x_pos >> 6)*scale);
++ item->offsets[i].y = -qRound((positions[i].y_pos >> 6)*scale);
++ int back = positions[i].back;
+ if (item->flags & QTextEngine::RightToLeft) {
+ while (back--) {
+ item->offsets[i].x -= item->advances[i-back];
Added: trunk/packages/qt-x11-free/debian/patches/0087-use-xrandr-1.2.diff
===================================================================
--- trunk/packages/qt-x11-free/debian/patches/0087-use-xrandr-1.2.diff (rev 0)
+++ trunk/packages/qt-x11-free/debian/patches/0087-use-xrandr-1.2.diff 2008-02-09 10:38:29 UTC (rev 9362)
@@ -0,0 +1,106 @@
+qt-bugs@ issue :
+bugs.kde.org number :
+applied: no
+author: Dirk Mueller <mueller at kde.org>
+
+support xrandr 1.2 configurations. same patch like for trunk qt-copy,
+please see there for details.
+
+
+--- a/src/kernel/qdesktopwidget_x11.cpp
++++ b/src/kernel/qdesktopwidget_x11.cpp
+@@ -107,7 +107,7 @@
+ screens[i] = 0;
+ }
+
+- delete [] screens;
++ free(screens);
+ }
+
+ if ( rects ) delete [] rects;
+@@ -119,30 +119,33 @@
+ // get the screen count
+ #ifndef QT_NO_XINERAMA
+ XineramaScreenInfo *xinerama_screeninfo = 0;
+- int unused;
++ int unused, newScreenCount;
+ use_xinerama = (XineramaQueryExtension(QPaintDevice::x11AppDisplay(),
+ &unused, &unused) &&
+ XineramaIsActive(QPaintDevice::x11AppDisplay()));
+
+ if (use_xinerama) {
+ xinerama_screeninfo =
+- XineramaQueryScreens(QPaintDevice::x11AppDisplay(), &screenCount);
++ XineramaQueryScreens(QPaintDevice::x11AppDisplay(), &newScreenCount);
++
++ if (xinerama_screeninfo)
+ defaultScreen = 0;
+ } else
+ #endif // QT_NO_XINERAMA
+ {
+ defaultScreen = DefaultScreen(QPaintDevice::x11AppDisplay());
+- screenCount = ScreenCount(QPaintDevice::x11AppDisplay());
++ newScreenCount = ScreenCount(QPaintDevice::x11AppDisplay());
++ use_xinerama = false;
+ }
+
+ delete [] rects;
+- rects = new QRect[ screenCount ];
++ rects = new QRect[ newScreenCount ];
+ delete [] workareas;
+- workareas = new QRect[ screenCount ];
++ workareas = new QRect[ newScreenCount ];
+
+ // get the geometry of each screen
+- int i, x, y, w, h;
+- for ( i = 0; i < screenCount; i++ ) {
++ int i, j, x, y, w, h;
++ for ( i = 0, j = 0; i < newScreenCount; i++ ) {
+
+ #ifndef QT_NO_XINERAMA
+ if (use_xinerama) {
+@@ -159,11 +162,33 @@
+ h = HeightOfScreen(ScreenOfDisplay(QPaintDevice::x11AppDisplay(), i));
+ }
+
+- rects[i].setRect(x, y, w, h);
+ workareas[i] = QRect();
++ rects[j].setRect(x, y, w, h);
++
++ // overlapping?
++ if (j > 0 && rects[j-1].intersects(rects[j])) {
++ // pick the bigger one, ignore the other
++ if ((rects[j].width()*rects[j].height()) >
++ (rects[j-1].width()*rects[j-1].height()))
++ rects[j-1] = rects[j];
++ }
++ else
++ j++;
++ }
++
++ if (screens) {
++ // leaks QWidget* pointers on purpose, can't delete them as pointer escapes
++ screens = (QWidget**) realloc(screens, j * sizeof(QWidget*));
++ if (j > screenCount)
++ memset(&screens[screenCount], 0, (j-screenCount) * sizeof(QWidget*));
+ }
+
++ screenCount = j;
++
+ #ifndef QT_NO_XINERAMA
++ if (use_xinerama && screenCount == 1)
++ use_xinerama = false;
++
+ if (xinerama_screeninfo)
+ XFree(xinerama_screeninfo);
+ #endif // QT_NO_XINERAMA
+@@ -216,8 +241,7 @@
+ screen = d->defaultScreen;
+
+ if ( ! d->screens ) {
+- d->screens = new QWidget*[ d->screenCount ];
+- memset( d->screens, 0, d->screenCount * sizeof( QWidget * ) );
++ d->screens = (QWidget**) calloc( d->screenCount, sizeof(QWidget*));
+ d->screens[ d->defaultScreen ] = this;
+ }
+
More information about the pkg-kde-commits
mailing list