diff options
Diffstat (limited to 'dev-qt/qt-meta/files')
-rw-r--r-- | dev-qt/qt-meta/files/0001-dnd_optimization.patch | 187 | ||||
-rw-r--r-- | dev-qt/qt-meta/files/0002-dnd_active_window_fix.patch | 189 | ||||
-rw-r--r-- | dev-qt/qt-meta/files/0038-dragobject-dont-prefer-unknown.patch | 57 | ||||
-rw-r--r-- | dev-qt/qt-meta/files/0044-qscrollview-windowactivate-fix.diff | 38 | ||||
-rw-r--r-- | dev-qt/qt-meta/files/0047-fix-kmenu-widget.diff | 25 | ||||
-rw-r--r-- | dev-qt/qt-meta/files/0048-qclipboard_hack_80072.patch | 48 | ||||
-rw-r--r-- | dev-qt/qt-meta/files/qt-3.3.8-fix-compiler-detection.patch | 22 | ||||
-rw-r--r-- | dev-qt/qt-meta/files/qt-3.3.8-immqt+gcc-4.3.patch | 20 | ||||
-rw-r--r-- | dev-qt/qt-meta/files/qt-3.3.8-libpng15.patch | 212 | ||||
-rw-r--r-- | dev-qt/qt-meta/files/qt-3.3.8-mips.patch | 39 | ||||
-rw-r--r-- | dev-qt/qt-meta/files/qt-3.3.8-seli-xinerama.patch | 49 | ||||
-rw-r--r-- | dev-qt/qt-meta/files/qt-3.3.8-uic-fix.patch | 18 | ||||
-rw-r--r-- | dev-qt/qt-meta/files/qt-3.3.8-visibility.patch | 159 | ||||
-rw-r--r-- | dev-qt/qt-meta/files/qt-3.3.8b-cjk-fix.patch | 32 | ||||
-rw-r--r-- | dev-qt/qt-meta/files/qt-ulibc.patch | 13 |
15 files changed, 1108 insertions, 0 deletions
diff --git a/dev-qt/qt-meta/files/0001-dnd_optimization.patch b/dev-qt/qt-meta/files/0001-dnd_optimization.patch new file mode 100644 index 00000000..d9de2846 --- /dev/null +++ b/dev-qt/qt-meta/files/0001-dnd_optimization.patch @@ -0,0 +1,187 @@ +qt-bugs@ issue : 16115 +applied: no +author: Lubos Lunak <l.lunak@kde.org> + +See http://lists.kde.org/?t=104388858900001&r=1&w=2 + + +--- src/kernel/qdnd_x11.cpp.sav 2003-02-05 16:09:45.000000000 +0100 ++++ src/kernel/qdnd_x11.cpp 2003-02-07 16:14:49.000000000 +0100 +@@ -49,13 +49,15 @@ + #include "qdragobject.h" + #include "qobjectlist.h" + #include "qcursor.h" ++#include "qbitmap.h" ++#include "qpainter.h" + + #include "qt_x11_p.h" + + // conflict resolution + +-// unused, may be used again later: const int XKeyPress = KeyPress; +-// unused, may be used again later: const int XKeyRelease = KeyRelease; ++const int XKeyPress = KeyPress; ++const int XKeyRelease = KeyRelease; + #undef KeyPress + #undef KeyRelease + +@@ -249,20 +251,47 @@ class QShapedPixmapWidget : public QWidg + public: + QShapedPixmapWidget(int screen = -1) : + QWidget(QApplication::desktop()->screen( screen ), +- 0, WStyle_Customize | WStyle_Tool | WStyle_NoBorder | WX11BypassWM ) ++ 0, WStyle_Customize | WStyle_Tool | WStyle_NoBorder | WX11BypassWM ), oldpmser( 0 ), oldbmser( 0 ) + { + } + +- void setPixmap(QPixmap pm) ++ void setPixmap(QPixmap pm, QPoint hot) + { +- if ( pm.mask() ) { ++ int bmser = pm.mask() ? pm.mask()->serialNumber() : 0; ++ if( oldpmser == pm.serialNumber() && oldbmser == bmser ++ && oldhot == hot ) ++ return; ++ oldpmser = pm.serialNumber(); ++ oldbmser = bmser; ++ oldhot = hot; ++ bool hotspot_in = !(hot.x() < 0 || hot.y() < 0 || hot.x() >= pm.width() || hot.y() >= pm.height()); ++// if the pixmap has hotspot in its area, make a "hole" in it at that position ++// this will allow XTranslateCoordinates() to find directly the window below the cursor instead ++// of finding this pixmap, and therefore there won't be needed any (slow) search for the window ++// using findRealWindow() ++ if( hotspot_in ) { ++ QBitmap mask = pm.mask() ? *pm.mask() : QBitmap( pm.width(), pm.height()); ++ if( !pm.mask()) ++ mask.fill( Qt::color1 ); ++ QPainter p( &mask ); ++ p.setPen( Qt::color0 ); ++ p.drawPoint( hot.x(), hot.y()); ++ p.end(); ++ pm.setMask( mask ); ++ setMask( mask ); ++ } else if ( pm.mask() ) { + setMask( *pm.mask() ); + } else { + clearMask(); + } + resize(pm.width(),pm.height()); + setErasePixmap(pm); ++ erase(); + } ++private: ++ int oldpmser; ++ int oldbmser; ++ QPoint oldhot; + }; + + QShapedPixmapWidget * qt_xdnd_deco = 0; +@@ -859,6 +888,45 @@ void QDragManager::timerEvent( QTimerEve + move( QCursor::pos() ); + } + ++static bool qt_xdnd_was_move = false; ++static bool qt_xdnd_found = false; ++// check whole incoming X queue for move events ++// checking whole queue is done by always returning False in the predicate ++// if there's another move event in the queue, and there's not a mouse button ++// or keyboard or ClientMessage event before it, the current move event ++// may be safely discarded ++// this helps avoiding being overloaded by being flooded from many events ++// from the XServer ++static ++Bool qt_xdnd_predicate( Display*, XEvent* ev, XPointer ) ++{ ++ if( qt_xdnd_found ) ++ return False; ++ if( ev->type == MotionNotify ) ++ { ++ qt_xdnd_was_move = true; ++ qt_xdnd_found = true; ++ } ++ if( ev->type == ButtonPress || ev->type == ButtonRelease ++ || ev->type == XKeyPress || ev->type == XKeyRelease ++ || ev->type == ClientMessage ) ++ { ++ qt_xdnd_was_move = false; ++ qt_xdnd_found = true; ++ } ++ return False; ++} ++ ++static ++bool qt_xdnd_another_movement() ++{ ++ qt_xdnd_was_move = false; ++ qt_xdnd_found = false; ++ XEvent dummy; ++ XCheckIfEvent( qt_xdisplay(), &dummy, qt_xdnd_predicate, NULL ); ++ return qt_xdnd_was_move; ++} ++ + bool QDragManager::eventFilter( QObject * o, QEvent * e) + { + if ( beingCancelled ) { +@@ -881,8 +949,10 @@ bool QDragManager::eventFilter( QObject + + if ( e->type() == QEvent::MouseMove ) { + QMouseEvent* me = (QMouseEvent *)e; +- updateMode(me->stateAfter()); +- move( me->globalPos() ); ++ if( !qt_xdnd_another_movement()) { ++ updateMode(me->stateAfter()); ++ move( me->globalPos() ); ++ } + return TRUE; + } else if ( e->type() == QEvent::MouseButtonRelease ) { + qApp->removeEventFilter( this ); +@@ -1106,7 +1176,7 @@ void QDragManager::move( const QPoint & + delete qt_xdnd_deco; + qt_xdnd_deco = new QShapedPixmapWidget( screen ); + } +- updatePixmap(); ++ updatePixmap( globalPos ); + + if ( qt_xdnd_source_sameanswer.contains( globalPos ) && + qt_xdnd_source_sameanswer.isValid() ) { +@@ -1679,7 +1749,7 @@ bool QDragManager::drag( QDragObject * o + // qt_xdnd_source_object persists until we get an xdnd_finish message + } + +-void QDragManager::updatePixmap() ++void QDragManager::updatePixmap( const QPoint& cursorPos ) + { + if ( qt_xdnd_deco ) { + QPixmap pm; +@@ -1694,9 +1764,8 @@ void QDragManager::updatePixmap() + defaultPm = new QPixmap(default_pm); + pm = *defaultPm; + } +- qt_xdnd_deco->setPixmap(pm); +- qt_xdnd_deco->move(QCursor::pos()-pm_hot); +- qt_xdnd_deco->repaint(FALSE); ++ qt_xdnd_deco->setPixmap(pm, pm_hot); ++ qt_xdnd_deco->move(cursorPos-pm_hot); + //if ( willDrop ) { + qt_xdnd_deco->show(); + //} else { +@@ -1705,4 +1774,9 @@ void QDragManager::updatePixmap() + } + } + ++void QDragManager::updatePixmap() ++{ ++ updatePixmap( QCursor::pos()); ++} ++ + #endif // QT_NO_DRAGANDDROP +--- src/kernel/qdragobject.h.sav 2002-11-01 19:25:07.000000000 +0100 ++++ src/kernel/qdragobject.h 2001-01-01 01:01:00.000000000 +0100 +@@ -245,6 +245,7 @@ private: + void move( const QPoint & ); + void drop(); + void updatePixmap(); ++ void updatePixmap( const QPoint& cursorPos ); + + private: + QDragObject * object; diff --git a/dev-qt/qt-meta/files/0002-dnd_active_window_fix.patch b/dev-qt/qt-meta/files/0002-dnd_active_window_fix.patch new file mode 100644 index 00000000..4b497d64 --- /dev/null +++ b/dev-qt/qt-meta/files/0002-dnd_active_window_fix.patch @@ -0,0 +1,189 @@ +qt-bugs@ issue : 25122 +applied: no +author: Lubos Lunak <l.lunak@kde.org> + + Hello, + + for example: Open Konqueror window, showing some files. Start dragging one + desktop icon. If you press/release Ctrl, there'll be a '+' attached to the + icon, showing the DND operation. Now, while still doing DND, make the + Konqueror window active (Alt+Tab with KDE-3.1.2+, hover over its taskbar + entry, Ctrl+Fn to switch to a different virtual desktop, etc.). As soon as + the app performing DND is not the active application, and the mouse is not + moving, pressing/releasing Ctrl doesn't do anything, the state only updates + when the mouse is moved. + + This is caused by the fact that Qt has only pointer grab when doing DND, but + doesn't have keyboard grab. I actually consider this a good thing, because + the only keys important for DND are modifiers, and they come together with + pointer events, and not having keyboard grab allows using keyboard shortcuts + like Alt+Tab while DND. However, when the mouse is not moved, and only a + modifier key is pressed/released, the app won't get any mouse event, and + won't also get the keyboard event. + + The attached patch changes Qt to explicitly check the modifiers state using + XQueryPointer() if there's wasn't recently any mouse/keyboard event, which + ensures the state is updated even in the situation described above. + +--- src/kernel/qapplication_x11.cpp.sav 2003-06-21 12:31:35.000000000 +0200 ++++ src/kernel/qapplication_x11.cpp 2003-06-21 12:35:44.000000000 +0200 +@@ -4053,7 +4053,7 @@ void QApplication::closePopup( QWidget * + // Keyboard event translation + // + +-static int translateButtonState( int s ) ++int qt_x11_translateButtonState( int s ) + { + int bst = 0; + if ( s & Button1Mask ) +@@ -4119,7 +4119,7 @@ bool QETWidget::translateMouseEvent( con + pos.ry() = lastMotion.y; + globalPos.rx() = lastMotion.x_root; + globalPos.ry() = lastMotion.y_root; +- state = translateButtonState( lastMotion.state ); ++ state = qt_x11_translateButtonState( lastMotion.state ); + if ( qt_button_down && (state & (LeftButton | + MidButton | + RightButton ) ) == 0 ) +@@ -4143,7 +4143,7 @@ bool QETWidget::translateMouseEvent( con + pos.ry() = xevent->xcrossing.y; + globalPos.rx() = xevent->xcrossing.x_root; + globalPos.ry() = xevent->xcrossing.y_root; +- state = translateButtonState( xevent->xcrossing.state ); ++ state = qt_x11_translateButtonState( xevent->xcrossing.state ); + if ( qt_button_down && (state & (LeftButton | + MidButton | + RightButton ) ) == 0 ) +@@ -4155,7 +4155,7 @@ bool QETWidget::translateMouseEvent( con + pos.ry() = event->xbutton.y; + globalPos.rx() = event->xbutton.x_root; + globalPos.ry() = event->xbutton.y_root; +- state = translateButtonState( event->xbutton.state ); ++ state = qt_x11_translateButtonState( event->xbutton.state ); + switch ( event->xbutton.button ) { + case Button1: button = LeftButton; break; + case Button2: button = MidButton; break; +@@ -4950,7 +4950,7 @@ bool QETWidget::translateKeyEventInterna + XKeyEvent xkeyevent = event->xkey; + + // save the modifier state, we will use the keystate uint later by passing +- // it to translateButtonState ++ // it to qt_x11_translateButtonState + uint keystate = event->xkey.state; + // remove the modifiers where mode_switch exists... HPUX machines seem + // to have alt *AND* mode_switch both in Mod1Mask, which causes +@@ -5064,7 +5064,7 @@ bool QETWidget::translateKeyEventInterna + } + #endif // !QT_NO_XIM + +- state = translateButtonState( keystate ); ++ state = qt_x11_translateButtonState( keystate ); + + static int directionKeyEvent = 0; + if ( qt_use_rtl_extensions && type == QEvent::KeyRelease ) { +--- src/kernel/qdnd_x11.cpp.sav 2003-06-30 15:26:42.000000000 +0200 ++++ src/kernel/qdnd_x11.cpp 2003-06-30 15:32:23.000000000 +0200 +@@ -114,6 +114,8 @@ Atom qt_xdnd_finished; + Atom qt_xdnd_type_list; + const int qt_xdnd_version = 4; + ++extern int qt_x11_translateButtonState( int s ); ++ + // Actions + // + // The Xdnd spec allows for user-defined actions. This could be implemented +@@ -198,6 +200,8 @@ static Atom qt_xdnd_source_current_time; + static int qt_xdnd_current_screen = -1; + // state of dragging... true if dragging, false if not + bool qt_xdnd_dragging = FALSE; ++// need to check state of keyboard modifiers ++static bool need_modifiers_check = FALSE; + + // dict of payload data, sorted by type atom + static QIntDict<QByteArray> * qt_xdnd_target_data = 0; +@@ -879,8 +883,20 @@ void qt_handle_xdnd_finished( QWidget *, + + void QDragManager::timerEvent( QTimerEvent* e ) + { +- if ( e->timerId() == heartbeat && qt_xdnd_source_sameanswer.isNull() ) +- move( QCursor::pos() ); ++ if ( e->timerId() == heartbeat ) { ++ if( need_modifiers_check ) { ++ Window root, child; ++ int root_x, root_y, win_x, win_y; ++ unsigned int mask; ++ XQueryPointer( qt_xdisplay(), qt_xrootwin( qt_xdnd_current_screen ), ++ &root, &child, &root_x, &root_y, &win_x, &win_y, &mask ); ++ if( updateMode( (ButtonState)qt_x11_translateButtonState( mask ))) ++ qt_xdnd_source_sameanswer = QRect(); // force move ++ } ++ need_modifiers_check = TRUE; ++ if( qt_xdnd_source_sameanswer.isNull() ) ++ move( QCursor::pos() ); ++ } + } + + static bool qt_xdnd_was_move = false; +@@ -948,6 +964,7 @@ bool QDragManager::eventFilter( QObject + updateMode(me->stateAfter()); + move( me->globalPos() ); + } ++ need_modifiers_check = FALSE; + return TRUE; + } else if ( e->type() == QEvent::MouseButtonRelease ) { + qApp->removeEventFilter( this ); +@@ -986,9 +1003,11 @@ bool QDragManager::eventFilter( QObject + beingCancelled = FALSE; + qApp->exit_loop(); + } else { +- updateMode(ke->stateAfter()); +- qt_xdnd_source_sameanswer = QRect(); // force move +- move( QCursor::pos() ); ++ if( updateMode(ke->stateAfter())) { ++ qt_xdnd_source_sameanswer = QRect(); // force move ++ move( QCursor::pos() ); ++ } ++ need_modifiers_check = FALSE; + } + return TRUE; // Eat all key events + } +@@ -1014,10 +1033,10 @@ bool QDragManager::eventFilter( QObject + + + static Qt::ButtonState oldstate; +-void QDragManager::updateMode( ButtonState newstate ) ++bool QDragManager::updateMode( ButtonState newstate ) + { + if ( newstate == oldstate ) +- return; ++ return false; + const int both = ShiftButton|ControlButton; + if ( (newstate & both) == both ) { + global_requested_action = QDropEvent::Link; +@@ -1041,6 +1060,7 @@ void QDragManager::updateMode( ButtonSta + } + } + oldstate = newstate; ++ return true; + } + + +@@ -1707,6 +1727,7 @@ bool QDragManager::drag( QDragObject * o + qt_xdnd_source_sameanswer = QRect(); + move(QCursor::pos()); + heartbeat = startTimer(200); ++ need_modifiers_check = FALSE; + + #ifndef QT_NO_CURSOR + qApp->setOverrideCursor( arrowCursor ); +--- src/kernel/qdragobject.h.sav 2003-05-19 22:34:43.000000000 +0200 ++++ src/kernel/qdragobject.h 2001-01-01 01:01:00.000000000 +0100 +@@ -248,7 +248,7 @@ private: + + private: + QDragObject * object; +- void updateMode( ButtonState newstate ); ++ bool updateMode( ButtonState newstate ); + void updateCursor(); + + QWidget * dragSource; diff --git a/dev-qt/qt-meta/files/0038-dragobject-dont-prefer-unknown.patch b/dev-qt/qt-meta/files/0038-dragobject-dont-prefer-unknown.patch new file mode 100644 index 00000000..ae4163ae --- /dev/null +++ b/dev-qt/qt-meta/files/0038-dragobject-dont-prefer-unknown.patch @@ -0,0 +1,57 @@ +qt-bugs@ issue : 38642 +bugs.kde.org number : 71084 +applied: no +author: Lubos Lunak <l.lunak@kde.org> + +Hello, + + start Mozilla, go e.g. to http://kde.org, start KWrite (or basically any Qt +app that accepts text drops), select 'Conquer your Desktop!', and try to +drag&drop it onto KWrite. The only text pasted should be 'm'. + + I don't know much the related mimetype and encoding stuff, so I'm unsure +whose fault this actually is. The text drag is provided as a lot of +text/something targets, to list some text/_moz_htmlinfo, text/x-moz-url, +text/unicode and similar. The problem is, Kate uses QTextDrag::decode() with +no subtype specified, probably with the intention that as Kate is a text +editor, it can accept any text pasted. And since the first target provided by +mozilla is text/x-moz-url, (which moreover seems to be encoded as 16bit +unicode), the text dropped is completely wrong. You can easily see all +targets provided by Mozilla with see_mime.patch applied. + + Solution #1: Say that Kate (any pretty much everybody else expecting text) +should say "plain" as the subtype. In such case, I suggest you drop the +QTextDrag::decode() variant with no subtype specified, and stress more the +fact that not specifying a subtype can result in a lot of rubbish. It's +simply too tempting to leave the subtype empty and try to accept anything. + + Solution #2: When trying to accept anything, try to get useful data. Which +means either sorting the subtypes available somehow, checking only the ones +Qt knows. + + To me, #1 seems to be a better choice, or possibly at least something like +the attached QTextDrag patch, which simply always tries first "plain" subtype +if none is specified. With this patch, Mozilla even works (that's irony, of +course, Mozilla still pastes the text/plain text as HTML, but at least now it +pastes something where it's easy to point at the offender). + + +--- src/kernel/qdragobject.cpp.sav 2004-01-06 19:24:35.000000000 +0100 ++++ src/kernel/qdragobject.cpp 2004-01-06 19:47:01.000000000 +0100 +@@ -844,6 +844,16 @@ bool QTextDrag::decode( const QMimeSourc + { + if(!e) + return FALSE; ++ ++ // when subtype is not specified, try text/plain first, otherwise this may read ++ // things like text/x-moz-url even though better targets are available ++ if( subtype.isNull()) { ++ QCString subtmp = "plain"; ++ if( decode( e, str, subtmp )) { ++ subtype = subtmp; ++ return true; ++ } ++ } + + if ( e->cacheType == QMimeSource::Text ) { + str = *e->cache.txt.str; diff --git a/dev-qt/qt-meta/files/0044-qscrollview-windowactivate-fix.diff b/dev-qt/qt-meta/files/0044-qscrollview-windowactivate-fix.diff new file mode 100644 index 00000000..9a6df32a --- /dev/null +++ b/dev-qt/qt-meta/files/0044-qscrollview-windowactivate-fix.diff @@ -0,0 +1,38 @@ +qt-bugs@ issue : N45716 +applied: no +author: Enrico Ros <eros.kde@email.it> + +QScrollView unwanted repaint fix. + +This fixes the 'flashing' konqueror window on activation / deactivation by +saving 1 unwanted repaint (when konqueror window has background). +I tracked down to the problem to the internal QViewportWidget of the +QScrollView class. + +When a window is activated the activation event is recursively propagated +to all childs triggering the windowActivationChange() functions in the +widget it passes by. +What happens when the event gets to the Viewport? +At this point the event has already been handled by windowActivationChange() +of the parent widget (a QIconView for example) and has then been propagated +to the Viewport that will handle it with the default +QWidget::windowActivationChange implementation, maybe raising an unwanted +update(); so here we stop the event. +As an addition: if the parent reimplements the windowActivationChange() +function, mainly to block the update, it won't be happy if the child will +trigger the update. If the parent do not reimplement the function il will +inherits the default implementation and there is no need for the viewport's +one. + +--- src/widgets/qscrollview.cpp.orig 2004-03-29 10:17:04.000000000 +0000 ++++ src/widgets/qscrollview.cpp 2004-03-30 16:40:07.599978320 +0000 +@@ -1551,6 +1551,9 @@ + case QEvent::LayoutHint: + d->autoResizeHint(this); + break; ++ case QEvent::WindowActivate: ++ case QEvent::WindowDeactivate: ++ return TRUE; + default: + break; + } diff --git a/dev-qt/qt-meta/files/0047-fix-kmenu-widget.diff b/dev-qt/qt-meta/files/0047-fix-kmenu-widget.diff new file mode 100644 index 00000000..fb0bb167 --- /dev/null +++ b/dev-qt/qt-meta/files/0047-fix-kmenu-widget.diff @@ -0,0 +1,25 @@ +qt-bugs@ issue: N46882 +bugs.kde.org number: 77545 +applied: no +author: Stephan Binner <binner@kde.org> + +Fix wrong K menu width for the case of enabled side pixmap and a menu title +(like "Recently Used Applications") being longer than every other entry. + +Solution: Respect PanelKMenu::setMaximumSize() as up to Qt 3.2.3 + +Index: src/widgets/qpopupmenu.cpp +=================================================================== +RCS file: /home/kde/qt-copy/src/widgets/qpopupmenu.cpp,v +retrieving revision 1.60 +diff -u -3 -p -b -r1.60 qpopupmenu.cpp +--- src/widgets/qpopupmenu.cpp 29 Apr 2004 22:31:28 -0000 1.60 ++++ src/widgets/qpopupmenu.cpp 30 Apr 2004 01:11:59 -0000 +@@ -2531,7 +2531,7 @@ QSize QPopupMenu::sizeHint() const + + QPopupMenu* that = (QPopupMenu*) this; + //We do not need a resize here, just the sizeHint.. +- return that->updateSize(FALSE, FALSE).expandedTo( QApplication::globalStrut() ); ++ return that->updateSize(FALSE).expandedTo( QApplication::globalStrut() ); + } + diff --git a/dev-qt/qt-meta/files/0048-qclipboard_hack_80072.patch b/dev-qt/qt-meta/files/0048-qclipboard_hack_80072.patch new file mode 100644 index 00000000..74c60fb2 --- /dev/null +++ b/dev-qt/qt-meta/files/0048-qclipboard_hack_80072.patch @@ -0,0 +1,48 @@ +qt-bugs@ issue : none, probably even won't be +bugs.kde.org number : 80072 +applied: no +author: Lubos Lunak <l.lunak@kde.org> + +A crude hack for KDE #80072. No good idea how to fix it properly yet :(. + +--- src/kernel/qclipboard_x11.cpp.sav 2004-04-30 12:00:06.000000000 +0200 ++++ src/kernel/qclipboard_x11.cpp 2004-05-09 21:18:10.269264304 +0200 +@@ -109,6 +109,7 @@ static int pending_timer_id = 0; + static bool pending_clipboard_changed = FALSE; + static bool pending_selection_changed = FALSE; + ++Q_EXPORT bool qt_qclipboard_bailout_hack = false; + + // event capture mechanism for qt_xclb_wait_for_event + static bool waiting_for_data = FALSE; +@@ -453,6 +454,15 @@ static int qt_xclb_event_filter(XEvent * + return 0; + } + ++static bool selection_request_pending = false; ++ ++static Bool check_selection_request_pending( Display*, XEvent* e, XPointer ) ++ { ++ if( e->type == SelectionRequest && e->xselectionrequest.owner == owner->winId()) ++ selection_request_pending = true; ++ return False; ++ } ++ + bool qt_xclb_wait_for_event( Display *dpy, Window win, int type, XEvent *event, + int timeout ) + { +@@ -504,6 +514,14 @@ bool qt_xclb_wait_for_event( Display *dp + do { + if ( XCheckTypedWindowEvent(dpy,win,type,event) ) + return TRUE; ++ if( qt_qclipboard_bailout_hack ) { ++ XEvent dummy; ++ selection_request_pending = false; ++ if ( owner != NULL ) ++ XCheckIfEvent(dpy,&dummy,check_selection_request_pending,NULL); ++ if( selection_request_pending ) ++ return TRUE; ++ } + + now = QTime::currentTime(); + if ( started > now ) // crossed midnight diff --git a/dev-qt/qt-meta/files/qt-3.3.8-fix-compiler-detection.patch b/dev-qt/qt-meta/files/qt-3.3.8-fix-compiler-detection.patch new file mode 100644 index 00000000..203b71e6 --- /dev/null +++ b/dev-qt/qt-meta/files/qt-3.3.8-fix-compiler-detection.patch @@ -0,0 +1,22 @@ +--- qt-x11-free-3.3.8-orig/configure 2008-10-28 15:43:35.000000000 +0100 ++++ qt-x11-free-3.3.8/configure 2008-10-28 15:45:48.000000000 +0100 +@@ -3079,15 +3079,15 @@ + g++*) + # GNU C++ + QMAKE_CONF_COMPILER=`grep "QMAKE_CXX[^_A-Z0-9a-z]" $QMAKESPEC/qmake.conf | sed "s,.* *= *\(.*\)$,\1,"` +- COMPILER_VERSION=`${QMAKE_CONF_COMPILER} --version 2>/dev/null` ++ COMPILER_VERSION=`${QMAKE_CONF_COMPILER} -dumpversion 2>/dev/null` + case "$COMPILER_VERSION" in +- *2.95.*) ++ 2.95.*) + COMPILER_VERSION="2.95.*" + ;; +- *3.*) ++ 3.*) + COMPILER_VERSION="3.*" + ;; +- *4.*) ++ 4.*) + COMPILER_VERSION="4" + ;; + *) diff --git a/dev-qt/qt-meta/files/qt-3.3.8-immqt+gcc-4.3.patch b/dev-qt/qt-meta/files/qt-3.3.8-immqt+gcc-4.3.patch new file mode 100644 index 00000000..65610e37 --- /dev/null +++ b/dev-qt/qt-meta/files/qt-3.3.8-immqt+gcc-4.3.patch @@ -0,0 +1,20 @@ +--- plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.cpp~ 2007-04-05 09:47:44.000000000 +0000 ++++ plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.cpp 2007-04-05 09:48:08.000000000 +0000 +@@ -44,6 +44,7 @@ + #include "qnoneinputcontextplugin.h" + #include <qinputcontextfactory.h> + #include <qsettings.h> ++#include <cstdlib> + + + QNoneInputContextPlugin::QNoneInputContextPlugin() +--- plugins/src/inputmethods/simple/qsimpleinputcontext.cpp~ 2007-04-05 09:48:46.000000000 +0000 ++++ plugins/src/inputmethods/simple/qsimpleinputcontext.cpp 2007-04-05 09:48:54.000000000 +0000 +@@ -45,6 +45,7 @@ + #include <qnamespace.h> + #include <qevent.h> + #include <qglobal.h> ++#include <algorithm> + + static const int ignoreKeys[] = { + Qt::Key_Shift, diff --git a/dev-qt/qt-meta/files/qt-3.3.8-libpng15.patch b/dev-qt/qt-meta/files/qt-3.3.8-libpng15.patch new file mode 100644 index 00000000..e64fea36 --- /dev/null +++ b/dev-qt/qt-meta/files/qt-3.3.8-libpng15.patch @@ -0,0 +1,212 @@ +$NetBSD: patch-as,v 1.5 2011/03/25 15:28:26 wiz Exp $ + +--- src/kernel/qpngio.cpp.orig 2007-02-02 10:01:15.000000000 -0400 ++++ src/kernel/qpngio.cpp +@@ -43,6 +43,7 @@ + #include "qiodevice.h" + + #include <png.h> ++#include <zlib.h> + + + #ifdef Q_OS_TEMP +@@ -123,9 +124,24 @@ void setup_qt( QImage& image, png_struct + png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, + 0, 0, 0); + ++ png_colorp info_ptr_palette = NULL; ++ int info_ptr_num_palette = 0; ++ if (png_get_valid(png_ptr, info_ptr, PNG_INFO_PLTE)) { ++ png_get_PLTE(png_ptr, info_ptr, &info_ptr_palette, &info_ptr_num_palette); ++ } ++ ++ png_bytep info_ptr_trans_alpha = NULL; ++ int info_ptr_num_trans = 0; ++ png_color_16p info_ptr_trans_color = NULL; ++ ++ if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) { ++ png_get_tRNS(png_ptr, info_ptr, &info_ptr_trans_alpha, &info_ptr_num_trans, &info_ptr_trans_color); ++ } ++ ++ + if ( color_type == PNG_COLOR_TYPE_GRAY ) { + // Black & White or 8-bit grayscale +- if ( bit_depth == 1 && info_ptr->channels == 1 ) { ++ if ( bit_depth == 1 && png_get_channels(png_ptr, info_ptr) == 1 ) { + png_set_invert_mono( png_ptr ); + png_read_update_info( png_ptr, info_ptr ); + if (!image.create( width, height, 1, 2, QImage::BigEndian )) +@@ -159,7 +175,7 @@ void setup_qt( QImage& image, png_struct + image.setColor( i, qRgba(c,c,c,0xff) ); + } + if ( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ) { +- const int g = info_ptr->trans_values.gray; ++ const int g = info_ptr_trans_color->gray; + if (g < ncols) { + image.setAlphaBuffer(TRUE); + image.setColor(g, image.color(g) & RGB_MASK); +@@ -168,7 +184,7 @@ void setup_qt( QImage& image, png_struct + } + } else if ( color_type == PNG_COLOR_TYPE_PALETTE + && png_get_valid(png_ptr, info_ptr, PNG_INFO_PLTE) +- && info_ptr->num_palette <= 256 ) ++ && info_ptr_num_palette <= 256 ) + { + // 1-bit and 8-bit color + if ( bit_depth != 1 ) +@@ -176,28 +192,28 @@ void setup_qt( QImage& image, png_struct + png_read_update_info( png_ptr, info_ptr ); + png_get_IHDR(png_ptr, info_ptr, + &width, &height, &bit_depth, &color_type, 0, 0, 0); +- if (!image.create(width, height, bit_depth, info_ptr->num_palette, ++ if (!image.create(width, height, bit_depth, info_ptr_num_palette, + QImage::BigEndian)) + return; + int i = 0; + if ( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ) { + image.setAlphaBuffer( TRUE ); +- while ( i < info_ptr->num_trans ) { ++ while ( i < info_ptr_num_trans ) { + image.setColor(i, qRgba( +- info_ptr->palette[i].red, +- info_ptr->palette[i].green, +- info_ptr->palette[i].blue, +- info_ptr->trans[i] ++ info_ptr_palette[i].red, ++ info_ptr_palette[i].green, ++ info_ptr_palette[i].blue, ++ info_ptr_trans_alpha[i] + ) + ); + i++; + } + } +- while ( i < info_ptr->num_palette ) { ++ while ( i < info_ptr_num_palette ) { + image.setColor(i, qRgba( +- info_ptr->palette[i].red, +- info_ptr->palette[i].green, +- info_ptr->palette[i].blue, ++ info_ptr_palette[i].red, ++ info_ptr_palette[i].green, ++ info_ptr_palette[i].blue, + 0xff + ) + ); +@@ -284,7 +300,7 @@ void read_png_image(QImageIO* iio) + return; + } + +- if (setjmp(png_ptr->jmpbuf)) { ++ if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); + iio->setStatus(-4); + return; +@@ -469,7 +485,7 @@ bool QPNGImageWriter::writeImage(const Q + return FALSE; + } + +- if (setjmp(png_ptr->jmpbuf)) { ++ if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_write_struct(&png_ptr, &info_ptr); + return FALSE; + } +@@ -491,10 +507,16 @@ bool QPNGImageWriter::writeImage(const Q + + png_set_write_fn(png_ptr, (void*)this, qpiw_write_fn, qpiw_flush_fn); + ++#warning XXXtnn not too sure about this ++/* ++according to png.h, channels is only used on read, not writes, so we ++should be able to comment this out. ++ + info_ptr->channels = + (image.depth() == 32) + ? (image.hasAlphaBuffer() ? 4 : 3) + : 1; ++*/ + + png_set_IHDR(png_ptr, info_ptr, image.width(), image.height(), + image.depth() == 1 ? 1 : 8 /* per channel */, +@@ -504,11 +526,12 @@ bool QPNGImageWriter::writeImage(const Q + : PNG_COLOR_TYPE_RGB + : PNG_COLOR_TYPE_PALETTE, 0, 0, 0); + ++ png_color_8 sig_bit; ++ sig_bit.red = 8; ++ sig_bit.green = 8; ++ sig_bit.blue = 8; ++ png_set_sBIT(png_ptr, info_ptr, &sig_bit); + +- //png_set_sBIT(png_ptr, info_ptr, 8); +- info_ptr->sig_bit.red = 8; +- info_ptr->sig_bit.green = 8; +- info_ptr->sig_bit.blue = 8; + + if (image.depth() == 1 && image.bitOrder() == QImage::LittleEndian) + png_set_packswap(png_ptr); +@@ -522,11 +545,14 @@ bool QPNGImageWriter::writeImage(const Q + png_set_PLTE(png_ptr, info_ptr, palette, num_palette); + int* trans = new int[num_palette]; + int num_trans = 0; ++ png_colorp info_ptr_palette = NULL; ++ int tmp; ++ png_get_PLTE(png_ptr, info_ptr, &info_ptr_palette, &tmp); + for (int i=0; i<num_palette; i++) { + QRgb rgb=image.color(i); +- info_ptr->palette[i].red = qRed(rgb); +- info_ptr->palette[i].green = qGreen(rgb); +- info_ptr->palette[i].blue = qBlue(rgb); ++ info_ptr_palette[i].red = qRed(rgb); ++ info_ptr_palette[i].green = qGreen(rgb); ++ info_ptr_palette[i].blue = qBlue(rgb); + if (image.hasAlphaBuffer()) { + trans[i] = rgb >> 24; + if (trans[i] < 255) { +@@ -534,6 +560,7 @@ bool QPNGImageWriter::writeImage(const Q + } + } + } ++ png_set_PLTE(png_ptr, info_ptr, info_ptr_palette, num_palette); + if (num_trans) { + copy_trans = new png_byte[num_trans]; + for (int i=0; i<num_trans; i++) +@@ -544,7 +571,10 @@ bool QPNGImageWriter::writeImage(const Q + } + + if ( image.hasAlphaBuffer() ) { +- info_ptr->sig_bit.alpha = 8; ++ png_color_8p sig_bit; ++ png_get_sBIT(png_ptr, info_ptr, &sig_bit); ++ sig_bit->alpha = 8; ++ png_set_sBIT(png_ptr, info_ptr, sig_bit); + } + + // Swap ARGB to RGBA (normal PNG format) before saving on +@@ -1030,7 +1060,7 @@ int QPNGFormat::decode(QImage& img, QIma + return -1; + } + +- if (setjmp((png_ptr)->jmpbuf)) { ++ if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_read_struct(&png_ptr, &info_ptr, 0); + image = 0; + return -1; +@@ -1057,7 +1087,7 @@ int QPNGFormat::decode(QImage& img, QIma + + if ( !png_ptr ) return 0; + +- if (setjmp(png_ptr->jmpbuf)) { ++ if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_read_struct(&png_ptr, &info_ptr, 0); + image = 0; + state = MovieStart; +@@ -1117,7 +1147,7 @@ void QPNGFormat::end(png_structp png, pn + consumer->frameDone(QPoint(offx,offy),r); + consumer->end(); + state = FrameStart; +- unused_data = (int)png->buffer_size; // Since libpng doesn't tell us ++ unused_data = png_process_data_pause(png, 0); + } + + #ifdef PNG_USER_CHUNKS_SUPPORTED diff --git a/dev-qt/qt-meta/files/qt-3.3.8-mips.patch b/dev-qt/qt-meta/files/qt-3.3.8-mips.patch new file mode 100644 index 00000000..1f70900f --- /dev/null +++ b/dev-qt/qt-meta/files/qt-3.3.8-mips.patch @@ -0,0 +1,39 @@ +Bug 210551. +Fix compilation on mips + +Original commit message by Christopher Martin, debian bug 342545. + + * Add a patch, courtesy of Steve Langasek, that fixes + qt-x11-free's longstanding intermittent FTBFS on hppa, caused + by "the bogus assumption in src/tools/qlocale.cpp that a + char[] can be cast to a double *." (Closes: #342545) + +--- qt-x11-free-3.3.6.orig/src/tools/qlocale.cpp ++++ qt-x11-free-3.3.6/src/tools/qlocale.cpp +@@ -122,13 +122,24 @@ + #endif + + // We can't rely on -NAN, since all operations on a NAN should return a NAN. ++static double be_neg_nan; ++static double le_neg_nan; + static const unsigned char be_neg_nan_bytes[] = { 0xff, 0xf8, 0, 0, 0, 0, 0, 0 }; + static const unsigned char le_neg_nan_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf8, 0xff }; ++static bool neg_nan_init = false; ++ + static inline double negNan() + { ++ if (!neg_nan_init) ++ { ++ memcpy(&be_neg_nan,be_neg_nan_bytes,sizeof(be_neg_nan_bytes)); ++ memcpy(&le_neg_nan,le_neg_nan_bytes,sizeof(le_neg_nan_bytes)); ++ neg_nan_init = true; ++ } + return (ByteOrder == BigEndian ? +- *((const double *) be_neg_nan_bytes) : +- *((const double *) le_neg_nan_bytes)); ++ be_neg_nan : ++ le_neg_nan); ++ + } + + // Sizes as defined by the ISO C99 standard - fallback diff --git a/dev-qt/qt-meta/files/qt-3.3.8-seli-xinerama.patch b/dev-qt/qt-meta/files/qt-3.3.8-seli-xinerama.patch new file mode 100644 index 00000000..9fdd97a3 --- /dev/null +++ b/dev-qt/qt-meta/files/qt-3.3.8-seli-xinerama.patch @@ -0,0 +1,49 @@ +--- src/kernel/qapplication_x11.cpp.sav 2006-06-01 13:31:04.000000000 +0200 ++++ src/kernel/qapplication_x11.cpp 2006-06-01 13:33:07.000000000 +0200 +@@ -271,6 +271,7 @@ Atom qt_net_wm_frame_strut = 0; // KDE + Atom qt_net_wm_state_stays_on_top = 0; // KDE extension + Atom qt_net_wm_pid = 0; + Atom qt_net_wm_user_time = 0; ++Atom qt_net_wm_full_placement = 0; // KDE extension + // Enlightenment support + Atom qt_enlightenment_desktop = 0; + +@@ -1922,6 +1923,7 @@ void qt_init_internal( int *argcptr, cha + &qt_net_wm_state_stays_on_top ); + qt_x11_intern_atom( "_NET_WM_PID", &qt_net_wm_pid ); + qt_x11_intern_atom( "_NET_WM_USER_TIME", &qt_net_wm_user_time ); ++ qt_x11_intern_atom( "_NET_WM_FULL_PLACEMENT", &qt_net_wm_full_placement ); + qt_x11_intern_atom( "ENLIGHTENMENT_DESKTOP", &qt_enlightenment_desktop ); + qt_x11_intern_atom( "_NET_WM_NAME", &qt_net_wm_name ); + qt_x11_intern_atom( "_NET_WM_ICON_NAME", &qt_net_wm_icon_name ); +--- src/dialogs/qdialog.cpp.sav 2006-03-17 14:33:44.000000000 +0100 ++++ src/dialogs/qdialog.cpp 2006-06-01 13:38:00.000000000 +0200 +@@ -670,6 +670,11 @@ bool QDialog::event( QEvent *e ) + + #if defined(Q_WS_X11) + extern "C" { int XSetTransientForHint( Display *, unsigned long, unsigned long ); } ++#include <private/qt_x11_p.h> ++#undef FocusIn ++// defined in qapplication_x11.cpp ++extern Atom qt_net_wm_full_placement; ++extern bool qt_net_supports(Atom atom); + #endif // Q_WS_X11 + + /*! +@@ -691,10 +696,12 @@ void QDialog::show() + + if ( !did_resize ) + adjustSize(); +- if ( has_relpos && !did_move ) { +- adjustPositionInternal( parentWidget(), TRUE ); +- } else if ( !did_move ) { +- adjustPositionInternal( parentWidget() ); ++ if( !qt_net_supports( qt_net_wm_full_placement )) { ++ if ( has_relpos && !did_move ) { ++ adjustPositionInternal( parentWidget(), TRUE ); ++ } else if ( !did_move ) { ++ adjustPositionInternal( parentWidget() ); ++ } + } + + if (windowState() != state) diff --git a/dev-qt/qt-meta/files/qt-3.3.8-uic-fix.patch b/dev-qt/qt-meta/files/qt-3.3.8-uic-fix.patch new file mode 100644 index 00000000..8e5bd559 --- /dev/null +++ b/dev-qt/qt-meta/files/qt-3.3.8-uic-fix.patch @@ -0,0 +1,18 @@ +Index: tools/designer/uic/form.cpp +=================================================================== +--- tools/designer/uic/form.cpp (revision 460038) ++++ tools/designer/uic/form.cpp (working copy) +@@ -731,6 +731,13 @@ + while ( !n2.isNull() ) { + if ( n2.tagName() == "includehint" ) { + QString file = n2.firstChild().toText().data(); ++ int colons = file.find("::"); ++ ++ if (colons != -1) ++ { ++ file = file.right(file.length() - colons - 2); ++ } ++ + localIncludes += file; + } + n2 = n2.nextSibling().toElement(); diff --git a/dev-qt/qt-meta/files/qt-3.3.8-visibility.patch b/dev-qt/qt-meta/files/qt-3.3.8-visibility.patch new file mode 100644 index 00000000..a5246b9f --- /dev/null +++ b/dev-qt/qt-meta/files/qt-3.3.8-visibility.patch @@ -0,0 +1,159 @@ +Index: configure +=================================================================== +--- configure (revision 471775) ++++ configure (working copy) +@@ -1053,6 +1053,7 @@ + [ -d $outpath/src/tools ] || mkdir -p $outpath/src/tools + cat > $outpath/src/tools/qconfig.cpp.new <<EOF + /* Install paths from configure */ ++#include "qglobal.h" + + static const char QT_INSTALL_PREFIX [267] = "qt_nstpath=$QT_INSTALL_PREFIX"; + static const char QT_INSTALL_BINS [267] = "qt_binpath=$QT_INSTALL_BINS"; +Index: src/kernel/qgplugin.h +=================================================================== +--- src/kernel/qgplugin.h (revision 471775) ++++ src/kernel/qgplugin.h (working copy) +@@ -90,35 +90,19 @@ + return i->iface(); \ + } + +-# ifdef Q_WS_WIN +-# ifdef Q_CC_BOR +-# define Q_EXPORT_PLUGIN(PLUGIN) \ +- Q_PLUGIN_VERIFICATION_DATA \ +- Q_EXTERN_C __declspec(dllexport) \ +- const char * __stdcall qt_ucm_query_verification_data() \ +- { return qt_ucm_verification_data; } \ +- Q_EXTERN_C __declspec(dllexport) QUnknownInterface* \ +- __stdcall ucm_instantiate() \ +- Q_PLUGIN_INSTANTIATE( PLUGIN ) +-# else +-# define Q_EXPORT_PLUGIN(PLUGIN) \ +- Q_PLUGIN_VERIFICATION_DATA \ +- Q_EXTERN_C __declspec(dllexport) \ +- const char *qt_ucm_query_verification_data() \ +- { return qt_ucm_verification_data; } \ +- Q_EXTERN_C __declspec(dllexport) QUnknownInterface* ucm_instantiate() \ +- Q_PLUGIN_INSTANTIATE( PLUGIN ) +-# endif +-# else +-# define Q_EXPORT_PLUGIN(PLUGIN) \ ++#if defined(Q_WS_WIN) && defined(Q_CC_BOR) ++# define Q_STDCALL __stdcall ++#else ++# define Q_STDCALL ++#endif ++ ++#define Q_EXPORT_PLUGIN(PLUGIN) \ + Q_PLUGIN_VERIFICATION_DATA \ +- Q_EXTERN_C \ +- const char *qt_ucm_query_verification_data() \ ++ Q_EXTERN_C Q_EXPORT \ ++ const char * Q_STDCALL qt_ucm_query_verification_data() \ + { return qt_ucm_verification_data; } \ +- Q_EXTERN_C QUnknownInterface* ucm_instantiate() \ ++ Q_EXTERN_C Q_EXPORT QUnknownInterface* Q_STDCALL ucm_instantiate() \ + Q_PLUGIN_INSTANTIATE( PLUGIN ) +-# endif +- + #endif + + struct QUnknownInterface; +Index: src/kernel/qapplication_x11.cpp +=================================================================== +--- src/kernel/qapplication_x11.cpp (revision 471775) ++++ src/kernel/qapplication_x11.cpp (working copy) +@@ -314,7 +314,7 @@ + + // flags for extensions for special Languages, currently only for RTL languages + static bool qt_use_rtl_extensions = FALSE; +-bool qt_hebrew_keyboard_hack = FALSE; ++Q_EXPORT bool qt_hebrew_keyboard_hack = FALSE; + + static Window mouseActWindow = 0; // window where mouse is + static int mouseButtonPressed = 0; // last mouse button pressed +@@ -3800,7 +3800,7 @@ + } + + +-bool qt_try_modal( QWidget *widget, XEvent *event ) ++Q_EXPORT bool qt_try_modal( QWidget *widget, XEvent *event ) + { + if (qt_xdnd_dragging) { + // allow mouse events while DnD is active +Index: src/kernel/qtextengine_p.h +=================================================================== +--- src/kernel/qtextengine_p.h (revision 471775) ++++ src/kernel/qtextengine_p.h (working copy) +@@ -280,7 +280,7 @@ + + class QFontPrivate; + +-class QTextEngine { ++class Q_EXPORT QTextEngine { + public: + QTextEngine( const QString &str, QFontPrivate *f ); + ~QTextEngine(); +Index: src/tools/qglobal.h +=================================================================== +--- src/tools/qglobal.h (revision 471775) ++++ src/tools/qglobal.h (working copy) +@@ -865,6 +865,10 @@ + # define Q_TEMPLATE_EXTERN + # undef Q_DISABLE_COPY /* avoid unresolved externals */ + # endif ++#elif defined(Q_CC_GNU) && __GNUC__ - 0 >= 4 ++# define Q_EXPORT __attribute__((visibility("default"))) ++# undef QT_MAKEDLL /* ignore these for other platforms */ ++# undef QT_DLL + #else + # undef QT_MAKEDLL /* ignore these for other platforms */ + # undef QT_DLL +Index: tools/designer/uilib/qwidgetfactory.h +=================================================================== +--- tools/designer/uilib/qwidgetfactory.h (revision 471775) ++++ tools/designer/uilib/qwidgetfactory.h (working copy) +@@ -48,7 +48,7 @@ + class QWidgetFactoryPrivate; + class UibStrTable; + +-class QWidgetFactory ++class Q_EXPORT QWidgetFactory + { + public: + QWidgetFactory(); +Index: tools/designer/uilib/qwidgetfactory.cpp +=================================================================== +--- tools/designer/uilib/qwidgetfactory.cpp (revision 471775) ++++ tools/designer/uilib/qwidgetfactory.cpp (working copy) +@@ -113,13 +113,13 @@ + static QMap<QString, bool> *availableWidgetMap = 0; + static QStringList *availableWidgetList = 0; + +-QMap<QWidget*, QString> *qwf_forms = 0; ++Q_EXPORT QMap<QWidget*, QString> *qwf_forms = 0; + QString *qwf_language = 0; +-bool qwf_execute_code = TRUE; ++Q_EXPORT bool qwf_execute_code = TRUE; + bool qwf_stays_on_top = FALSE; + QString qwf_currFileName = ""; + QObject *qwf_form_object = 0; +-QString *qwf_plugin_dir = 0; ++Q_EXPORT QString *qwf_plugin_dir = 0; + + static void setupPluginDir() + { +Index: tools/designer/shared/domtool.h +=================================================================== +--- tools/designer/shared/domtool.h (revision 471775) ++++ tools/designer/shared/domtool.h (working copy) +@@ -33,7 +33,7 @@ + class QDomElement; + class QDomDocument; + +-class DomTool : public Qt ++class Q_EXPORT DomTool : public Qt + { + public: + static QVariant readProperty( const QDomElement& e, const QString& name, const QVariant& defValue ); diff --git a/dev-qt/qt-meta/files/qt-3.3.8b-cjk-fix.patch b/dev-qt/qt-meta/files/qt-3.3.8b-cjk-fix.patch new file mode 100644 index 00000000..5372bdb8 --- /dev/null +++ b/dev-qt/qt-meta/files/qt-3.3.8b-cjk-fix.patch @@ -0,0 +1,32 @@ +--- src/kernel/qfontdatabase.cpp 2008-07-10 06:17:31.000000000 +0800 ++++ src/kernel/qfontdatabase.cpp 2008-07-10 06:27:53.000000000 +0800 +@@ -960,19 +960,17 @@ + #ifdef Q_WS_X11 + if (script == QFont::Han) { + // modify script according to locale +- static QFont::Script defaultHan = QFont::UnknownScript; +- if (defaultHan == QFont::UnknownScript) { +- QCString locale = setlocale(LC_ALL, NULL); +- if (locale.contains("ko")) +- defaultHan = QFont::Han_Korean; +- else if (locale.contains("zh_TW") || locale.contains("zh_HK")) +- defaultHan = QFont::Han_TraditionalChinese; +- else if (locale.contains("zh")) +- defaultHan = QFont::Han_SimplifiedChinese; +- else +- defaultHan = QFont::Han_Japanese; ++ static QFont::Script defaultHan = QFont::Han; ++ QCString locale = setlocale(LC_ALL, NULL); ++ if (locale.contains("ko")) ++ defaultHan = QFont::Han_Korean; ++ else if (locale.contains("zh_TW") || locale.contains("zh_HK")) ++ defaultHan = QFont::Han_TraditionalChinese; ++ else if (locale.contains("zh")) ++ defaultHan = QFont::Han_SimplifiedChinese; ++ else if (locale.contains("jp")) ++ defaultHan = QFont::Han_Japanese; +- } + script = defaultHan; + } + #endif + diff --git a/dev-qt/qt-meta/files/qt-ulibc.patch b/dev-qt/qt-meta/files/qt-ulibc.patch new file mode 100644 index 00000000..f188778e --- /dev/null +++ b/dev-qt/qt-meta/files/qt-ulibc.patch @@ -0,0 +1,13 @@ +--- qt-x11-free-3.3.4.orig/src/tools/qlocale.cpp 2005-01-21 17:16:05.000000000 +0000 ++++ qt-x11-free-3.3.4/src/tools/qlocale.cpp 2005-02-18 13:36:59.000000000 +0000 +@@ -55,6 +55,10 @@ + # undef INFINITY + #endif + ++#if defined(Q_OS_LINUX) && defined(__UCLIBC__) ++# undef Q_OS_LINUX ++#endif ++ + #ifdef Q_OS_LINUX + # include <fenv.h> + #endif |