diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ed8ccc2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +SOURCES/qt-x11-free-3.3.8b.tar.gz +SOURCES/qt-x11-immodule-unified-qt3.3.8-20071116.diff.bz2 diff --git a/.qt3.metadata b/.qt3.metadata new file mode 100644 index 0000000..e75a4b9 --- /dev/null +++ b/.qt3.metadata @@ -0,0 +1,2 @@ +745def6250dc7f337dbb265e20bf38dcb41fd854 SOURCES/qt-x11-free-3.3.8b.tar.gz +deb4d4cb53619ca51aca12f9b52009d4cbe14c78 SOURCES/qt-x11-immodule-unified-qt3.3.8-20071116.diff.bz2 diff --git a/SOURCES/0038-dragobject-dont-prefer-unknown.patch b/SOURCES/0038-dragobject-dont-prefer-unknown.patch new file mode 100644 index 0000000..ae4163a --- /dev/null +++ b/SOURCES/0038-dragobject-dont-prefer-unknown.patch @@ -0,0 +1,57 @@ +qt-bugs@ issue : 38642 +bugs.kde.org number : 71084 +applied: no +author: Lubos Lunak + +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/SOURCES/0047-fix-kmenu-width.diff b/SOURCES/0047-fix-kmenu-width.diff new file mode 100644 index 0000000..fb0bb16 --- /dev/null +++ b/SOURCES/0047-fix-kmenu-width.diff @@ -0,0 +1,25 @@ +qt-bugs@ issue: N46882 +bugs.kde.org number: 77545 +applied: no +author: Stephan Binner + +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/SOURCES/0048-qclipboard_hack_80072.patch b/SOURCES/0048-qclipboard_hack_80072.patch new file mode 100644 index 0000000..74c60fb --- /dev/null +++ b/SOURCES/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 + +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/SOURCES/0056-khotkeys_input_84434.patch b/SOURCES/0056-khotkeys_input_84434.patch new file mode 100644 index 0000000..f94bb81 --- /dev/null +++ b/SOURCES/0056-khotkeys_input_84434.patch @@ -0,0 +1,21 @@ +qt-bugs@ issue : 58251 +bugs.kde.org number : 84434 +applied: no +author: Lubos Lunak + +Fixes keyboard input action in KHotKeys (see bug #84434). + +--- src/kernel/qapplication_x11.cpp.sav 2004-10-07 15:38:05.000000000 +0200 ++++ src/kernel/qapplication_x11.cpp 2004-10-12 11:46:32.513137808 +0200 +@@ -5294,8 +5294,10 @@ static Bool qt_keypress_scanner(Display + qt_auto_repeat_data *d = (qt_auto_repeat_data *) arg; + if (d->error || + event->xkey.window != d->window || +- event->xkey.keycode != d->keycode) ++ event->xkey.keycode != d->keycode) { ++ d->error = TRUE; + return FALSE; ++ } + + if (event->type == XKeyPress) { + d->error = (! d->release || event->xkey.time - d->timestamp > 10); diff --git a/SOURCES/0073-xinerama-aware-qpopup.patch b/SOURCES/0073-xinerama-aware-qpopup.patch new file mode 100644 index 0000000..e90e1c8 --- /dev/null +++ b/SOURCES/0073-xinerama-aware-qpopup.patch @@ -0,0 +1,113 @@ +qt-bugs@ issue : none +bugs.kde.org number : none +applied: no +author: Lubos Lunak +Makes QPopupMenu aware of Xinerama (see e.g. https://bugzilla.novell.com/show_bug.cgi?id=216235). + + +--- src/widgets/qpopupmenu.cpp ++++ src/widgets/qpopupmenu.cpp +@@ -454,6 +454,15 @@ void QPopupMenu::frameChanged() + menuContentsChanged(); + } + ++QRect QPopupMenu::screenRect( const QPoint& pos ) ++{ ++ int screen_num = QApplication::desktop()->screenNumber( pos ); ++#ifdef Q_WS_MAC ++ return QApplication::desktop()->availableGeometry( screen_num ); ++#else ++ return QApplication::desktop()->screenGeometry( screen_num ); ++#endif ++} + /*! + Displays the popup menu so that the item number \a indexAtPoint + will be at the specified \e global position \a pos. To translate a +@@ -498,6 +507,15 @@ void QPopupMenu::popup( const QPoint &po + // point. + #endif + ++ QRect screen = screenRect( geometry().center()); ++ QRect screen2 = screenRect( QApplication::reverseLayout() ++ ? pos+QPoint(width(),0) : pos ); ++ // if the widget is not in the screen given by the position, move it ++ // there, so that updateSize() uses the right size of the screen ++ if( screen != screen2 ) { ++ screen = screen2; ++ move( screen.x(), screen.y()); ++ } + if(d->scroll.scrollable) { + d->scroll.scrollable = QPopupMenuPrivate::Scroll::ScrollNone; + d->scroll.topScrollableIndex = d->scroll.scrollableSize = 0; +@@ -517,18 +535,6 @@ void QPopupMenu::popup( const QPoint &po + updateSize(TRUE); + } + +- int screen_num; +- if (QApplication::desktop()->isVirtualDesktop()) +- screen_num = +- QApplication::desktop()->screenNumber( QApplication::reverseLayout() ? +- pos+QPoint(width(),0) : pos ); +- else +- screen_num = QApplication::desktop()->screenNumber( this ); +-#ifdef Q_WS_MAC +- QRect screen = QApplication::desktop()->availableGeometry( screen_num ); +-#else +- QRect screen = QApplication::desktop()->screenGeometry( screen_num ); +-#endif + int sw = screen.width(); // screen width + int sh = screen.height(); // screen height + int sx = screen.x(); // screen pos +@@ -1056,7 +1062,7 @@ QSize QPopupMenu::updateSize(bool force_ + mi->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width() + 4 ); + } + +- int dh = QApplication::desktop()->height(); ++ int dh = screenRect( geometry().center()).height(); + ncols = 1; + + for ( QMenuItemListIt it2( *mitems ); it2.current(); ++it2 ) { +@@ -2297,9 +2303,9 @@ void QPopupMenu::subMenuTimer() { + bool right = FALSE; + if ( ( parentMenu && parentMenu->isPopupMenu && + ((QPopupMenu*)parentMenu)->geometry().x() < geometry().x() ) || +- p.x() < 0 ) ++ p.x() < screenRect( p ).left()) + right = TRUE; +- if ( right && (ps.width() > QApplication::desktop()->width() - mapToGlobal( r.topRight() ).x() ) ) ++ if ( right && (ps.width() > screenRect( p ).right() - mapToGlobal( r.topRight() ).x() ) ) + right = FALSE; + if ( right ) + p.setX( mapToGlobal( r.topRight() ).x() ); +@@ -2310,7 +2316,7 @@ void QPopupMenu::subMenuTimer() { + bool left = FALSE; + if ( ( parentMenu && parentMenu->isPopupMenu && + ((QPopupMenu*)parentMenu)->geometry().x() > geometry().x() ) || +- p.x() + ps.width() > QApplication::desktop()->width() ) ++ p.x() + ps.width() > screenRect( p ).right() ) + left = TRUE; + if ( left && (ps.width() > mapToGlobal( r.topLeft() ).x() ) ) + left = FALSE; +@@ -2318,8 +2324,8 @@ void QPopupMenu::subMenuTimer() { + p.setX( mapToGlobal( r.topLeft() ).x() - ps.width() ); + } + QRect pr = popup->itemGeometry(popup->count() - 1); +- if (p.y() + ps.height() > QApplication::desktop()->height() && +- p.y() - ps.height() + (QCOORD) pr.height() >= 0) ++ if (p.y() + ps.height() > screenRect( p ).bottom() && ++ p.y() - ps.height() + (QCOORD) pr.height() >= screenRect( p ).top()) + p.setY( p.y() - ps.height() + (QCOORD) pr.height()); + + if ( style().styleHint(QStyle::SH_PopupMenu_SloppySubMenus, this )) { +Index: src/widgets/qpopupmenu.h +=================================================================== +--- src/widgets/qpopupmenu.h (revision 636368) ++++ src/widgets/qpopupmenu.h (working copy) +@@ -152,6 +152,7 @@ private: + + QSize updateSize(bool force_recalc=FALSE, bool do_resize=TRUE); + void updateRow( int row ); ++ QRect screenRect(const QPoint& pos); + #ifndef QT_NO_ACCEL + void updateAccel( QWidget * ); + void enableAccel( bool ); diff --git a/SOURCES/0079-compositing-types.patch b/SOURCES/0079-compositing-types.patch new file mode 100644 index 0000000..3c3649c --- /dev/null +++ b/SOURCES/0079-compositing-types.patch @@ -0,0 +1,424 @@ +qt-bugs@ issue : none +bugs.kde.org number : none +applied: no +author: Lubos Lunak + +This patch adds support for window types used for compositing (popup menu, dropdown menu, +tooltip, combobox, dnd). + +--- src/kernel/qdnd_x11.cpp.sav 2007-05-25 18:56:23.000000000 +0200 ++++ src/kernel/qdnd_x11.cpp 2007-05-31 10:30:58.000000000 +0200 +@@ -261,6 +261,7 @@ public: + QWidget(QApplication::desktop()->screen( screen ), + 0, WStyle_Customize | WStyle_Tool | WStyle_NoBorder | WX11BypassWM ), oldpmser( 0 ), oldbmser( 0 ) + { ++ x11SetWindowType( X11WindowTypeDND ); + } + + void setPixmap(QPixmap pm, QPoint hot) +@@ -1221,6 +1222,7 @@ void QDragManager::move( const QPoint & + // recreate the pixmap on the new screen... + delete qt_xdnd_deco; + qt_xdnd_deco = new QShapedPixmapWidget( screen ); ++ qt_xdnd_deco->x11SetWindowTransient( dragSource->topLevelWidget()); + if (!QWidget::mouseGrabber()) { + updatePixmap(); + qt_xdnd_deco->grabMouse(); +@@ -1774,6 +1776,7 @@ bool QDragManager::drag( QDragObject * o + + dragSource = (QWidget *)(object->parent()); + ++ qt_xdnd_deco->x11SetWindowTransient( dragSource->topLevelWidget()); + qApp->installEventFilter( this ); + qt_xdnd_source_current_time = qt_x_time; + XSetSelectionOwner( QPaintDevice::x11AppDisplay(), qt_xdnd_selection, +--- src/kernel/qapplication_x11.cpp.sav 2007-05-29 16:24:58.000000000 +0200 ++++ src/kernel/qapplication_x11.cpp 2007-05-31 10:30:58.000000000 +0200 +@@ -268,6 +268,11 @@ Atom qt_net_wm_window_type_menu = 0; + Atom qt_net_wm_window_type_utility = 0; + Atom qt_net_wm_window_type_splash = 0; + Atom qt_net_wm_window_type_override = 0; // KDE extension ++Atom qt_net_wm_window_type_dropdown_menu = 0; ++Atom qt_net_wm_window_type_popup_menu = 0; ++Atom qt_net_wm_window_type_tooltip = 0; ++Atom qt_net_wm_window_type_combo = 0; ++Atom qt_net_wm_window_type_dnd = 0; + Atom qt_net_wm_frame_strut = 0; // KDE extension + Atom qt_net_wm_state_stays_on_top = 0; // KDE extension + Atom qt_net_wm_pid = 0; +@@ -1920,6 +1925,11 @@ void qt_init_internal( int *argcptr, cha + qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_UTILITY", &qt_net_wm_window_type_utility ); + qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_SPLASH", &qt_net_wm_window_type_splash ); + qt_x11_intern_atom( "_KDE_NET_WM_WINDOW_TYPE_OVERRIDE", &qt_net_wm_window_type_override ); ++ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_DROPDOWN_MENU", &qt_net_wm_window_type_dropdown_menu ); ++ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_POPUP_MENU", &qt_net_wm_window_type_popup_menu ); ++ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_TOOLTIP", &qt_net_wm_window_type_tooltip ); ++ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_COMBO", &qt_net_wm_window_type_combo ); ++ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_DND", &qt_net_wm_window_type_dnd ); + qt_x11_intern_atom( "_KDE_NET_WM_FRAME_STRUT", &qt_net_wm_frame_strut ); + qt_x11_intern_atom( "_NET_WM_STATE_STAYS_ON_TOP", + &qt_net_wm_state_stays_on_top ); +--- src/kernel/qwidget_x11.cpp.sav 2007-05-25 18:56:23.000000000 +0200 ++++ src/kernel/qwidget_x11.cpp 2007-05-31 10:30:58.000000000 +0200 +@@ -125,6 +125,11 @@ extern Atom qt_net_wm_window_type_menu; + extern Atom qt_net_wm_window_type_utility; + extern Atom qt_net_wm_window_type_splash; + extern Atom qt_net_wm_window_type_override; ++extern Atom qt_net_wm_window_type_dropdown_menu; ++extern Atom qt_net_wm_window_type_popup_menu; ++extern Atom qt_net_wm_window_type_combo; ++extern Atom qt_net_wm_window_type_dnd; ++extern Atom qt_net_wm_window_type_tooltip; + extern Atom qt_net_wm_pid; + extern Atom qt_net_wm_user_time; + extern Atom qt_enlightenment_desktop; +@@ -448,10 +453,6 @@ void QWidget::create( WId window, bool i + x11Colormap() ); + #endif // QT_NO_XFTFREETYPE + +- // NET window types +- long net_wintypes[7] = { 0, 0, 0, 0, 0, 0, 0 }; +- int curr_wintype = 0; +- + // NET window states + long net_winstates[6] = { 0, 0, 0, 0, 0, 0 }; + int curr_winstate = 0; +@@ -473,7 +474,6 @@ void QWidget::create( WId window, bool i + if ( testWFlags(WStyle_Splash) ) { + if (qt_net_supports(qt_net_wm_window_type_splash)) { + clearWFlags( WX11BypassWM ); +- net_wintypes[curr_wintype++] = qt_net_wm_window_type_splash; + } else { + setWFlags( WX11BypassWM | WStyle_Tool | WStyle_NoBorder ); + } +@@ -482,27 +482,22 @@ void QWidget::create( WId window, bool i + mwmhints.decorations = 0L; + mwmhints.flags |= (1L << 1); // MWM_HINTS_DECORATIONS + +- if ( testWFlags( WStyle_NoBorder ) ) { +- // override netwm type - quick and easy for KDE noborder +- net_wintypes[curr_wintype++] = qt_net_wm_window_type_override; +- } else { +- if ( testWFlags( WStyle_NormalBorder | WStyle_DialogBorder ) ) { +- mwmhints.decorations |= (1L << 1); // MWM_DECOR_BORDER +- mwmhints.decorations |= (1L << 2); // MWM_DECOR_RESIZEH +- } ++ if ( testWFlags( WStyle_NormalBorder | WStyle_DialogBorder ) ) { ++ mwmhints.decorations |= (1L << 1); // MWM_DECOR_BORDER ++ mwmhints.decorations |= (1L << 2); // MWM_DECOR_RESIZEH ++ } + +- if ( testWFlags( WStyle_Title ) ) +- mwmhints.decorations |= (1L << 3); // MWM_DECOR_TITLE ++ if ( testWFlags( WStyle_Title ) ) ++ mwmhints.decorations |= (1L << 3); // MWM_DECOR_TITLE + +- if ( testWFlags( WStyle_SysMenu ) ) +- mwmhints.decorations |= (1L << 4); // MWM_DECOR_MENU ++ if ( testWFlags( WStyle_SysMenu ) ) ++ mwmhints.decorations |= (1L << 4); // MWM_DECOR_MENU + +- if ( testWFlags( WStyle_Minimize ) ) +- mwmhints.decorations |= (1L << 5); // MWM_DECOR_MINIMIZE ++ if ( testWFlags( WStyle_Minimize ) ) ++ mwmhints.decorations |= (1L << 5); // MWM_DECOR_MINIMIZE + +- if ( testWFlags( WStyle_Maximize ) ) +- mwmhints.decorations |= (1L << 6); // MWM_DECOR_MAXIMIZE +- } ++ if ( testWFlags( WStyle_Maximize ) ) ++ mwmhints.decorations |= (1L << 6); // MWM_DECOR_MAXIMIZE + + if (testWFlags(WStyle_Tool)) { + wsa.save_under = True; +@@ -522,23 +517,6 @@ void QWidget::create( WId window, bool i + } + } + +- // ### need a better way to do this +- if (inherits("QPopupMenu")) { +- // menu netwm type +- net_wintypes[curr_wintype++] = qt_net_wm_window_type_menu; +- } else if (inherits("QToolBar")) { +- // toolbar netwm type +- net_wintypes[curr_wintype++] = qt_net_wm_window_type_toolbar; +- } else if (testWFlags(WStyle_Customize) && testWFlags(WStyle_Tool)) { +- // utility netwm type +- net_wintypes[curr_wintype++] = qt_net_wm_window_type_utility; +- } +- +- if (dialog) // dialog netwm type +- net_wintypes[curr_wintype++] = qt_net_wm_window_type_dialog; +- // normal netwm type - default +- net_wintypes[curr_wintype++] = qt_net_wm_window_type_normal; +- + // stays on top + if (testWFlags(WStyle_StaysOnTop)) { + net_winstates[curr_winstate++] = qt_net_wm_state_above; +@@ -573,6 +551,7 @@ void QWidget::create( WId window, bool i + wsa.save_under = True; + XChangeWindowAttributes( dpy, id, CWOverrideRedirect | CWSaveUnder, + &wsa ); ++ x11SetWindowType(); + } else if ( topLevel && !desktop ) { // top-level widget + QWidget *p = parentWidget(); // real parent + if (p) +@@ -632,12 +611,7 @@ void QWidget::create( WId window, bool i + else + XDeleteProperty(dpy, id, qt_xa_motif_wm_hints); + +- // set _NET_WM_WINDOW_TYPE +- if (curr_wintype > 0) +- XChangeProperty(dpy, id, qt_net_wm_window_type, XA_ATOM, 32, PropModeReplace, +- (unsigned char *) net_wintypes, curr_wintype); +- else +- XDeleteProperty(dpy, id, qt_net_wm_window_type); ++ x11SetWindowType(); + + // set _NET_WM_WINDOW_STATE + if (curr_winstate > 0) +@@ -896,6 +870,64 @@ void QWidget::reparentSys( QWidget *pare + setMouseTracking(mouse_tracking); + } + ++// Sets the EWMH (netwm) window type. Needed as a separate function ++// because create() may be too soon in some cases. ++void QWidget::x11SetWindowType( X11WindowType type ) ++{ ++ // NET window types ++ long net_wintypes[7] = { 0, 0, 0, 0, 0, 0, 0 }; ++ int curr_wintype = 0; ++ if( testWFlags(WType_Desktop)) ++ return; ++ if( type == X11WindowTypeSelect ) { ++ if ( testWFlags(WStyle_Splash)) { ++ if (qt_net_supports(qt_net_wm_window_type_splash)) { ++ net_wintypes[curr_wintype++] = qt_net_wm_window_type_splash; ++ } ++ } else if (inherits("QToolBar")) { ++ // toolbar netwm type ++ net_wintypes[curr_wintype++] = qt_net_wm_window_type_toolbar; ++ } else if (testWFlags(WStyle_Customize) && testWFlags(WStyle_Tool)) { ++ // utility netwm type ++ net_wintypes[curr_wintype++] = qt_net_wm_window_type_utility; ++ } else if (testWFlags(WType_Dialog)) { ++ // dialog netwm type ++ net_wintypes[curr_wintype++] = qt_net_wm_window_type_dialog; ++ } ++ } else if( type == X11WindowTypeCombo ) { ++ // combo netwm type ++ net_wintypes[curr_wintype++] = qt_net_wm_window_type_combo; ++ } else if( type == X11WindowTypeDND ) { ++ // dnd netwm type ++ net_wintypes[curr_wintype++] = qt_net_wm_window_type_dnd; ++ } else if( type == X11WindowTypeDropdown ) { ++ // dropdown netwm type ++ net_wintypes[curr_wintype++] = qt_net_wm_window_type_dropdown_menu; ++ } else if( type == X11WindowTypePopup ) { ++ // popup netwm type ++ net_wintypes[curr_wintype++] = qt_net_wm_window_type_popup_menu; ++ } else if( type == X11WindowTypeMenu ) { ++ // menu netwm type ++ net_wintypes[curr_wintype++] = qt_net_wm_window_type_menu; ++ } else if( type == X11WindowTypeTooltip ) { ++ // tooltip netwm type ++ net_wintypes[curr_wintype++] = qt_net_wm_window_type_tooltip; ++ } ++ ++ // normal netwm type - default ++ net_wintypes[curr_wintype++] = qt_net_wm_window_type_normal; ++ // set _NET_WM_WINDOW_TYPE ++ if (curr_wintype > 0) ++ XChangeProperty(x11Display(), winId(), qt_net_wm_window_type, XA_ATOM, 32, PropModeReplace, ++ (unsigned char *) net_wintypes, curr_wintype); ++ else ++ XDeleteProperty(x11Display(), winId(), qt_net_wm_window_type); ++} ++ ++void QWidget::x11SetWindowTransient( QWidget* parent ) ++{ ++ XSetTransientForHint( x11Display(), winId(), parent->winId()); ++} + + /*! + Translates the widget coordinate \a pos to global screen +--- src/kernel/qwidget.h.sav 2007-05-25 18:56:23.000000000 +0200 ++++ src/kernel/qwidget.h 2007-05-31 10:30:58.000000000 +0200 +@@ -464,7 +464,19 @@ public: + CGContextRef macCGContext(bool clipped=TRUE) const; + #endif + #endif +- ++#if defined(Q_WS_X11) ++ enum X11WindowType { ++ X11WindowTypeSelect, ++ X11WindowTypeCombo, ++ X11WindowTypeDND, ++ X11WindowTypeTooltip, ++ X11WindowTypeMenu, // torn-off ++ X11WindowTypeDropdown, ++ X11WindowTypePopup ++ }; ++ void x11SetWindowType( X11WindowType type = X11WindowTypeSelect ); ++ void x11SetWindowTransient( QWidget* parent ); ++#endif + void setWindowOpacity(double level); + double windowOpacity() const; + +--- src/dialogs/qdialog.cpp.sav 2007-05-25 18:56:23.000000000 +0200 ++++ src/dialogs/qdialog.cpp 2007-05-31 10:30:58.000000000 +0200 +@@ -668,10 +668,6 @@ bool QDialog::event( QEvent *e ) + Geometry management. + *****************************************************************************/ + +-#if defined(Q_WS_X11) +-extern "C" { int XSetTransientForHint( Display *, unsigned long, unsigned long ); } +-#endif // Q_WS_X11 +- + /*! + Shows the dialog as a \link #modeless modeless \endlink dialog. + Control returns immediately to the calling code. +@@ -705,7 +701,7 @@ void QDialog::show() + && qApp->mainWidget() && qApp->mainWidget()->isVisible() + && !qApp->mainWidget()->isMinimized()) { + // make sure the transient for hint is set properly for modal dialogs +- XSetTransientForHint( x11Display(), winId(), qApp->mainWidget()->winId() ); ++ x11SetWindowTransient( qApp->mainWidget()); + } + #endif // Q_WS_X11 + +--- src/widgets/qtooltip.cpp.sav 2007-05-25 18:56:23.000000000 +0200 ++++ src/widgets/qtooltip.cpp 2007-05-31 10:30:58.000000000 +0200 +@@ -72,6 +72,7 @@ public: + polish(); + setText(text); + adjustSize(); ++ x11SetWindowType( X11WindowTypeTooltip ); + } + void setWidth( int w ) { resize( sizeForWidth( w ) ); } + }; +@@ -528,6 +529,10 @@ void QTipManager::showTip() + if (!widget) + return; + ++#ifdef Q_WS_X11 ++ label->x11SetWindowTransient( widget->topLevelWidget()); ++#endif ++ + #ifdef Q_WS_MAC + QRect screen = QApplication::desktop()->availableGeometry( scr ); + #else +--- src/widgets/qcombobox.cpp.sav 2007-05-25 18:56:23.000000000 +0200 ++++ src/widgets/qcombobox.cpp 2007-05-31 10:49:13.000000000 +0200 +@@ -389,12 +389,8 @@ public: + inline QListBox * listBox() { return lBox; } + inline QComboBoxPopup * popup() { return pop; } + void updateLinedGeometry(); +- +- void setListBox( QListBox *l ) { lBox = l ; usingLBox = TRUE; +- l->setMouseTracking( TRUE );} +- +- void setPopupMenu( QComboBoxPopup * pm, bool isPopup=TRUE ) +- { pop = pm; if(isPopup) usingLBox = FALSE; } ++ void setListBox( QListBox *l ); ++ void setPopupMenu( QComboBoxPopup * pm, bool isPopup=TRUE ); + + int current; + int maxCount; +@@ -440,6 +436,30 @@ void QComboBoxData::updateLinedGeometry( + ed->setGeometry( r ); + } + ++void QComboBoxData::setListBox( QListBox *l ) ++{ ++ lBox = l; ++ usingLBox = TRUE; ++ l->setMouseTracking( TRUE ); ++#ifdef Q_WS_X11 ++ l->x11SetWindowType( QWidget::X11WindowTypeCombo ); ++ l->x11SetWindowTransient( combo->topLevelWidget()); ++#endif ++} ++ ++void QComboBoxData::setPopupMenu( QComboBoxPopup * pm, bool isPopup ) ++{ ++ pop = pm; ++ if(isPopup) ++ usingLBox = FALSE; ++#ifdef Q_WS_X11 ++ if( pm ) { ++ pm->x11SetWindowType( QWidget::X11WindowTypeCombo ); ++ pm->x11SetWindowTransient( combo->topLevelWidget()); ++ } ++#endif ++} ++ + static inline bool checkInsertIndex( const char *method, const char * name, + int count, int *index) + { +--- src/widgets/qpopupmenu.cpp.sav 2007-05-25 18:56:23.000000000 +0200 ++++ src/widgets/qpopupmenu.cpp 2007-05-31 11:09:22.000000000 +0200 +@@ -298,6 +298,9 @@ QPopupMenu::QPopupMenu( QWidget *parent, + connectModalRecursionSafety = 0; + + setFocusPolicy( StrongFocus ); ++#ifdef Q_WS_X11 ++ x11SetWindowType( X11WindowTypePopup ); ++#endif + } + + /*! +@@ -537,6 +540,29 @@ void QPopupMenu::popup( const QPoint &po + emit aboutToShow(); + updateSize(TRUE); + } ++#ifdef Q_WS_X11 ++#ifndef QT_NO_MENUBAR ++ QMenuData *top = this; // find top level ++ while ( top->parentMenu ) ++ top = top->parentMenu; ++ if( top->isMenuBar ) ++ x11SetWindowType( X11WindowTypeDropdown ); ++ if( parentMenu && parentMenu->isMenuBar ) ++ x11SetWindowTransient( static_cast< QMenuBar* >( parentMenu )->topLevelWidget()); ++#endif ++ if( parentMenu && !parentMenu->isMenuBar ) ++ x11SetWindowTransient( static_cast< QPopupMenu* >( parentMenu )); ++ if( !parentMenu ) { ++ // hackish ... try to find the main window related to this popup ++ QWidget* parent = parentWidget() ? parentWidget()->topLevelWidget() : NULL; ++ if( parent == NULL ) ++ parent = QApplication::widgetAt( pos ); ++ if( parent == NULL ) ++ parent = qApp->activeWindow(); ++ if( parent != NULL ) ++ x11SetWindowTransient( parent ); ++ } ++#endif + + int sw = screen.width(); // screen width + int sh = screen.height(); // screen height +@@ -1390,6 +1416,13 @@ void QPopupMenu::hide() + #if defined(QT_ACCESSIBILITY_SUPPORT) + QAccessible::updateAccessibility( this, 0, QAccessible::PopupMenuEnd ); + #endif ++#ifndef QT_NO_MENUBAR ++ QMenuData *top = this; // find top level ++ while ( top->parentMenu ) ++ top = top->parentMenu; ++ if( top->isMenuBar ) ++ x11SetWindowType( X11WindowTypePopup ); // reset ++#endif + parentMenu = 0; + hidePopups(); + QWidget::hide(); +@@ -2713,6 +2746,9 @@ void QPopupMenu::toggleTearOff() + geometry().topLeft(), FALSE ); + p->mitems->setAutoDelete( FALSE ); + p->tornOff = TRUE; ++#ifdef Q_WS_X11 ++ p->x11SetWindowType( X11WindowTypeMenu ); ++#endif + for ( QMenuItemListIt it( *mitems ); it.current(); ++it ) { + if ( it.current()->id() != QMenuData::d->aInt && !it.current()->widget() ) + p->mitems->append( it.current() ); diff --git a/SOURCES/0080-net-wm-sync-request-2.patch b/SOURCES/0080-net-wm-sync-request-2.patch new file mode 100644 index 0000000..0f996ac --- /dev/null +++ b/SOURCES/0080-net-wm-sync-request-2.patch @@ -0,0 +1,311 @@ +qt-bugs@ issue : none +bugs.kde.org number : none +applied: no +author: Lubos Lunak + +Support for _NET_WM_SYNC_REQUEST - allows the WM to find out when the app +finished one redraw - less flicker during resize and with compositing +also when opening a window. + +--- src/kernel/qwidget.h.sav 2007-06-22 14:14:05.000000000 +0200 ++++ src/kernel/qwidget.h 2007-06-23 11:53:39.000000000 +0200 +@@ -586,6 +586,14 @@ private: + void destroyInputContext(); + void focusInputContext(); + void checkChildrenDnd(); ++ ++#ifndef QT_NO_XSYNC ++ void createSyncCounter(); ++ void destroySyncCounter(); ++ void incrementSyncCounter(); ++ void handleSyncRequest( void* ev ); ++#endif ++ + #elif defined(Q_WS_MAC) + uint own_id : 1, macDropEnabled : 1; + EventHandlerRef window_event; +@@ -962,8 +970,12 @@ struct Q_EXPORT QTLWExtra { + uint uspos : 1; // User defined position + uint ussize : 1; // User defined size + #if defined(QT_NO_IM_EXTENSIONS) + void *xic; // Input Context + #endif ++#ifndef QT_NO_XSYNC ++ ulong syncCounter; ++ uint syncRequestValue[2]; ++#endif + #endif + #if defined(Q_WS_MAC) + WindowGroupRef group; +--- src/kernel/qt_x11_p.h.sav 2007-02-23 14:01:18.000000000 +0100 ++++ src/kernel/qt_x11_p.h 2007-06-23 11:53:39.000000000 +0200 +@@ -174,6 +174,11 @@ extern "C" { + #endif // QT_NO_XRENDER + + ++#ifndef QT_NO_XSYNC ++# include ++#endif // QT_NO_XSYNC ++ ++ + #ifndef QT_NO_XKB + # include + #endif // QT_NO_XKB +--- src/kernel/qwidget_x11.cpp.sav 2007-04-16 13:47:26.000000000 +0200 ++++ src/kernel/qwidget_x11.cpp 2007-06-23 19:48:44.000000000 +0200 +@@ -87,6 +87,12 @@ static QWidget *keyboardGrb = 0; + extern Time qt_x_time; + extern Time qt_x_user_time; + ++#ifndef QT_NO_XSYNC ++extern Atom qt_net_wm_sync_request_counter; ++extern Atom qt_net_wm_sync_request; ++extern bool qt_use_xsync; ++#endif ++ + // defined in qfont_x11.cpp + extern bool qt_has_xft; + +@@ -595,11 +601,14 @@ void QWidget::create( WId window, bool i + + XResizeWindow( dpy, id, crect.width(), crect.height() ); + XStoreName( dpy, id, qAppName() ); +- Atom protocols[4]; ++ Atom protocols[5]; + int n = 0; + protocols[n++] = qt_wm_delete_window; // support del window protocol + protocols[n++] = qt_wm_take_focus; // support take focus window protocol + protocols[n++] = qt_net_wm_ping; // support _NET_WM_PING protocol ++#ifndef QT_NO_XSYNC ++ protocols[n++] = qt_net_wm_sync_request;// support the _NET_WM_SYNC_REQUEST protocol ++#endif + if ( testWFlags( WStyle_ContextHelp ) ) + protocols[n++] = qt_net_wm_context_help; + XSetWMProtocols( dpy, id, protocols, n ); +@@ -625,6 +634,14 @@ void QWidget::create( WId window, bool i + XChangeProperty(dpy, id, qt_net_wm_pid, XA_CARDINAL, 32, PropModeReplace, + (unsigned char *) &curr_pid, 1); + ++#ifndef QT_NO_XSYNC ++ // set _NET_WM_SYNC_COUNTER ++ createSyncCounter(); ++ long counterVal = topData()->syncCounter; ++ XChangeProperty( dpy, id, qt_net_wm_sync_request_counter, XA_CARDINAL, 32, PropModeReplace, ++ (unsigned char*) &counterVal, 1); ++#endif ++ + // when we create a toplevel widget, the frame strut should be dirty + fstrut_dirty = 1; + +@@ -720,6 +737,9 @@ void QWidget::destroy( bool destroyWindo + if ( destroyWindow ) + qt_XDestroyWindow( this, x11Display(), winid ); + } ++#ifndef QT_NO_XSYNC ++ destroySyncCounter(); ++#endif + setWinId( 0 ); + + extern void qPRCleanup( QWidget *widget ); // from qapplication_x11.cpp +@@ -769,6 +789,10 @@ void QWidget::reparentSys( QWidget *pare + destroyInputContext(); + } + ++#ifndef QT_NO_XSYNC ++ destroySyncCounter(); ++#endif ++ + if ( isTopLevel() || !parent ) // we are toplevel, or reparenting to toplevel + topData()->parentWinId = 0; + +@@ -2456,8 +2480,13 @@ void QWidget::createTLSysExtra() + { + #if defined(QT_NO_IM_EXTENSIONS) + // created lazily + extra->topextra->xic = 0; + #endif ++#ifndef QT_NO_XSYNC ++ extra->topextra->syncCounter = 0; ++ extra->topextra->syncRequestValue[0] = 0; ++ extra->topextra->syncRequestValue[1] = 0; ++#endif + } + + void QWidget::deleteTLSysExtra() +@@ -2501,6 +2530,51 @@ void QWidget::checkChildrenDnd() + } + } + ++ ++#ifndef QT_NO_XSYNC ++// create a window's XSyncCounter ++void QWidget::createSyncCounter() ++{ ++ if( !qt_use_xsync || !isTopLevel() || topData()->syncCounter ) ++ return; ++ XSyncValue zero; ++ XSyncIntToValue( &zero, 0 ); ++ topData()->syncCounter = XSyncCreateCounter( x11Display(), zero ); ++} ++ ++// destroy a window's XSyncCounter ++void QWidget::destroySyncCounter() ++{ ++ if( !qt_use_xsync || !extra || !extra->topextra ++ || !extra->topextra->syncCounter ) ++ return; ++ XSyncDestroyCounter( x11Display(), extra->topextra->syncCounter ); ++ extra->topextra->syncCounter = 0; ++} ++ ++// increment a window's XSyncCounter ++void QWidget::incrementSyncCounter() ++{ ++ if( qt_use_xsync && topData()->syncCounter && ++ !(topData()->syncRequestValue[0] == 0 && ++ topData()->syncRequestValue[1] == 0) ) { ++ XSyncValue val; ++ XSyncIntsToValue( &val, topData()->syncRequestValue[ 0 ], topData()->syncRequestValue[ 1 ] ); ++ XSyncSetCounter( x11Display(), topData()->syncCounter, val ); ++ topData()->syncRequestValue[0] = topData()->syncRequestValue[1] = 0; ++ } ++} ++ ++// handle _NET_WM_SYNC_REQUEST ++void QWidget::handleSyncRequest( void* ev ) ++{ ++ XEvent* xev = (XEvent*)ev; ++ topData()->syncRequestValue[ 0 ] = xev->xclient.data.l[ 2 ]; ++ topData()->syncRequestValue[ 1 ] = xev->xclient.data.l[ 3 ]; ++} ++#endif // QT_NO_XSYNC ++ ++ + /*! + \property QWidget::acceptDrops + \brief whether drop events are enabled for this widget +--- src/kernel/qapplication_x11.cpp.sav 2007-04-16 13:47:26.000000000 +0200 ++++ src/kernel/qapplication_x11.cpp 2007-06-23 19:49:15.000000000 +0200 +@@ -285,6 +285,11 @@ Atom *qt_net_supported_list = 0; + Window *qt_net_virtual_root_list = 0; + + ++// X11 SYNC support ++#ifndef QT_NO_XSYNC ++Atom qt_net_wm_sync_request_counter = 0; ++Atom qt_net_wm_sync_request = 0; ++#endif + + // client leader window + Window qt_x11_wm_client_leader = 0; +@@ -309,6 +314,13 @@ static int xrandr_eventbase; + // Display + Q_EXPORT bool qt_use_xrender = FALSE; + ++#ifndef QT_NO_XSYNC ++// True if SYNC extension exists on the connected display ++bool qt_use_xsync = FALSE; ++static int xsync_eventbase; ++static int xsync_errorbase; ++#endif ++ + // modifier masks for alt/meta - detected when the application starts + static long qt_alt_mask = 0; + static long qt_meta_mask = 0; +@@ -1938,6 +1950,11 @@ void qt_init_internal( int *argcptr, cha + qt_x11_intern_atom( "UTF8_STRING", &qt_utf8_string ); + qt_x11_intern_atom( "_SGI_DESKS_MANAGER", &qt_sgi_desks_manager ); + ++#ifndef QT_NO_XSYNC ++ qt_x11_intern_atom( "_NET_WM_SYNC_REQUEST_COUNTER", &qt_net_wm_sync_request_counter ); ++ qt_x11_intern_atom( "_NET_WM_SYNC_REQUEST", &qt_net_wm_sync_request ); ++#endif ++ + qt_xdnd_setup(); + qt_x11_motifdnd_init(); + +@@ -1974,6 +1991,15 @@ void qt_init_internal( int *argcptr, cha + } + #endif // QT_NO_XRENDER + ++#ifndef QT_NO_XSYNC ++ // Try to initialize SYNC extension on the connected display ++ int xsync_major, xsync_minor; ++ if ( XSyncQueryExtension( appDpy, &xsync_eventbase, &xsync_errorbase ) && ++ XSyncInitialize( appDpy, &xsync_major, &xsync_minor ) ) { ++ qt_use_xsync = TRUE; ++ } ++#endif ++ + #ifndef QT_NO_XKB + // If XKB is detected, set the GrabsUseXKBState option so input method + // compositions continue to work (ie. deadkeys) +@@ -3141,6 +3167,10 @@ int QApplication::x11ClientMessage(QWidg + XSendEvent( event->xclient.display, event->xclient.window, + False, SubstructureNotifyMask|SubstructureRedirectMask, event ); + } ++#ifndef QT_NO_XSYNC ++ } else if (a == qt_net_wm_sync_request ) { ++ widget->handleSyncRequest( event ); ++#endif + } + } else if ( event->xclient.message_type == qt_qt_scrolldone ) { + widget->translateScrollDoneEvent(event); +@@ -5681,6 +5711,21 @@ bool QETWidget::translateScrollDoneEvent + return FALSE; + } + ++#if defined(Q_C_CALLBACKS) ++extern "C" { ++#endif ++#ifndef QT_NO_XSYNC ++static Bool qt_net_wm_sync_request_scanner(Display*, XEvent* event, XPointer arg) ++{ ++ return (event->type == ClientMessage && event->xclient.window == *(Window*)arg ++ && event->xclient.message_type == qt_wm_protocols ++ && event->xclient.data.l[ 0 ] == qt_net_wm_sync_request ); ++} ++#endif ++ ++#if defined(Q_C_CALLBACKS) ++} ++#endif + + // + // ConfigureNotify (window move and resize) event translation +@@ -5712,6 +5757,7 @@ bool QETWidget::translateConfigEvent( co + if (! extra || extra->compress_events) { + // ConfigureNotify compression for faster opaque resizing + XEvent otherEvent; ++ int compressed_configs = 0; + while ( XCheckTypedWindowEvent( x11Display(), winId(), ConfigureNotify, + &otherEvent ) ) { + if ( qt_x11EventFilter( &otherEvent ) ) +@@ -5732,7 +5778,18 @@ bool QETWidget::translateConfigEvent( co + newCPos.ry() = otherEvent.xconfigure.y + + otherEvent.xconfigure.border_width; + } ++ ++compressed_configs; ++ } ++#ifndef QT_NO_XSYNC ++ // _NET_WM_SYNC_REQUEST compression ++ Window wid = winId(); ++ while ( compressed_configs && ++ XCheckIfEvent( x11Display(), &otherEvent, ++ qt_net_wm_sync_request_scanner, (XPointer)&wid ) ) { ++ handleSyncRequest( (void*)&otherEvent ); ++ --compressed_configs; + } ++#endif + } + + QRect cr ( geometry() ); +@@ -5786,6 +5843,8 @@ bool QETWidget::translateConfigEvent( co + repaint( !testWFlags(WResizeNoErase) || transbg ); + } + ++ incrementSyncCounter(); ++ + return TRUE; + } + diff --git a/SOURCES/0084-compositing-properties.patch b/SOURCES/0084-compositing-properties.patch new file mode 100644 index 0000000..368b6c2 --- /dev/null +++ b/SOURCES/0084-compositing-properties.patch @@ -0,0 +1,80 @@ +qt-bugs@ issue : none +bugs.kde.org number : none +applied: no +author: Lubos Lunak + +This patch makes override-redirect windows (popup menu, dropdown menu, +tooltip, combobox, etc.) also have more window properties like WM_CLASS, +so they can be used when compositing. + +--- src/kernel/qwidget_x11.cpp.sav 2007-06-25 10:36:42.000000000 +0200 ++++ src/kernel/qwidget_x11.cpp 2007-10-02 15:30:13.000000000 +0200 +@@ -557,7 +557,10 @@ void QWidget::create( WId window, bool i + wsa.save_under = True; + XChangeWindowAttributes( dpy, id, CWOverrideRedirect | CWSaveUnder, + &wsa ); +- x11SetWindowType(); ++ XClassHint class_hint; ++ class_hint.res_name = (char *) qAppName(); // application name ++ class_hint.res_class = (char *) qAppClass(); // application class ++ XSetClassHint( dpy, id, &class_hint ); + } else if ( topLevel && !desktop ) { // top-level widget + QWidget *p = parentWidget(); // real parent + if (p) +@@ -620,8 +623,6 @@ void QWidget::create( WId window, bool i + else + XDeleteProperty(dpy, id, qt_xa_motif_wm_hints); + +- x11SetWindowType(); +- + // set _NET_WM_WINDOW_STATE + if (curr_winstate > 0) + XChangeProperty(dpy, id, qt_net_wm_state, XA_ATOM, 32, PropModeReplace, +@@ -629,11 +630,6 @@ void QWidget::create( WId window, bool i + else + XDeleteProperty(dpy, id, qt_net_wm_state); + +- // set _NET_WM_PID +- long curr_pid = getpid(); +- XChangeProperty(dpy, id, qt_net_wm_pid, XA_CARDINAL, 32, PropModeReplace, +- (unsigned char *) &curr_pid, 1); +- + #ifndef QT_NO_XSYNC + // set _NET_WM_SYNC_COUNTER + createSyncCounter(); +@@ -645,19 +641,31 @@ void QWidget::create( WId window, bool i + // when we create a toplevel widget, the frame strut should be dirty + fstrut_dirty = 1; + ++ } else { ++ // non-toplevel widgets don't have a frame, so no need to ++ // update the strut ++ fstrut_dirty = 0; ++ } ++ ++ if (initializeWindow && (popup || (topLevel && !desktop))) { // properties set on all toplevel windows ++ x11SetWindowType(); ++ ++ // set _NET_WM_PID ++ long curr_pid = getpid(); ++ XChangeProperty(dpy, id, qt_net_wm_pid, XA_CARDINAL, 32, PropModeReplace, ++ (unsigned char *) &curr_pid, 1); ++ + // declare the widget's object name as window role + XChangeProperty( dpy, id, + qt_window_role, XA_STRING, 8, PropModeReplace, + (unsigned char *)name(), qstrlen( name() ) ); + + // set client leader property ++ if ( !qt_x11_wm_client_leader ) ++ qt_x11_create_wm_client_leader(); + XChangeProperty( dpy, id, qt_wm_client_leader, + XA_WINDOW, 32, PropModeReplace, + (unsigned char *)&qt_x11_wm_client_leader, 1 ); +- } else { +- // non-toplevel widgets don't have a frame, so no need to +- // update the strut +- fstrut_dirty = 0; + } + + if ( initializeWindow ) { diff --git a/SOURCES/assistant3.desktop b/SOURCES/assistant3.desktop new file mode 100644 index 0000000..cb84958 --- /dev/null +++ b/SOURCES/assistant3.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=Qt3 Assistant +Comment=Add translations to Qt3 applications +Exec=assistant +Icon=assistant3 +Terminal=false +Type=Application +Categories=Qt;Development; diff --git a/SOURCES/designer3.desktop b/SOURCES/designer3.desktop new file mode 100644 index 0000000..22cb14f --- /dev/null +++ b/SOURCES/designer3.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Qt3 Designer +GenericName=Interface Designer +Comment=Design GUIs for Qt3 applications +Exec=designer +Icon=designer3 +MimeType=application/x-designer; +Terminal=false +Type=Application +Categories=Qt;Development; diff --git a/SOURCES/linguist3.desktop b/SOURCES/linguist3.desktop new file mode 100644 index 0000000..74aca11 --- /dev/null +++ b/SOURCES/linguist3.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Qt3 Linguist +Comment=Add translations to Qt3 applications +Exec=linguist +Icon=linguist3 +MimeType=application/x-linguist; +Terminal=false +Type=Application +Categories=Qt;Development; diff --git a/SOURCES/qt-3.0.5-nodebug.patch b/SOURCES/qt-3.0.5-nodebug.patch new file mode 100644 index 0000000..09d697f --- /dev/null +++ b/SOURCES/qt-3.0.5-nodebug.patch @@ -0,0 +1,15 @@ +--- qt-x11-free-3.0.5/src/tools/qgpluginmanager.cpp.bero 2002-08-21 15:16:19.000000000 +0200 ++++ qt-x11-free-3.0.5/src/tools/qgpluginmanager.cpp 2002-08-21 15:16:41.000000000 +0200 +@@ -501,10 +501,10 @@ + (*f).latin1(), + (const char*) QFile::encodeName( old->library() ) ); + } else { +- qWarning("%s: Feature %s already defined in %s!", ++/* qWarning("%s: Feature %s already defined in %s!", + (const char*) QFile::encodeName( old->library() ), + (*f).latin1(), +- (const char*) QFile::encodeName( plugin->library() ) ); ++ (const char*) QFile::encodeName( plugin->library() ) ); */ + } + } + } diff --git a/SOURCES/qt-3.1.0-makefile.patch b/SOURCES/qt-3.1.0-makefile.patch new file mode 100644 index 0000000..009ab81 --- /dev/null +++ b/SOURCES/qt-3.1.0-makefile.patch @@ -0,0 +1,11 @@ +--- qt-x11-free-3.1.0/Makefile.orig 2002-11-14 15:44:17.000000000 +0100 ++++ qt-x11-free-3.1.0/Makefile 2002-11-14 15:49:33.000000000 +0100 +@@ -11,7 +11,7 @@ + install: FORCE + @$(MAKE) qt.install + +-all: symlinks src-qmake src-moc sub-src sub-tools sub-tutorial sub-examples ++all: symlinks src-qmake src-moc sub-src sub-tools + @echo + @echo "The Qt library is now built in ./lib" + @echo "The Qt examples are built in the directories in ./examples" diff --git a/SOURCES/qt-3.3.3-gtkstyle.patch b/SOURCES/qt-3.3.3-gtkstyle.patch new file mode 100644 index 0000000..2c1e81e --- /dev/null +++ b/SOURCES/qt-3.3.3-gtkstyle.patch @@ -0,0 +1,114 @@ +--- qt-x11-free-3.3.3.orig/src/widgets/qmenubar.cpp 2004-08-05 16:42:21.000000000 +0200 ++++ qt-x11-free-3.3.3/src/widgets/qmenubar.cpp 2004-12-03 17:26:43.000000000 +0100 +@@ -228,6 +228,10 @@ + static const int motifItemHMargin = 5; // menu item hor text margin + static const int motifItemVMargin = 4; // menu item ver text margin + ++// The others are 0 ++static const int gtkItemHMargin = 8; ++static const int gtkItemVMargin = 8; ++ + /* + + +----------------------------- +@@ -292,7 +296,14 @@ + setFrameStyle( QFrame::MenuBarPanel | QFrame::Raised ); + + QFontMetrics fm = fontMetrics(); +- int h = 2*motifBarVMargin + fm.height() + motifItemVMargin + 2*frameWidth() + 2*motifItemFrame; ++ ++ int h; ++ int gs = style().styleHint(QStyle::SH_GUIStyle); ++ if (gs == GtkStyle) { ++ h = fm.height() + gtkItemVMargin; ++ } else { ++ h = 2*motifBarVMargin + fm.height() + motifItemVMargin + 2*frameWidth() + 2*motifItemFrame; ++ } + + setGeometry( 0, 0, width(), h ); + +@@ -944,12 +955,19 @@ + h = QMAX( mi->pixmap()->height() + 4, QApplication::globalStrut().height() ); + } else if ( !mi->text().isNull() ) { // text item + QString s = mi->text(); +- w = fm.boundingRect( s ).width() +- + 2*motifItemHMargin; ++ if ( gs == GtkStyle ) { ++ w = fm.boundingRect( s ).width() + 2*gtkItemHMargin; ++ } else { ++ w = fm.boundingRect( s ).width() + 2*motifItemHMargin; ++ } + w -= s.contains('&')*fm.width('&'); + w += s.contains("&&")*fm.width('&'); + w = QMAX( w, QApplication::globalStrut().width() ); +- h = QMAX( fm.height() + motifItemVMargin, QApplication::globalStrut().height() ); ++ if (gs == GtkStyle ) { ++ h = QMAX( fm.height() + gtkItemVMargin, QApplication::globalStrut().height() ); ++ } else { ++ h = QMAX( fm.height() + motifItemVMargin, QApplication::globalStrut().height() ); ++ } + } else if ( mi->isSeparator() ) { // separator item + if ( style().styleHint(QStyle::SH_GUIStyle) == MotifStyle ) + separator = i; //### only motif? +--- qt-x11-free-3.3.3.orig/src/widgets/qpopupmenu.cpp 2004-08-05 16:42:21.000000000 +0200 ++++ qt-x11-free-3.3.3/src/widgets/qpopupmenu.cpp 2004-12-03 17:43:50.000000000 +0100 +@@ -65,6 +65,8 @@ + static const int motifArrowHMargin = 6; // arrow horizontal margin + static const int motifArrowVMargin = 2; // arrow vertical margin + ++static const int gtkArrowHMargin = 0; // arrow horizontal margin ++static const int gtkArrowVMargin = 0; // arrow vertical margin + + /* + +@@ -2289,8 +2291,18 @@ + QRect r( itemGeometry( actItem ) ); + QPoint p; + QSize ps = popup->sizeHint(); ++ // GUI Style ++ int gs = style().styleHint(QStyle::SH_GUIStyle); ++ int arrowHMargin, arrowVMargin; ++ if (gs == GtkStyle) { ++ arrowHMargin = gtkArrowHMargin; ++ arrowVMargin = gtkArrowVMargin; ++ } else { ++ arrowHMargin = motifArrowHMargin; ++ arrowVMargin = motifArrowVMargin; ++ } + if( QApplication::reverseLayout() ) { +- p = QPoint( r.left() + motifArrowHMargin - ps.width(), r.top() + motifArrowVMargin ); ++ p = QPoint( r.left() + arrowHMargin - ps.width(), r.top() + arrowVMargin ); + p = mapToGlobal( p ); + + bool right = FALSE; +@@ -2303,7 +2315,7 @@ + if ( right ) + p.setX( mapToGlobal( r.topRight() ).x() ); + } else { +- p = QPoint( r.right() - motifArrowHMargin, r.top() + motifArrowVMargin ); ++ p = QPoint( r.right() - arrowHMargin, r.top() + arrowVMargin ); + p = mapToGlobal( p ); + + bool left = FALSE; +--- qt-x11-free-3.3.3.orig/src/kernel/qnamespace.h 2004-08-05 16:42:10.000000000 +0200 ++++ qt-x11-free-3.3.3/src/kernel/qnamespace.h 2004-11-29 22:22:26.000000000 +0100 +@@ -294,7 +294,8 @@ + #ifdef QT_NO_COMPAT + enum GUIStyle { + WindowsStyle = 1, // ### Qt 4.0: either remove the obsolete enums or clean up compat vs. +- MotifStyle = 4 // ### QT_NO_COMPAT by reordering or combination into one enum. ++ MotifStyle = 4, // ### QT_NO_COMPAT by reordering or combination into one enum. ++ GtkStyle = 6 // Gtk compability mode + }; + #else + enum GUIStyle { +@@ -302,7 +303,8 @@ + WindowsStyle, + Win3Style, // OBSOLETE + PMStyle, // OBSOLETE +- MotifStyle ++ MotifStyle, ++ GtkStyle = 6 // Gtk compability mode + }; + #endif + diff --git a/SOURCES/qt-3.3.4-print-CJK.patch b/SOURCES/qt-3.3.4-print-CJK.patch new file mode 100644 index 0000000..5bd5e9e --- /dev/null +++ b/SOURCES/qt-3.3.4-print-CJK.patch @@ -0,0 +1,18 @@ +--- qt-x11-free-3.3.4/src/kernel/qpsprinter.cpp.cjk 2005-01-21 18:16:11.000000000 +0100 ++++ qt-x11-free-3.3.4/src/kernel/qpsprinter.cpp 2005-01-26 15:09:20.911239907 +0100 +@@ -4748,10 +4748,11 @@ + + // GB18030 fonts on Turbolinux + static const psfont SongGBK2K [] = { +- { "MSung-Light-GBK2K-H", 0, 100. }, +- { "MSung-Italic-GBK2K-H", 0, 100. }, +- { "MSung-Bold-GBK2K-H", 0, 100. }, +- { "MSung-BoldItalic-GBK2K-H", 0, 100. }, ++ { "MSungGBK-Light-GBK2K-H", 0, 100. }, ++ { "MSungGBK-Light-GBK2K-H", 0, 100. }, ++ { "MSungGBK-Light-GBK2K-H", 0, 100. }, ++ { "MSungGBK-Light-GBK2K-H", 0, 100. }, ++ + }; + static const psfont KaiGBK2K [] = { + { "MKai-Medium-GBK2K-H", 0, 100. }, diff --git a/SOURCES/qt-3.3.6-fontrendering-214371.patch b/SOURCES/qt-3.3.6-fontrendering-214371.patch new file mode 100644 index 0000000..9dca799 --- /dev/null +++ b/SOURCES/qt-3.3.6-fontrendering-214371.patch @@ -0,0 +1,15 @@ +diff -pruN qt-x11-free-3.3.6.org/src/kernel/qscriptengine_x11.cpp qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp +--- qt-x11-free-3.3.6.org/src/kernel/qscriptengine_x11.cpp 2006-12-04 18:47:11.000000000 +0530 ++++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2006-12-05 12:05:10.000000000 +0530 +@@ -1412,7 +1412,10 @@ static bool indic_shape_syllable(QOpenTy + toPos += 2; + if (script == QFont::Devanagari || script == QFont::Gujarati || script == QFont::Bengali) { + if (matra_position == Post || matra_position == Split) { +- toPos = matra+1; ++ if (matra_position == Post ) ++ toPos = matra; ++ else ++ toPos = matra+1; + matra -= 2; + } + } else if (script == QFont::Kannada) { diff --git a/SOURCES/qt-3.3.6-fontrendering-gu-228452.patch b/SOURCES/qt-3.3.6-fontrendering-gu-228452.patch new file mode 100644 index 0000000..21081d1 --- /dev/null +++ b/SOURCES/qt-3.3.6-fontrendering-gu-228452.patch @@ -0,0 +1,12 @@ +diff -pruN qt-x11-free-3.3.6.org/src/kernel/qscriptengine_x11.cpp qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp +--- qt-x11-free-3.3.6.org/src/kernel/qscriptengine_x11.cpp 2007-02-13 14:41:25.000000000 +0530 ++++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2007-02-13 14:40:02.000000000 +0530 +@@ -253,7 +253,7 @@ static const unsigned char indicForms[0x + Unknown, Unknown, Unknown, Unknown, + Unknown, Unknown, Unknown, Unknown, + +- Other, Other, Other, Other, ++ Other, Other, VowelMark, VowelMark, + Other, Other, Other, Other, + Other, Other, Other, Other, + Other, Other, Other, Other, diff --git a/SOURCES/qt-3.3.6-fontrendering-ml_IN-209097.patch b/SOURCES/qt-3.3.6-fontrendering-ml_IN-209097.patch new file mode 100644 index 0000000..01f3824 --- /dev/null +++ b/SOURCES/qt-3.3.6-fontrendering-ml_IN-209097.patch @@ -0,0 +1,60 @@ +--- qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp.bak 2006-10-13 13:21:37.000000000 +0800 ++++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2006-10-13 13:57:36.000000000 +0800 +@@ -868,7 +868,7 @@ + None, None, None, None, + None, None, None, Post, + +- Post, None, Below, None, ++ None, None, None, None, + None, Post, None, None, + None, None, None, None, + None, None, Post, Post, +@@ -1271,6 +1271,16 @@ + int base = 0; + int reph = -1; + ++ //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam ++ bool is_special_conjuction_malayalam = false; ++ ++ if ((len == 3) && ++ ((reordered[2] == 0x0d30) || (reordered[2] == 0x0d31)) && ++ (reordered[1] == 0x0d4d) && ++ ((reordered[0] >= 0x0d15) && (reordered[0] <= 0x0d39))) { ++ is_special_conjuction_malayalam = true; ++ } ++ + #ifdef INDIC_DEBUG + IDEBUG("original:"); + for (i = 0; i < len; i++) { +@@ -1547,6 +1557,15 @@ + reph = i; + } + ++ //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam ++ if (is_special_conjuction_malayalam) { ++ unsigned short temp; ++ ++ temp = reordered[0]; ++ reordered[0] = reordered[2]; ++ reordered[2] = temp; ++ } ++ + if (item->font->stringToCMap((const QChar *)reordered.data(), len, item->glyphs, item->advances, + &item->num_glyphs, item->flags & QTextEngine::RightToLeft) != QFontEngine::NoError) + return FALSE; +@@ -1658,6 +1677,15 @@ + + // halant always applies + ++ //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam ++ if (is_special_conjuction_malayalam) { ++ unsigned int temp; ++ ++ temp = properties[0]; ++ properties[0] = ~PreSubstProperty; ++ properties[2] = temp; ++ } ++ + #ifdef INDIC_DEBUG + { + IDEBUG("OT properties:"); diff --git a/SOURCES/qt-3.3.6-fontrendering-ml_IN-209974.patch b/SOURCES/qt-3.3.6-fontrendering-ml_IN-209974.patch new file mode 100644 index 0000000..8dbb2ae --- /dev/null +++ b/SOURCES/qt-3.3.6-fontrendering-ml_IN-209974.patch @@ -0,0 +1,11 @@ +--- qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp.orig 2006-11-29 17:17:26.000000000 +0100 ++++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2006-11-29 17:22:34.000000000 +0100 +@@ -864,7 +864,7 @@ + None, None, None, Post, + + None, None, None, None, +- None, Post, None, None, ++ None, None, None, None, + None, None, None, None, + None, None, Post, Post, + diff --git a/SOURCES/qt-3.3.6-fontrendering-ml_IN-217657.patch b/SOURCES/qt-3.3.6-fontrendering-ml_IN-217657.patch new file mode 100644 index 0000000..eb880b1 --- /dev/null +++ b/SOURCES/qt-3.3.6-fontrendering-ml_IN-217657.patch @@ -0,0 +1,12 @@ +diff -pruN qt-x11-free-3.3.6.org/src/kernel/qfont_x11.cpp qt-x11-free-3.3.6/src/kernel/qfont_x11.cpp +--- qt-x11-free-3.3.6.org/src/kernel/qfont_x11.cpp 2006-03-08 00:00:00.000000000 +0530 ++++ qt-x11-free-3.3.6/src/kernel/qfont_x11.cpp 2006-12-04 18:49:09.000000000 +0530 +@@ -709,7 +709,7 @@ int QFontMetrics::charWidth( const QStri + if ( script >= QFont::Arabic && script <= QFont::Khmer ) { + // complex script shaping. Have to do some hard work + int from = QMAX( 0, pos - 8 ); +- int to = QMIN( (int)str.length(), pos + 8 ); ++ int to = str.length(); + QConstString cstr( str.unicode()+from, to-from); + QTextEngine layout( cstr.string(), d ); + layout.itemize( QTextEngine::WidthOnly ); diff --git a/SOURCES/qt-3.3.6-fontrendering-te_IN-211259.patch b/SOURCES/qt-3.3.6-fontrendering-te_IN-211259.patch new file mode 100644 index 0000000..eb3868c --- /dev/null +++ b/SOURCES/qt-3.3.6-fontrendering-te_IN-211259.patch @@ -0,0 +1,11 @@ +--- qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp.bak 2006-10-18 17:55:23.000000000 +0800 ++++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2006-10-19 16:42:31.641160984 +0800 +@@ -786,7 +786,7 @@ + Below, None, Below, Below, + Below, Below, Below, Below, + +- Below, None, Below, Below, ++ Below, Below, Below, Below, + None, Below, Below, Below, + Below, Below, None, None, + None, None, Post, Above, diff --git a/SOURCES/qt-3.3.8-fontrendering-#214570.patch b/SOURCES/qt-3.3.8-fontrendering-#214570.patch new file mode 100644 index 0000000..41a74fb --- /dev/null +++ b/SOURCES/qt-3.3.8-fontrendering-#214570.patch @@ -0,0 +1,23 @@ +--- qt-x11-free-3.3.8/src/kernel/qscriptengine_x11.cpp.orig 2007-04-11 15:05:34.000000000 +0200 ++++ qt-x11-free-3.3.8/src/kernel/qscriptengine_x11.cpp 2007-04-11 15:22:19.000000000 +0200 +@@ -1240,7 +1240,7 @@ + int script = item->script; + Q_ASSERT(script >= QFont::Devanagari && script <= QFont::Sinhala); + const unsigned short script_base = 0x0900 + 0x80*(script-QFont::Devanagari); +- const unsigned short ra = script_base + 0x30; ++ unsigned short ra = script_base + 0x30; //it was const unsigned short ra before modification + const unsigned short halant = script_base + 0x4d; + const unsigned short nukta = script_base + 0x3c; + +@@ -1278,6 +1278,11 @@ + } + #endif + ++ unsigned short *chkAssamese=reordered.data(); ++ if((script == QFont::Bengali) && (*chkAssamese==0x09F0)) //if it is assamese ra ++ { ++ ra = script_base + 0x70; ++ } + if (len != 1) { + unsigned short *uc = reordered.data(); + bool beginsWithRa = FALSE; diff --git a/SOURCES/qt-3.3.8-fontrendering-as_IN-209972.patch b/SOURCES/qt-3.3.8-fontrendering-as_IN-209972.patch new file mode 100644 index 0000000..7583239 --- /dev/null +++ b/SOURCES/qt-3.3.8-fontrendering-as_IN-209972.patch @@ -0,0 +1,11 @@ +--- qt-x11-free-3.3.8/src/kernel/qscriptengine_x11.cpp.orig 2007-04-11 15:05:34.000000000 +0200 ++++ qt-x11-free-3.3.8/src/kernel/qscriptengine_x11.cpp 2007-04-11 15:22:19.000000000 +0200 +@@ -601,7 +601,7 @@ + None, None, None, None, + None, None, None, None, + +- None, None, None, None, ++ Below, None, None, None, + None, None, None, None, + None, None, None, None, + None, None, None, None, diff --git a/SOURCES/qt-3.3.8-libpng15.patch b/SOURCES/qt-3.3.8-libpng15.patch new file mode 100644 index 0000000..e64fea3 --- /dev/null +++ b/SOURCES/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 ++#include + + + #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; ipalette[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; isig_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/SOURCES/qt-uic-nostdlib.patch b/SOURCES/qt-uic-nostdlib.patch new file mode 100644 index 0000000..02a40b2 --- /dev/null +++ b/SOURCES/qt-uic-nostdlib.patch @@ -0,0 +1,12 @@ +--- qt-x11-free-3.3.2/tools/designer/uic/main.cpp.sopwith 2004-06-16 17:14:17.000000000 -0400 ++++ qt-x11-free-3.3.2/tools/designer/uic/main.cpp 2004-06-16 17:21:43.000000000 -0400 +@@ -149,6 +149,9 @@ + } else { + trmacro = &opt[1]; + } ++ } else if ( opt == "nostdlib") { ++ QStringList x; ++ QApplication::setLibraryPaths(x); + } else if ( opt == "L" ) { + if ( !(n < argc-1) ) { + error = "Missing plugin path."; diff --git a/SOURCES/qt-x11-free-3.3.2-quiet.patch b/SOURCES/qt-x11-free-3.3.2-quiet.patch new file mode 100644 index 0000000..6dce7aa --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.2-quiet.patch @@ -0,0 +1,14 @@ +--- qt-x11-free-3.3.2/src/kernel/qpixmap_x11.cpp.orig 2004-05-10 13:54:03.592289052 +0200 ++++ qt-x11-free-3.3.2/src/kernel/qpixmap_x11.cpp 2004-05-10 13:56:10.165560473 +0200 +@@ -288,8 +288,9 @@ + { + #if defined(QT_CHECK_STATE) + if ( qApp->type() == QApplication::Tty ) { +- qWarning( "QPixmap: Cannot create a QPixmap when no GUI " +- "is being used" ); ++// qWarning( "QPixmap: Cannot create a QPixmap when no GUI " ++// "is being used" ); ++ ; + } + #endif + diff --git a/SOURCES/qt-x11-free-3.3.3-gl.patch b/SOURCES/qt-x11-free-3.3.3-gl.patch new file mode 100644 index 0000000..8a9648b --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.3-gl.patch @@ -0,0 +1,30 @@ +--- qt-x11-free-3.3.3/src/opengl/qgl_x11.cpp.orig 2004-08-18 14:55:20.629068213 +0200 ++++ qt-x11-free-3.3.3/src/opengl/qgl_x11.cpp 2004-08-18 15:00:43.090260739 +0200 +@@ -125,7 +125,7 @@ + if (gl_syms_resolved) + return TRUE; + +- QLibrary gl("GL"); ++ QLibrary gl("GL.so.1"); + gl.setAutoUnload(FALSE); + + qt_glCallLists = (_glCallLists) gl.resolve("glCallLists"); +@@ -283,7 +283,7 @@ + typedef Status (*_XmuLookupStandardColormap)( Display *dpy, int screen, VisualID visualid, unsigned int depth, + Atom property, Bool replace, Bool retain ); + _XmuLookupStandardColormap qt_XmuLookupStandardColormap; +- qt_XmuLookupStandardColormap = (_XmuLookupStandardColormap) QLibrary::resolve("Xmu", "XmuLookupStandardColormap"); ++ qt_XmuLookupStandardColormap = (_XmuLookupStandardColormap) QLibrary::resolve("Xmu.so.6", "XmuLookupStandardColormap"); + if (!qt_XmuLookupStandardColormap) + qFatal("Unable to resolve Xmu symbols - please check your Xmu library installation."); + #define XmuLookupStandardColormap qt_XmuLookupStandardColormap +--- qt-x11-free-3.3.3/src/tools/qlibrary.cpp.orig 2004-08-18 14:56:00.322185890 +0200 ++++ qt-x11-free-3.3.3/src/tools/qlibrary.cpp 2004-08-18 14:57:51.939637946 +0200 +@@ -425,6 +425,7 @@ + } else { + tmpfilename = QString( "lib%1" ).arg( filename ); + } ++ if ( !filename.contains(".so") ) + tmpfilename += filter; + if(QFile::exists(tmpfilename) || it == filters.end()) { + filename = tmpfilename; diff --git a/SOURCES/qt-x11-free-3.3.3-qembed.patch b/SOURCES/qt-x11-free-3.3.3-qembed.patch new file mode 100644 index 0000000..2edf959 --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.3-qembed.patch @@ -0,0 +1,20 @@ +--- qt-x11-free-3.3.3/tools/tools.pro.qembed 2004-06-08 10:05:03.000000000 +0200 ++++ qt-x11-free-3.3.3/tools/tools.pro 2004-08-11 15:47:35.393118498 +0200 +@@ -5,6 +5,7 @@ + SUBDIRS = assistant/lib \ + designer \ + assistant \ ++ qembed \ + linguist + unix:SUBDIRS += qtconfig + } +--- qt-x11-free-3.3.3/tools/qembed/qembed.pro.qembed 2004-06-08 10:08:40.000000000 +0200 ++++ qt-x11-free-3.3.3/tools/qembed/qembed.pro 2004-08-11 15:51:12.008859486 +0200 +@@ -2,3 +2,7 @@ + SOURCES = qembed.cpp + TARGET = qembed + REQUIRES=full-config nocrosscompiler ++DESTDIR = ../../bin ++target.path=$$bins.path ++INSTALLS += target ++ diff --git a/SOURCES/qt-x11-free-3.3.4-fullscreen.patch b/SOURCES/qt-x11-free-3.3.4-fullscreen.patch new file mode 100644 index 0000000..0d03f08 --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.4-fullscreen.patch @@ -0,0 +1,11 @@ +--- qt-x11-free-3.3.3/src/kernel/qapplication_x11.cpp.orig 2004-11-09 18:57:15.012843629 +0100 ++++ qt-x11-free-3.3.3/src/kernel/qapplication_x11.cpp 2004-11-09 19:02:31.351637807 +0100 +@@ -1412,7 +1412,7 @@ + False, XA_ATOM, &type, &format, &nitems, &after, &data); + + if (type == XA_ATOM && format == 32) { +- ts.writeBlock((const char *) data, nitems * 4); ++ ts.writeBlock((const char *) data, nitems * sizeof(long)); + offset += nitems; + } else + after = 0; diff --git a/SOURCES/qt-x11-free-3.3.5-uic.patch b/SOURCES/qt-x11-free-3.3.5-uic.patch new file mode 100644 index 0000000..e2730a1 --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.5-uic.patch @@ -0,0 +1,18 @@ +Index: tools/designer/uic/form.cpp +=================================================================== +--- qt/tools/designer/uic/form.cpp (revision 460038) ++++ qt/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/SOURCES/qt-x11-free-3.3.6-qfontdatabase_x11.patch b/SOURCES/qt-x11-free-3.3.6-qfontdatabase_x11.patch new file mode 100644 index 0000000..a9cfaf4 --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.6-qfontdatabase_x11.patch @@ -0,0 +1,11 @@ +--- qt-x11-free-3.3.6/src/kernel/qfontdatabase_x11.cpp.fonts 2004-08-05 16:42:06.000000000 +0200 ++++ qt-x11-free-3.3.6/src/kernel/qfontdatabase_x11.cpp 2004-09-28 16:11:54.955374161 +0200 +@@ -975,7 +981,7 @@ + }; + const XftDefaultFont defaults[] = { + { "Serif", "serif", FALSE }, +- { "Sans Serif", "sans-serif", FALSE }, ++ { "Sans", "sans-serif", FALSE }, + { "Monospace", "monospace", TRUE }, + { 0, 0, FALSE } + }; diff --git a/SOURCES/qt-x11-free-3.3.6-qt-x11-immodule-unified-qt3.3.5-20060318-resetinputcontext.patch b/SOURCES/qt-x11-free-3.3.6-qt-x11-immodule-unified-qt3.3.5-20060318-resetinputcontext.patch new file mode 100644 index 0000000..2498220 --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.6-qt-x11-immodule-unified-qt3.3.5-20060318-resetinputcontext.patch @@ -0,0 +1,92 @@ +--- qt-x11-free-3.3.6/src/widgets/qtextedit.cpp.preedit 2006-06-28 17:18:08.000000000 +0200 ++++ qt-x11-free-3.3.6/src/widgets/qtextedit.cpp 2006-06-28 17:20:09.000000000 +0200 +@@ -1906,9 +1906,6 @@ + + void QTextEdit::removeSelectedText( int selNum ) + { +- if(selNum != 0) +- resetInputContext(); +- + QTextCursor c1 = doc->selectionStartCursor( selNum ); + c1.restoreState(); + QTextCursor c2 = doc->selectionEndCursor( selNum ); +@@ -3171,7 +3168,6 @@ + return; + } + #endif +- resetInputContext(); + QTextParagraph *p = doc->paragAt( para ); + if ( !p ) + return; +@@ -3198,7 +3194,6 @@ + return; + } + #endif +- resetInputContext(); + for ( int i = 0; i < (int)doc->numSelections(); ++i ) + doc->removeSelection( i ); + +@@ -3240,7 +3235,6 @@ + if ( d->optimMode ) + return; + #endif +- resetInputContext(); + QTextParagraph *p = doc->paragAt( para ); + if ( !p ) + return; +@@ -3285,7 +3279,6 @@ + if ( isReadOnly() || !doc->commands()->isUndoAvailable() || !undoEnabled ) + return; + +- resetInputContext(); + for ( int i = 0; i < (int)doc->numSelections(); ++i ) + doc->removeSelection( i ); + +@@ -3336,7 +3329,6 @@ + if ( isReadOnly() || !doc->commands()->isRedoAvailable() || !undoEnabled ) + return; + +- resetInputContext(); + for ( int i = 0; i < (int)doc->numSelections(); ++i ) + doc->removeSelection( i ); + +@@ -3450,7 +3442,6 @@ + { + if ( isReadOnly() ) + return; +- resetInputContext(); + normalCopy(); + removeSelectedText(); + updateMicroFocusHint(); +@@ -3938,7 +3929,6 @@ + return; + } + #endif +- resetInputContext(); + if ( !isModified() && isReadOnly() && + this->context() == context && this->text() == text ) + return; +@@ -4112,7 +4102,6 @@ + if ( !p ) + return; + +- resetInputContext(); + if ( index > p->length() - 1 ) + index = p->length() - 1; + +@@ -4169,7 +4158,6 @@ + return; + } + #endif +- resetInputContext(); + if ( doc->hasSelection( selNum ) ) { + doc->removeSelection( selNum ); + repaintChanged(); +@@ -5072,7 +5060,6 @@ + { + if ( dc == doc ) + return; +- resetInputContext(); + doc = dc; + delete cursor; + cursor = new QTextCursor( doc ); diff --git a/SOURCES/qt-x11-free-3.3.6-strip.patch b/SOURCES/qt-x11-free-3.3.6-strip.patch new file mode 100644 index 0000000..e736c9a --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.6-strip.patch @@ -0,0 +1,36 @@ +--- qt-x11-free-3.3.6/mkspecs/linux-g++/qmake.conf.orig 2006-06-21 15:37:53.000000000 +0200 ++++ qt-x11-free-3.3.6/mkspecs/linux-g++/qmake.conf 2006-06-21 15:38:02.000000000 +0200 +@@ -84,7 +84,7 @@ + QMAKE_MOVE = mv -f + QMAKE_DEL_FILE = rm -f + QMAKE_DEL_DIR = rmdir +-QMAKE_STRIP = strip +-QMAKE_STRIPFLAGS_LIB += --strip-unneeded ++QMAKE_STRIP = ++QMAKE_STRIPFLAGS_LIB += + QMAKE_CHK_DIR_EXISTS = test -d + QMAKE_MKDIR = mkdir -p +--- qt-x11-free-3.3.6/mkspecs/linux-g++-32/qmake.conf.orig 2006-06-21 15:37:09.000000000 +0200 ++++ qt-x11-free-3.3.6/mkspecs/linux-g++-32/qmake.conf 2006-06-21 15:37:19.000000000 +0200 +@@ -84,7 +84,7 @@ + QMAKE_MOVE = mv -f + QMAKE_DEL_FILE = rm -f + QMAKE_DEL_DIR = rmdir +-QMAKE_STRIP = strip +-QMAKE_STRIPFLAGS_LIB += --strip-unneeded ++QMAKE_STRIP = ++QMAKE_STRIPFLAGS_LIB += + QMAKE_CHK_DIR_EXISTS = test -d + QMAKE_MKDIR = mkdir -p +--- qt-x11-free-3.3.6/mkspecs/linux-g++-64/qmake.conf.orig 2006-06-21 15:36:23.000000000 +0200 ++++ qt-x11-free-3.3.6/mkspecs/linux-g++-64/qmake.conf 2006-06-21 15:36:56.000000000 +0200 +@@ -87,7 +87,7 @@ + QMAKE_MOVE = mv -f + QMAKE_DEL_FILE = rm -f + QMAKE_DEL_DIR = rmdir +-QMAKE_STRIP = strip +-QMAKE_STRIPFLAGS_LIB += --strip-unneeded ++QMAKE_STRIP = ++QMAKE_STRIPFLAGS_LIB += + QMAKE_CHK_DIR_EXISTS = test -d + QMAKE_MKDIR = mkdir -p diff --git a/SOURCES/qt-x11-free-3.3.7-arm.patch b/SOURCES/qt-x11-free-3.3.7-arm.patch new file mode 100644 index 0000000..0c93c41 --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.7-arm.patch @@ -0,0 +1,25 @@ +--- qt-x11-free-3.3.7/src/tools/qglobal.h.orig 2007-04-24 09:02:36.000000000 -0400 ++++ qt-x11-free-3.3.7/src/tools/qglobal.h 2007-04-24 09:03:02.000000000 -0400 +@@ -315,9 +315,9 @@ + QString bloat. However, gcc 3.4 doesn't allow us to create references to + members of a packed struct. (Pointers are OK, because then you + supposedly know what you are doing.) */ +-# if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP) ++# if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP) && !defined(__ARM_EABI__) + # define Q_PACKED __attribute__ ((packed)) +-# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 ++# if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + # define Q_NO_PACKED_REFERENCE + # endif + # endif +--- qt-x11-free-3.3.7/src/tools/qstring.h.orig 2007-04-24 09:03:11.000000000 -0400 ++++ qt-x11-free-3.3.7/src/tools/qstring.h 2007-04-24 09:03:27.000000000 -0400 +@@ -194,7 +194,7 @@ + char latin1() const { return ucs > 0xff ? 0 : (char) ucs; } + ushort unicode() const { return ucs; } + #ifdef Q_NO_PACKED_REFERENCE +- ushort &unicode() { return *(&ucs); } ++ ushort &unicode() { return *((ushort *)&ucs); } + #else + ushort &unicode() { return ucs; } + #endif diff --git a/SOURCES/qt-x11-free-3.3.7-umask.patch b/SOURCES/qt-x11-free-3.3.7-umask.patch new file mode 100644 index 0000000..f235190 --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.7-umask.patch @@ -0,0 +1,14 @@ +--- qt-x11-free-3.3.7/src/tools/qsettings.cpp.tn 2006-11-09 20:53:25.000000000 +0100 ++++ qt-x11-free-3.3.7/src/tools/qsettings.cpp 2006-11-09 20:59:53.000000000 +0100 +@@ -994,7 +994,10 @@ + #endif + + QFile file( filename + ".tmp" ); +- if (! file.open(IO_WriteOnly)) { ++ mode_t old_umask = umask(0022); ++ bool f = file.open(IO_WriteOnly); ++ umask(old_umask); ++ if (! f) { + + #ifdef QT_CHECK_STATE + qWarning("QSettings::sync: failed to open '%s' for writing", diff --git a/SOURCES/qt-x11-free-3.3.8-odbc.patch b/SOURCES/qt-x11-free-3.3.8-odbc.patch new file mode 100644 index 0000000..6f21e3c --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.8-odbc.patch @@ -0,0 +1,19 @@ +diff -up qt-x11-free-3.3.8/src/sql/drivers/odbc/qsql_odbc.cpp.orig qt-x11-free-3.3.8/src/sql/drivers/odbc/qsql_odbc.cpp +--- qt-x11-free-3.3.8/src/sql/drivers/odbc/qsql_odbc.cpp.orig 2009-02-24 11:32:27.000000000 +0100 ++++ qt-x11-free-3.3.8/src/sql/drivers/odbc/qsql_odbc.cpp 2009-02-24 11:33:43.000000000 +0100 +@@ -57,13 +57,13 @@ + #endif + + // newer platform SDKs use SQLLEN instead of SQLINTEGER +-#ifdef SQLLEN ++#if defined(SQLLEN) || defined(Q_OS_WIN64) || defined(Q_OS_UNIX) + # define QSQLLEN SQLLEN + #else + # define QSQLLEN SQLINTEGER + #endif + +-#ifdef SQLULEN ++#if defined(SQLULEN) || defined(Q_OS_WIN64) || defined(Q_OS_UNIX) + # define QSQLULEN SQLULEN + #else + # define QSQLULEN SQLUINTEGER diff --git a/SOURCES/qt-x11-free-3.3.8b-cstddef.patch b/SOURCES/qt-x11-free-3.3.8b-cstddef.patch new file mode 100644 index 0000000..bcbffce --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.8b-cstddef.patch @@ -0,0 +1,33 @@ +diff -up qt-x11-free-3.3.8b/src/tools/qmap.h.cstddef qt-x11-free-3.3.8b/src/tools/qmap.h +--- qt-x11-free-3.3.8b/src/tools/qmap.h.cstddef 2008-01-15 13:09:13.000000000 -0600 ++++ qt-x11-free-3.3.8b/src/tools/qmap.h 2011-01-30 21:14:29.275088725 -0600 +@@ -49,6 +49,7 @@ + #include "qvaluelist.h" + #endif // QT_H + ++#include + #ifndef QT_NO_STL + #include + #include +diff -up qt-x11-free-3.3.8b/src/tools/qvaluelist.h.cstddef qt-x11-free-3.3.8b/src/tools/qvaluelist.h +--- qt-x11-free-3.3.8b/src/tools/qvaluelist.h.cstddef 2008-01-15 13:09:13.000000000 -0600 ++++ qt-x11-free-3.3.8b/src/tools/qvaluelist.h 2011-01-30 21:14:01.765846592 -0600 +@@ -47,6 +47,7 @@ + #include "qdatastream.h" + #endif // QT_H + ++#include + #ifndef QT_NO_STL + #include + #include +diff -up qt-x11-free-3.3.8b/src/tools/qvaluevector.h.cstddef qt-x11-free-3.3.8b/src/tools/qvaluevector.h +--- qt-x11-free-3.3.8b/src/tools/qvaluevector.h.cstddef 2008-01-15 13:09:13.000000000 -0600 ++++ qt-x11-free-3.3.8b/src/tools/qvaluevector.h 2011-01-30 21:14:01.765846592 -0600 +@@ -45,6 +45,7 @@ + #include "qdatastream.h" + #endif // QT_H + ++#include + #ifndef QT_NO_STL + #include + #endif diff --git a/SOURCES/qt-x11-free-3.3.8b-fix-key-release-event-with-imm.diff b/SOURCES/qt-x11-free-3.3.8b-fix-key-release-event-with-imm.diff new file mode 100644 index 0000000..57fbca0 --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.8b-fix-key-release-event-with-imm.diff @@ -0,0 +1,57 @@ +diff -up qt-x11-free-3.3.8b/src/kernel/qapplication_x11.cpp.fix-key-release-event-with-imm qt-x11-free-3.3.8b/src/kernel/qapplication_x11.cpp +--- qt-x11-free-3.3.8b/src/kernel/qapplication_x11.cpp.fix-key-release-event-with-imm 2008-10-08 14:50:10.000000000 +0200 ++++ qt-x11-free-3.3.8b/src/kernel/qapplication_x11.cpp 2008-10-08 14:50:10.000000000 +0200 +@@ -3297,11 +3297,7 @@ int QApplication::x11ProcessEvent( XEven + // filtering opportunity first to ensure all input methods work + // properly regardless of application design. + +-#ifndef QT_NO_IM_EXTENSIONS + if( keywidget && keywidget->isEnabled() && keywidget->isInputMethodEnabled() ) { +-#else +- if( keywidget && keywidget->isEnabled() ) { +-#endif + if( ( event->type==XKeyPress || event->type==XKeyRelease ) && + sm_blockUserInput ) // block user interaction during session management + return TRUE; +@@ -5223,11 +5219,12 @@ bool QETWidget::translateKeyEventInterna + } else { + key = (int)(long)keyDict->find( keycode ); + if ( key ) +- if( !willRepeat ) // Take out key of dictionary only if this call. ++ if( !willRepeat && statefulTranslation ) // Take out key of dictionary only if this call. + keyDict->take( keycode ); + long s = (long)textDict->find( keycode ); + if ( s ) { +- textDict->take( keycode ); ++ if( statefulTranslation ) ++ textDict->take( keycode ); + ascii = (char)(s-256); + } + } +diff -up qt-x11-free-3.3.8b/src/kernel/qwidget_x11.cpp.fix-key-release-event-with-imm qt-x11-free-3.3.8b/src/kernel/qwidget_x11.cpp +--- qt-x11-free-3.3.8b/src/kernel/qwidget_x11.cpp.fix-key-release-event-with-imm 2008-10-08 14:50:10.000000000 +0200 ++++ qt-x11-free-3.3.8b/src/kernel/qwidget_x11.cpp 2008-10-08 14:59:03.000000000 +0200 +@@ -2700,11 +2700,10 @@ QInputContext *QWidget::getInputContext( + { + QInputContext *qic = 0; + +-#if !defined(QT_NO_IM_EXTENSIONS) + if ( isInputMethodEnabled() ) { ++#if !defined(QT_NO_IM_EXTENSIONS) + qic = icHolderWidget()->ic; + #else +- { + // icHolderWidget is always topLevelWidget + QTLWExtra *topdata = icHolderWidget()->topData(); + qic = (QInputContext *)topdata->xic; +@@ -2755,10 +2754,8 @@ void QWidget::changeInputContext( const + */ + void QWidget::createInputContext() + { +-#if !defined(QT_NO_IM_EXTENSIONS) + if( !isInputMethodEnabled() || QApplication::closingDown() ) + return; +-#endif + + QWidget *icWidget = icHolderWidget(); + #ifndef QT_NO_IM diff --git a/SOURCES/qt-x11-free-3.3.8b-gcc4-buildkey.patch b/SOURCES/qt-x11-free-3.3.8b-gcc4-buildkey.patch new file mode 100644 index 0000000..ed002bc --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.8b-gcc4-buildkey.patch @@ -0,0 +1,25 @@ +diff -ur qt-x11-free-3.3.8b/configure qt-x11-free-3.3.8b-gcc4-buildkey/configure +--- qt-x11-free-3.3.8b/configure 2008-01-15 20:09:15.000000000 +0100 ++++ qt-x11-free-3.3.8b-gcc4-buildkey/configure 2008-02-18 02:41:01.000000000 +0100 +@@ -3081,16 +3081,16 @@ + 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} --version 2>/dev/null | sed 's,^[^0-9]*,,g'` + case "$COMPILER_VERSION" in +- *2.95.*) ++ 2.95.*) + COMPILER_VERSION="2.95.*" + ;; +- *3.*) ++ 3.*) + COMPILER_VERSION="3.*" + ;; +- *4.*) +- COMPILER_VERSION="4" ++ 4.*) ++ COMPILER_VERSION="4.*" + ;; + *) + ;; diff --git a/SOURCES/qt-x11-free-3.3.8b-gcc43.patch b/SOURCES/qt-x11-free-3.3.8b-gcc43.patch new file mode 100644 index 0000000..4994a66 --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.8b-gcc43.patch @@ -0,0 +1,23 @@ +diff -up qt-x11-free-3.3.8b/plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.cpp.gcc43 qt-x11-free-3.3.8b/plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.cpp +--- qt-x11-free-3.3.8b/plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.cpp.gcc43 2008-02-15 23:51:58.000000000 +0100 ++++ qt-x11-free-3.3.8b/plugins/src/inputmethods/imsw-none/qnoneinputcontextplugin.cpp 2008-02-16 00:42:09.000000000 +0100 +@@ -44,7 +44,7 @@ + #include "qnoneinputcontextplugin.h" + #include + #include +- ++#include + + QNoneInputContextPlugin::QNoneInputContextPlugin() + { +diff -up qt-x11-free-3.3.8b/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp.gcc43 qt-x11-free-3.3.8b/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp +--- qt-x11-free-3.3.8b/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp.gcc43 2008-02-15 23:54:26.000000000 +0100 ++++ qt-x11-free-3.3.8b/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp 2008-02-16 00:33:49.000000000 +0100 +@@ -45,6 +45,7 @@ + #include + #include + #include ++#include + + static const int ignoreKeys[] = { + Qt::Key_Shift, diff --git a/SOURCES/qt-x11-free-3.3.8b-qimage-parentheses.patch b/SOURCES/qt-x11-free-3.3.8b-qimage-parentheses.patch new file mode 100644 index 0000000..cd0342d --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.8b-qimage-parentheses.patch @@ -0,0 +1,12 @@ +diff -ur qt-x11-free-3.3.8b/src/kernel/qimage.h qt-x11-free-3.3.8b-qimage-parentheses/src/kernel/qimage.h +--- qt-x11-free-3.3.8b/src/kernel/qimage.h 2008-01-15 20:09:13.000000000 +0100 ++++ qt-x11-free-3.3.8b-qimage-parentheses/src/kernel/qimage.h 2011-11-04 02:49:22.000000000 +0100 +@@ -58,7 +58,7 @@ + QCString lang; + + bool operator< (const QImageTextKeyLang& other) const +- { return key < other.key || key==other.key && lang < other.lang; } ++ { return key < other.key || (key==other.key && lang < other.lang); } + bool operator== (const QImageTextKeyLang& other) const + { return key==other.key && lang==other.lang; } + }; diff --git a/SOURCES/qt-x11-free-3.3.8b-qlocale-aliasing.patch b/SOURCES/qt-x11-free-3.3.8b-qlocale-aliasing.patch new file mode 100644 index 0000000..45697bc --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.8b-qlocale-aliasing.patch @@ -0,0 +1,53 @@ +diff -ur qt-x11-free-3.3.8b/src/tools/qlocale.cpp qt-x11-free-3.3.8b-qlocale-aliasing/src/tools/qlocale.cpp +--- qt-x11-free-3.3.8b/src/tools/qlocale.cpp 2008-01-15 20:09:13.000000000 +0100 ++++ qt-x11-free-3.3.8b-qlocale-aliasing/src/tools/qlocale.cpp 2011-11-04 02:38:59.000000000 +0100 +@@ -101,37 +101,37 @@ + #endif + + #if !defined(INFINITY) +-static const unsigned char be_inf_bytes[] = { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 }; +-static const unsigned char le_inf_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f }; ++static const union { unsigned char c[8]; double d; } be_inf_bytes = {{ 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 }}; ++static const union { unsigned char c[8]; double d; } le_inf_bytes = {{ 0, 0, 0, 0, 0, 0, 0xf0, 0x7f }}; + static inline double inf() + { + return (ByteOrder == BigEndian ? +- *((const double *) be_inf_bytes) : +- *((const double *) le_inf_bytes)); ++ be_inf_bytes.d : ++ le_inf_bytes.d); + } + # define INFINITY (::inf()) + #endif + + #if !defined(NAN) +-static const unsigned char be_nan_bytes[] = { 0x7f, 0xf8, 0, 0, 0, 0, 0, 0 }; +-static const unsigned char le_nan_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf8, 0x7f }; ++static const union { unsigned char c[8]; double d; } be_nan_bytes = {{ 0x7f, 0xf8, 0, 0, 0, 0, 0, 0 }}; ++static const union { unsigned char c[8]; double d; } le_nan_bytes = {{ 0, 0, 0, 0, 0, 0, 0xf8, 0x7f }}; + static inline double nan() + { + return (ByteOrder == BigEndian ? +- *((const double *) be_nan_bytes) : +- *((const double *) le_nan_bytes)); ++ be_nan_bytes.d : ++ le_nan_bytes.d); + } + # define NAN (::nan()) + #endif + + // We can't rely on -NAN, since all operations on a NAN should return a 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 const union { unsigned char c[8]; double d; } be_neg_nan_bytes = {{ 0xff, 0xf8, 0, 0, 0, 0, 0, 0 }}; ++static const union { unsigned char c[8]; double d; } le_neg_nan_bytes = {{ 0, 0, 0, 0, 0, 0, 0xf8, 0xff }}; + static inline double negNan() + { + return (ByteOrder == BigEndian ? +- *((const double *) be_neg_nan_bytes) : +- *((const double *) le_neg_nan_bytes)); ++ be_neg_nan_bytes.d : ++ le_neg_nan_bytes.d); + } + + // Sizes as defined by the ISO C99 standard - fallback diff --git a/SOURCES/qt-x11-free-3.3.8b-sane_defaults.patch b/SOURCES/qt-x11-free-3.3.8b-sane_defaults.patch new file mode 100644 index 0000000..c51ce31 --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.8b-sane_defaults.patch @@ -0,0 +1,76 @@ +diff -up qt-x11-free-3.3.8b/src/kernel/qapplication.cpp.sane_defaults qt-x11-free-3.3.8b/src/kernel/qapplication.cpp +--- qt-x11-free-3.3.8b/src/kernel/qapplication.cpp.sane_defaults 2008-01-15 13:09:13.000000000 -0600 ++++ qt-x11-free-3.3.8b/src/kernel/qapplication.cpp 2009-12-22 14:00:19.078553429 -0600 +@@ -1241,7 +1241,7 @@ QStyle& QApplication::style() + #elif defined(Q_WS_X11) && defined(Q_OS_IRIX) + style = "SGI"; // default style for X11 on IRIX + #elif defined(Q_WS_X11) +- style = "Motif"; // default style for X11 ++ style = "Platinum"; // default style for X11 + #elif defined(Q_WS_MAC) + style = "Macintosh"; // default style for all Mac's + #elif defined(Q_WS_QWS) +@@ -1250,8 +1250,8 @@ QStyle& QApplication::style() + } + app_style = QStyleFactory::create( style ); + if ( !app_style && // platform default style not available, try alternatives +- !(app_style = QStyleFactory::create( "Windows" ) ) && + !(app_style = QStyleFactory::create( "Platinum" ) ) && ++ !(app_style = QStyleFactory::create( "Windows" ) ) && + !(app_style = QStyleFactory::create( "MotifPlus" ) ) && + !(app_style = QStyleFactory::create( "Motif" ) ) && + !(app_style = QStyleFactory::create( "CDE" ) ) && +@@ -1731,6 +1731,13 @@ QStringList QApplication::libraryPaths() + app_libpaths->append(installPathPlugins); + } + ++ #if defined(Q_WS_X11) ++ QString kde3PathPlugins = QString("@@KDE3_PLUGIN_PATH@@"); ++ if ( QFile::exists(kde3PathPlugins) ) { ++ app_libpaths->append(kde3PathPlugins); ++ } ++#endif ++ + QString app_location; + if (qApp) + app_location = qApp->applicationFilePath(); +@@ -1933,7 +1940,7 @@ QFont QApplication::font( const QWidget + } + } + if ( !app_font ) { +- app_font = new QFont( "Helvetica" ); ++ app_font = new QFont( "Sans" ); + Q_CHECK_PTR( app_font ); + } + return *app_font; +diff -up qt-x11-free-3.3.8b/src/kernel/qapplication_x11.cpp.sane_defaults qt-x11-free-3.3.8b/src/kernel/qapplication_x11.cpp +--- qt-x11-free-3.3.8b/src/kernel/qapplication_x11.cpp.sane_defaults 2008-01-15 13:09:13.000000000 -0600 ++++ qt-x11-free-3.3.8b/src/kernel/qapplication_x11.cpp 2009-12-22 13:54:58.335802790 -0600 +@@ -953,8 +953,11 @@ bool QApplication::x11_apply_settings() + // read new QStyle + extern bool qt_explicit_app_style; // defined in qapplication.cpp + QString stylename = settings.readEntry( "/qt/style" ); +- if ( !stylename.isEmpty() && !qt_explicit_app_style ) { +- QApplication::setStyle( stylename ); ++ if ( !qt_explicit_app_style ) { ++ if ( stylename.isEmpty() ) ++ QApplication::setStyle( QString("Platinum") ); ++ else ++ QApplication::setStyle( stylename ); + // took the style from the user settings, so mark the explicit flag FALSE + qt_explicit_app_style = FALSE; + } +@@ -2095,11 +2098,11 @@ void qt_init_internal( int *argcptr, cha + // At 95 DPI, a 12 point font should be 16 pixels tall - in which case a 17 + // pixel font is a closer match than a 12 pixel font + int ptsz = +- (int) ( ( ( QPaintDevice::x11AppDpiY() >= 95 ? 17. : 12. ) * ++ (int) ( ( ( QPaintDevice::x11AppDpiY() >= 95 ? 13. : 11. ) * + 72. / (float) QPaintDevice::x11AppDpiY() ) + 0.5 ); + + if ( !qt_app_has_font && !qt_x11_cmdline_font ) { +- QFont f( "Helvetica", ptsz ); ++ QFont f( "Sans", ptsz ); + QApplication::setFont( f ); + } + diff --git a/SOURCES/qt-x11-free-3.3.8b-system-sqlite2.patch b/SOURCES/qt-x11-free-3.3.8b-system-sqlite2.patch new file mode 100644 index 0000000..7d8a373 --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.8b-system-sqlite2.patch @@ -0,0 +1,136 @@ +diff -ur qt-x11-free-3.3.8b/configure qt-x11-free-3.3.8b-system-sqlite2/configure +--- qt-x11-free-3.3.8b/configure 2008-01-15 20:09:15.000000000 +0100 ++++ qt-x11-free-3.3.8b-system-sqlite2/configure 2011-11-04 03:14:22.000000000 +0100 +@@ -1626,6 +1626,7 @@ + TDS_REQ="-lsybdb sybfront.h sybdb.h" + DB2_REQ="-ldb2 sqlcli.h sqlcli1.h" + IBASE_REQ="-lgds ibase.h" ++ SQLITE_REQ="-lsqlite sqlite.h" + for _SQLDR in $CFG_SQL_AVAILABLE; do + case $_SQLDR in + mysql) +@@ -1650,9 +1651,7 @@ + $unixtests/checkavail "IBASE" $OPT_VERBOSE $IBASE_REQ $L_FLAGS $I_FLAGS && CFG_SQL_AUTODETECTED="$CFG_SQL_AUTODETECTED ibase" + ;; + sqlite) +- if [ -f $relpath/src/3rdparty/sqlite/sqlite.h ]; then +- CFG_SQL_AUTODETECTED="$CFG_SQL_AUTODETECTED sqlite" +- fi ++ $unixtests/checkavail "SQLite" $OPT_VERBOSE $SQLITE_REQ $L_FLAGS $I_FLAGS && CFG_SQL_AUTODETECTED="$CFG_SQL_AUTODETECTED sqlite" + ;; + *) + if [ "$OPT_VERBOSE" = "yes" ]; then +diff -ur qt-x11-free-3.3.8b/plugins/src/sqldrivers/sqlite/sqlite.pro qt-x11-free-3.3.8b-system-sqlite2/plugins/src/sqldrivers/sqlite/sqlite.pro +--- qt-x11-free-3.3.8b/plugins/src/sqldrivers/sqlite/sqlite.pro 2008-01-15 20:09:17.000000000 +0100 ++++ qt-x11-free-3.3.8b-system-sqlite2/plugins/src/sqldrivers/sqlite/sqlite.pro 2011-11-04 03:13:17.000000000 +0100 +@@ -10,6 +10,9 @@ + + unix { + OBJECTS_DIR = .obj ++ !contains( LIBS, .*sqlite.* ) { ++ LIBS *= -lsqlite ++ } + } + + win32 { +@@ -21,54 +24,54 @@ + # win32-borland: { + # QMAKE_LFLAGS += /dlibsqlite.dll + # } +-} + +-!contains( LIBS, .*sqlite.* ) { +- INCLUDEPATH += ../../../../src/3rdparty/sqlite ++ !contains( LIBS, .*sqlite.* ) { ++ INCLUDEPATH += ../../../../src/3rdparty/sqlite + +- HEADERS += ../../../../src/3rdparty/sqlite/btree.h \ +- ../../../../src/3rdparty/sqlite/config.h \ +- ../../../../src/3rdparty/sqlite/hash.h \ +- ../../../../src/3rdparty/sqlite/opcodes.h \ +- ../../../../src/3rdparty/sqlite/os.h \ +- ../../../../src/3rdparty/sqlite/pager.h \ +- ../../../../src/3rdparty/sqlite/parse.h \ +- ../../../../src/3rdparty/sqlite/sqlite.h \ +- ../../../../src/3rdparty/sqlite/sqliteInt.h \ +- ../../../../src/3rdparty/sqlite/vdbe.h \ +- ../../../../src/3rdparty/sqlite/vdbeInt.h +- +- SOURCES += ../../../../src/3rdparty/sqlite/attach.c \ +- ../../../../src/3rdparty/sqlite/auth.c \ +- ../../../../src/3rdparty/sqlite/btree.c \ +- ../../../../src/3rdparty/sqlite/btree_rb.c \ +- ../../../../src/3rdparty/sqlite/build.c \ +- ../../../../src/3rdparty/sqlite/copy.c \ +- ../../../../src/3rdparty/sqlite/date.c \ +- ../../../../src/3rdparty/sqlite/delete.c \ +- ../../../../src/3rdparty/sqlite/expr.c \ +- ../../../../src/3rdparty/sqlite/func.c \ +- ../../../../src/3rdparty/sqlite/hash.c \ +- ../../../../src/3rdparty/sqlite/insert.c \ +- ../../../../src/3rdparty/sqlite/main.c \ +- ../../../../src/3rdparty/sqlite/opcodes.c \ +- ../../../../src/3rdparty/sqlite/os.c \ +- ../../../../src/3rdparty/sqlite/pager.c \ +- ../../../../src/3rdparty/sqlite/parse.c \ +- ../../../../src/3rdparty/sqlite/pragma.c \ +- ../../../../src/3rdparty/sqlite/printf.c \ +- ../../../../src/3rdparty/sqlite/random.c \ +- ../../../../src/3rdparty/sqlite/select.c \ +- ../../../../src/3rdparty/sqlite/shell.c \ +- ../../../../src/3rdparty/sqlite/table.c \ +- ../../../../src/3rdparty/sqlite/tokenize.c \ +- ../../../../src/3rdparty/sqlite/trigger.c \ +- ../../../../src/3rdparty/sqlite/update.c \ +- ../../../../src/3rdparty/sqlite/util.c \ +- ../../../../src/3rdparty/sqlite/vacuum.c \ +- ../../../../src/3rdparty/sqlite/vdbe.c \ +- ../../../../src/3rdparty/sqlite/vdbeaux.c \ +- ../../../../src/3rdparty/sqlite/where.c ++ HEADERS += ../../../../src/3rdparty/sqlite/btree.h \ ++ ../../../../src/3rdparty/sqlite/config.h \ ++ ../../../../src/3rdparty/sqlite/hash.h \ ++ ../../../../src/3rdparty/sqlite/opcodes.h \ ++ ../../../../src/3rdparty/sqlite/os.h \ ++ ../../../../src/3rdparty/sqlite/pager.h \ ++ ../../../../src/3rdparty/sqlite/parse.h \ ++ ../../../../src/3rdparty/sqlite/sqlite.h \ ++ ../../../../src/3rdparty/sqlite/sqliteInt.h \ ++ ../../../../src/3rdparty/sqlite/vdbe.h \ ++ ../../../../src/3rdparty/sqlite/vdbeInt.h ++ ++ SOURCES += ../../../../src/3rdparty/sqlite/attach.c \ ++ ../../../../src/3rdparty/sqlite/auth.c \ ++ ../../../../src/3rdparty/sqlite/btree.c \ ++ ../../../../src/3rdparty/sqlite/btree_rb.c \ ++ ../../../../src/3rdparty/sqlite/build.c \ ++ ../../../../src/3rdparty/sqlite/copy.c \ ++ ../../../../src/3rdparty/sqlite/date.c \ ++ ../../../../src/3rdparty/sqlite/delete.c \ ++ ../../../../src/3rdparty/sqlite/expr.c \ ++ ../../../../src/3rdparty/sqlite/func.c \ ++ ../../../../src/3rdparty/sqlite/hash.c \ ++ ../../../../src/3rdparty/sqlite/insert.c \ ++ ../../../../src/3rdparty/sqlite/main.c \ ++ ../../../../src/3rdparty/sqlite/opcodes.c \ ++ ../../../../src/3rdparty/sqlite/os.c \ ++ ../../../../src/3rdparty/sqlite/pager.c \ ++ ../../../../src/3rdparty/sqlite/parse.c \ ++ ../../../../src/3rdparty/sqlite/pragma.c \ ++ ../../../../src/3rdparty/sqlite/printf.c \ ++ ../../../../src/3rdparty/sqlite/random.c \ ++ ../../../../src/3rdparty/sqlite/select.c \ ++ ../../../../src/3rdparty/sqlite/shell.c \ ++ ../../../../src/3rdparty/sqlite/table.c \ ++ ../../../../src/3rdparty/sqlite/tokenize.c \ ++ ../../../../src/3rdparty/sqlite/trigger.c \ ++ ../../../../src/3rdparty/sqlite/update.c \ ++ ../../../../src/3rdparty/sqlite/util.c \ ++ ../../../../src/3rdparty/sqlite/vacuum.c \ ++ ../../../../src/3rdparty/sqlite/vdbe.c \ ++ ../../../../src/3rdparty/sqlite/vdbeaux.c \ ++ ../../../../src/3rdparty/sqlite/where.c ++ } + } + + REQUIRES = sql diff --git a/SOURCES/qt-x11-free-3.3.8b-system-zlib-header.patch b/SOURCES/qt-x11-free-3.3.8b-system-zlib-header.patch new file mode 100644 index 0000000..3a03467 --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.8b-system-zlib-header.patch @@ -0,0 +1,12 @@ +diff -ur qt-x11-free-3.3.8b/src/tools/qcstring.cpp qt-x11-free-3.3.8b-system-zlib-header/src/tools/qcstring.cpp +--- qt-x11-free-3.3.8b/src/tools/qcstring.cpp 2008-01-15 20:09:13.000000000 +0100 ++++ qt-x11-free-3.3.8b-system-zlib-header/src/tools/qcstring.cpp 2011-11-04 03:36:21.000000000 +0100 +@@ -53,7 +53,7 @@ + #include + #include + #ifndef QT_NO_COMPRESS +-#include "../3rdparty/zlib/zlib.h" ++#include + #endif + + /***************************************************************************** diff --git a/SOURCES/qt-x11-free-3.3.8b-uic-multilib.patch b/SOURCES/qt-x11-free-3.3.8b-uic-multilib.patch new file mode 100644 index 0000000..341cab7 --- /dev/null +++ b/SOURCES/qt-x11-free-3.3.8b-uic-multilib.patch @@ -0,0 +1,24 @@ +diff -up qt-x11-free-3.3.8b/tools/designer/uic/main.cpp.orig qt-x11-free-3.3.8b/tools/designer/uic/main.cpp +--- qt-x11-free-3.3.8b/tools/designer/uic/main.cpp.orig 2008-01-24 13:25:29.000000000 +0100 ++++ qt-x11-free-3.3.8b/tools/designer/uic/main.cpp 2008-01-24 13:28:17.000000000 +0100 +@@ -320,7 +320,7 @@ int main( int argc, char * argv[] ) + out << "/****************************************************************************" << endl; + out << "** Form "<< (impl? "implementation" : "interface") << " generated from reading ui file '" << fileName << "'" << endl; + out << "**" << endl; +- out << "** Created: " << QDateTime::currentDateTime().toString() << endl; ++ out << "** Created by User Interface Compiler" << endl; + out << "**" << endl; + out << "** WARNING! All changes made in this file will be lost!" << endl; + out << "****************************************************************************/" << endl << endl; +diff -up qt-x11-free-3.3.8b/tools/designer/uic/embed.cpp.orig qt-x11-free-3.3.8b/tools/designer/uic/embed.cpp +--- qt-x11-free-3.3.8b/tools/designer/uic/embed.cpp.orig 2008-01-24 13:28:30.000000000 +0100 ++++ qt-x11-free-3.3.8b/tools/designer/uic/embed.cpp 2008-01-24 13:29:10.000000000 +0100 +@@ -137,7 +137,7 @@ void Uic::embed( QTextStream& out, const + for ( it = images.begin(); it != images.end(); ++it ) + out << "** " << *it << "\n"; + out << "**\n"; +- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n"; ++ out << "** Created by The User Interface Compiler" << "\n"; + out << "**\n"; + out << "** WARNING! All changes made in this file will be lost!\n"; + out << "****************************************************************************/\n"; diff --git a/SOURCES/qt-x11-immodule-unified-qt3.3.5-20051012-quiet.patch b/SOURCES/qt-x11-immodule-unified-qt3.3.5-20051012-quiet.patch new file mode 100644 index 0000000..5e5d977 --- /dev/null +++ b/SOURCES/qt-x11-immodule-unified-qt3.3.5-20051012-quiet.patch @@ -0,0 +1,134 @@ +diff -Nur qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp 2005-10-13 16:09:36.000000000 +0200 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp 2005-10-13 16:09:31.000000000 +0200 +@@ -306,8 +306,8 @@ + + currentIMKey = key; + +- qDebug( "QMultiInputContext::changeInputMethod(): index=%d, slave=%s", +- imIndex, (const char *)_slave->identifierName() ); ++ /* qDebug( "QMultiInputContext::changeInputMethod(): index=%d, slave=%s", ++ imIndex, (const char *)_slave->identifierName() ); */ + } + } + +diff -Nur qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp qt-x11-free-3.3.5/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp +--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp 2005-10-13 16:09:36.000000000 +0200 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp 2005-10-13 16:09:31.000000000 +0200 +@@ -140,7 +140,7 @@ + // only one character. See description of + // QInputContext::filterEvent() about key compression. + val = text[0].unicode(); +- qDebug( "str = %s", (const char*)keyevent->text().local8Bit() ); ++ // qDebug( "str = %s", (const char*)keyevent->text().local8Bit() ); + } + + // Store value +@@ -164,14 +164,14 @@ + + void QSimpleInputContext::setFocus() + { +- qDebug( "QSimpleInputContext: %p->setFocus(), focusWidget()=%p", +- this, focusWidget() ); ++ /* qDebug( "QSimpleInputContext: %p->setFocus(), focusWidget()=%p", ++ this, focusWidget() ); */ + } + + void QSimpleInputContext::unsetFocus() + { +- qDebug( "QSimpleInputContext: %p->unsetFocus(), focusWidget()=%p", +- this, focusWidget() ); ++ /* qDebug( "QSimpleInputContext: %p->unsetFocus(), focusWidget()=%p", ++ this, focusWidget() ); */ + reset(); + } + +@@ -188,8 +188,8 @@ + case QEvent::MouseButtonRelease: + case QEvent::MouseButtonDblClick: + case QEvent::MouseMove: +- qDebug( "QSimpleInputContext::mouseHandler: " +- "x=%d, type=%d, button=%d, state=%d", x, type, button, state ); ++ /* qDebug( "QSimpleInputContext::mouseHandler: " ++ "x=%d, type=%d, button=%d, state=%d", x, type, button, state ); */ + break; + default: + break; +@@ -240,7 +240,7 @@ + + // no entries were found + if ( p == composeTable->data + composeTable->size ) { +- qDebug( "no match" ); ++ // qDebug( "no match" ); + clearComposeBuffer(); + return FALSE; + } +@@ -250,18 +250,18 @@ + + // check if partial match + if ( composeBuffer[i] == 0 && p->keys[i] ) { +- qDebug("partial match"); ++ // qDebug("partial match"); + return TRUE; + } + + if ( composeBuffer[i] != p->keys[i] ) { +- qDebug("different entry"); ++ // qDebug("different entry"); + clearComposeBuffer(); + return i!=0; + } + } + +- qDebug("match exactly"); ++ // qDebug("match exactly"); + + // match exactly + commitChar( p->value ); +diff -Nur qt-x11-free-3.3.5.orig/src/kernel/qinputcontext.cpp qt-x11-free-3.3.5/src/kernel/qinputcontext.cpp +--- qt-x11-free-3.3.5.orig/src/kernel/qinputcontext.cpp 2005-10-13 16:09:37.000000000 +0200 ++++ qt-x11-free-3.3.5/src/kernel/qinputcontext.cpp 2005-10-13 16:09:31.000000000 +0200 +@@ -526,17 +526,17 @@ + return; + + if ( type == QEvent::IMStart ) { +- qDebug( "sending IMStart with %d chars to %p", +- text.length(), receiver ); ++ /* qDebug( "sending IMStart with %d chars to %p", ++ text.length(), receiver ); */ + event = new QIMEvent( type, text, cursorPosition ); + } else if ( type == QEvent::IMEnd ) { +- qDebug( "sending IMEnd with %d chars to %p, text=%s", +- text.length(), receiver, (const char*)text.local8Bit() ); ++ /* qDebug( "sending IMEnd with %d chars to %p, text=%s", ++ text.length(), receiver, (const char*)text.local8Bit() ); */ + event = new QIMEvent( type, text, cursorPosition ); + } else if ( type == QEvent::IMCompose ) { +- qDebug( "sending IMCompose to %p with %d chars, cpos=%d, sellen=%d, text=%s", ++ /* qDebug( "sending IMCompose to %p with %d chars, cpos=%d, sellen=%d, text=%s", + receiver, text.length(), cursorPosition, selLength, +- (const char*)text.local8Bit() ); ++ (const char*)text.local8Bit() ); */ + event = new QIMComposeEvent( type, text, cursorPosition, selLength ); + } + +--- qt-x11-free-3.3.5/plugins/src/inputmethods/xim/qximinputcontext_x11.cpp.quiet 2005-10-13 19:00:56.000000000 +0200 ++++ qt-x11-free-3.3.5/plugins/src/inputmethods/xim/qximinputcontext_x11.cpp 2005-10-25 15:36:43.000000000 +0200 +@@ -356,7 +356,7 @@ + #if !defined(QT_NO_XIM) + fontsetRefCount++; + if (! qt_xim) { +- qWarning("QInputContext: no input method context available"); ++ // qWarning("QInputContext: no input method context available"); + return; + } + +@@ -742,7 +742,7 @@ + + void QXIMInputContext::close( const QString &errMsg ) + { +- qDebug( errMsg ); ++ // qDebug( errMsg ); + emit deletionRequested(); + } + diff --git a/SOURCES/qt.csh b/SOURCES/qt.csh new file mode 100755 index 0000000..93fd941 --- /dev/null +++ b/SOURCES/qt.csh @@ -0,0 +1,33 @@ +# Qt initialization script (csh) + +# In multilib environments there is a preferred architecture, 64 bit over 32 bit in x86_64, +# 32 bit over 64 bit in ppc64. When a conflict is found between two packages corresponding +# with different arches, the installed file is the one from the preferred arch. This is +# very common for executables in /usr/bin, for example. If the file /usr/bin/foo is found +# in an x86_64 package and in an i386 package, the executable from x86_64 will be installe + +if ( $?QTDIR ) then + exit +endif + +switch (`uname -m`) + case x86_64: + case ia64: + case s390x: + set QTPREFIXES = "/usr/lib64/qt-3.3 /usr/lib/qt-3.3" + breaksw + case *: + set QTPREFIXES = "/usr/lib/qt-3.3 /usr/lib64/qt-3.3" +endsw + +foreach QTPREFIX ( $QTPREFIXES ) + test -d "$QTPREFIX" && setenv QTDIR $QTPREFIX && break +end +unset QTPREFIX QTPREFIXES + +if ( "${path}" !~ *$QTDIR/bin* ) then + set path = ( $QTDIR/bin $path ) +endif + +setenv QTINC $QTDIR/include +setenv QTLIB $QTDIR/lib diff --git a/SOURCES/qt.sh b/SOURCES/qt.sh new file mode 100755 index 0000000..4b298f5 --- /dev/null +++ b/SOURCES/qt.sh @@ -0,0 +1,32 @@ +# Qt initialization script (sh) + +# In multilib environments there is a preferred architecture, 64 bit over 32 bit in x86_64, +# ppc64. When a conflict is found between two packages corresponding with different arches, +# the installed file is the one from the preferred arch. This is very common for executables +# in /usr/bin, for example. If the file /usr/bin/foo is found in an x86_64 package and in +# an i386 package, the executable from x86_64 will be installe + +if [ -z "${QTDIR}" ]; then + +case `uname -m` in + x86_64 | ia64 | s390x | ppc64) + QT_PREFIXES="/usr/lib64/qt-3.3 /usr/lib/qt-3.3" ;; + * ) + QT_PREFIXES="/usr/lib/qt-3.3 /usr/lib64/qt-3.3" ;; +esac + +for QTDIR in ${QT_PREFIXES} ; do + test -d "${QTDIR}" && break +done +unset QT_PREFIXES + +if ! echo ${PATH} | /bin/grep -q $QTDIR/bin ; then + PATH=$QTDIR/bin:${PATH} +fi + +QTINC="$QTDIR/include" +QTLIB="$QTDIR/lib" + +export QTDIR QTINC QTLIB PATH + +fi diff --git a/SOURCES/qtconfig3.desktop b/SOURCES/qtconfig3.desktop new file mode 100644 index 0000000..e36dd91 --- /dev/null +++ b/SOURCES/qtconfig3.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=Qt3 Config +Comment=Configure Qt3 behavior, styles, fonts +Exec=qtconfig +Icon=qtconfig3 +Terminal=false +Type=Application +Categories=Qt;Settings; diff --git a/SOURCES/qtrc b/SOURCES/qtrc new file mode 100644 index 0000000..85e80cd --- /dev/null +++ b/SOURCES/qtrc @@ -0,0 +1,6 @@ +[3.3] +libraryPath=@@QTDIR@@/plugins:@@KDE3_PLUGIN_PATH@@ + +[General] +font=Sans,10,-1,0,50,0,0,0,0,0 +style=Platinum diff --git a/SPECS/qt3.spec b/SPECS/qt3.spec new file mode 100644 index 0000000..c0fe835 --- /dev/null +++ b/SPECS/qt3.spec @@ -0,0 +1,1924 @@ +%define _default_patch_fuzz 2 + +Name: qt3 +Summary: The shared library for the Qt 3 GUI toolkit +Version: 3.3.8b +Release: 51%{?dist} +License: QPL or GPLv2 or GPLv3 +Group: System Environment/Libraries +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +Url: http://www.troll.no +Source0: ftp://ftp.trolltech.com/qt/source/qt-x11-free-%{version}.tar.gz +Source2: qt.sh +Source3: qt.csh +Source4: designer3.desktop +Source5: assistant3.desktop +Source6: linguist3.desktop +Source7: qtconfig3.desktop + +Patch1: qt-3.3.4-print-CJK.patch +Patch2: qt-3.0.5-nodebug.patch +Patch3: qt-3.1.0-makefile.patch +Patch4: qt-x11-free-3.3.7-umask.patch +Patch5: qt-x11-free-3.3.6-strip.patch +Patch7: qt-x11-free-3.3.2-quiet.patch +Patch8: qt-x11-free-3.3.3-qembed.patch +Patch12: qt-uic-nostdlib.patch +Patch13: qt-x11-free-3.3.6-qfontdatabase_x11.patch +Patch14: qt-x11-free-3.3.3-gl.patch +Patch19: qt-3.3.3-gtkstyle.patch +Patch20: qt-x11-free-3.3.8b-gcc4-buildkey.patch +Patch24: qt-x11-free-3.3.5-uic.patch +Patch25: qt-x11-free-3.3.8b-uic-multilib.patch +Patch27: qt-3.3.6-fontrendering-ml_IN-209097.patch +Patch29: qt-3.3.8-fontrendering-as_IN-209972.patch +Patch31: qt-3.3.6-fontrendering-te_IN-211259.patch +Patch32: qt-3.3.6-fontrendering-214371.patch +Patch33: qt-3.3.8-fontrendering-#214570.patch +Patch34: qt-3.3.6-fontrendering-ml_IN-209974.patch +Patch35: qt-3.3.6-fontrendering-ml_IN-217657.patch +Patch37: qt-3.3.6-fontrendering-gu-228452.patch +Patch38: qt-x11-free-3.3.8-odbc.patch +Patch39: qt-x11-free-3.3.7-arm.patch +# See http://bugzilla.redhat.com/549820 +# Try to set some sane defaults, for style, fonts, plugin path +# FIXME: style doesn't work. use kde3 plastik, if available +Patch40: qt-x11-free-3.3.8b-sane_defaults.patch +# and/or just use qtrc to do the same thing +Source10: qtrc +# add missing #include to make gcc-4.6 happier +Patch41: qt-x11-free-3.3.8b-cstddef.patch +# fix aliasing issue in qlocale.cpp +Patch42: qt-x11-free-3.3.8b-qlocale-aliasing.patch +# use the system SQLite 2 (Debian's 91_system_sqlite.diff) +Patch43: qt-x11-free-3.3.8b-system-sqlite2.patch +# silence compiler warning in qimage.h by adding parentheses +Patch44: qt-x11-free-3.3.8b-qimage-parentheses.patch +# fix the include path for zlib.h in qcstring.cpp to pick up the system version +Patch45: qt-x11-free-3.3.8b-system-zlib-header.patch +# fix FTBFS with libpng 1.5 (patch from NetBSD) +Patch46: qt-3.3.8-libpng15.patch + +# immodule patches +Patch50: qt-x11-immodule-unified-qt3.3.8-20071116.diff.bz2 +Patch51: qt-x11-immodule-unified-qt3.3.5-20051012-quiet.patch +Patch52: qt-x11-free-3.3.8b-fix-key-release-event-with-imm.diff +Patch53: qt-x11-free-3.3.6-qt-x11-immodule-unified-qt3.3.5-20060318-resetinputcontext.patch + +# qt-copy patches +Patch100: 0038-dragobject-dont-prefer-unknown.patch +Patch101: 0047-fix-kmenu-width.diff +Patch102: 0048-qclipboard_hack_80072.patch +Patch103: 0056-khotkeys_input_84434.patch +Patch105: 0073-xinerama-aware-qpopup.patch +Patch107: 0079-compositing-types.patch +Patch108: 0080-net-wm-sync-request-2.patch +Patch110: 0084-compositing-properties.patch + +# upstream patches +Patch200: qt-x11-free-3.3.4-fullscreen.patch +Patch201: qt-x11-free-3.3.8b-gcc43.patch + +%define qt_dirname qt-3.3 +%define qtdir %{_libdir}/%{qt_dirname} +%define qt_docdir %{_docdir}/qt-devel-%{version} + +%define smp 1 +%define immodule 1 +%define debug 0 + +# MySQL plugins +%define plugin_mysql -plugin-sql-mysql +%define mysql_include_dir %{_includedir}/mysql +%define mysql_lib_dir %{_libdir}/mysql + +# Postgres plugins +%define plugin_psql -plugin-sql-psql + +# ODBC plugins +%define plugin_odbc -plugin-sql-odbc + +# sqlite plugins +%if 0%{?rhel} < 7 +%define plugin_sqlite -plugin-sql-sqlite +%else +%define plugin_sqlite %{nil} +%endif + +%define plugins_style -qt-style-cde -qt-style-motifplus -qt-style-platinum -qt-style-sgi -qt-style-windows -qt-style-compact -qt-imgfmt-png -qt-imgfmt-jpeg -qt-imgfmt-mng +%define plugins %{plugin_mysql} %{plugin_psql} %{plugin_odbc} %{plugin_sqlite} %{plugins_style} + +# not sure what this is for anymore? -- rex +Requires: coreutils + +BuildRequires: desktop-file-utils +BuildRequires: libmng-devel +BuildRequires: glibc-devel +BuildRequires: libjpeg-devel +BuildRequires: libpng-devel +BuildRequires: zlib-devel +BuildRequires: giflib-devel +BuildRequires: perl +BuildRequires: sed +BuildRequires: findutils +BuildRequires: cups-devel +BuildRequires: tar +BuildRequires: freetype-devel +BuildRequires: fontconfig-devel +BuildRequires: libXrender-devel +BuildRequires: libXrandr-devel +BuildRequires: libXcursor-devel +BuildRequires: libXinerama-devel +BuildRequires: libXft-devel +BuildRequires: libXext-devel +BuildRequires: libX11-devel +BuildRequires: libSM-devel +BuildRequires: libICE-devel +BuildRequires: libXt-devel +BuildRequires: libXmu-devel +BuildRequires: libXi-devel +BuildRequires: xorg-x11-proto-devel +BuildRequires: mesa-libGL-devel +BuildRequires: mesa-libGLU-devel +BuildRequires: desktop-file-utils +BuildRequires: mysql-devel +BuildRequires: postgresql-devel +BuildRequires: unixODBC-devel +%if 0%{?rhel} < 7 +BuildRequires: sqlite2-devel +%endif + +%package config +Summary: Graphical configuration tool for programs using Qt 3 +Group: User Interface/Desktops +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} + + +%package devel +Summary: Development files for the Qt 3 GUI toolkit +Group: Development/Libraries +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: freetype-devel +Requires: fontconfig-devel +Requires: libXrender-devel +Requires: libXrandr-devel +Requires: libXcursor-devel +Requires: libXinerama-devel +Requires: libXft-devel +Requires: libXext-devel +Requires: libX11-devel +Requires: libSM-devel +Requires: libICE-devel +Requires: libXt-devel +Requires: xorg-x11-proto-devel +Requires: libpng-devel +Requires: libjpeg-devel +Requires: libmng-devel +Requires: mesa-libGL-devel +Requires: mesa-libGLU-devel + +%package devel-docs +Summary: Documentation for the Qt 3 GUI toolkit +Group: Development/Libraries +Requires: %{name}-devel = %{?epoch:%{epoch}:}%{version}-%{release} + +%package ODBC +Summary: ODBC drivers for Qt 3's SQL classes +Group: System Environment/Libraries +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} + +%package MySQL +Summary: MySQL drivers for Qt 3's SQL classes +Group: System Environment/Libraries +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} + +%package PostgreSQL +Summary: PostgreSQL drivers for Qt 3's SQL classes +Group: System Environment/Libraries +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} + +%package sqlite +Summary: sqlite drivers for Qt 3's SQL classes +Group: System Environment/Libraries +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} + +%package designer +Summary: Interface designer (IDE) for the Qt 3 toolkit +Group: Development/Tools +Requires: %{name}-devel = %{?epoch:%{epoch}:}%{version}-%{release} + +%description +Qt is a GUI software toolkit which simplifies the task of writing and +maintaining GUI (Graphical User Interface) applications +for the X Window System. + +Qt is written in C++ and is fully object-oriented. + +This package contains the shared library needed to run Qt 3 +applications, as well as the README files for Qt 3. + + +%description config +Qt is a GUI software toolkit which simplifies the task of writing and +maintaining GUI (Graphical User Interface) applications +for the X Window System. + +Qt is written in C++ and is fully object-oriented. + +This package contains a graphical configuration tool for programs using Qt 3. + + +%description devel +The %{name}-devel package contains the files necessary to develop +applications using the Qt GUI toolkit: the header files, the Qt meta +object compiler. + +Install %{name}-devel if you want to develop GUI applications using the Qt 3 +toolkit. + + +%description devel-docs +The %{name}-devel-docs package contains the man pages, the HTML documentation and +example programs for Qt 3. + + +%description ODBC +ODBC driver for Qt 3's SQL classes (QSQL) + + +%description MySQL +MySQL driver for Qt 3's SQL classes (QSQL) + + +%description PostgreSQL +PostgreSQL driver for Qt 3's SQL classes (QSQL) + + +%description sqlite +sqlite driver for Qt 3's SQL classes (QSQL) + + +%description designer +The %{name}-designer package contains an User Interface designer tool +for the Qt 3 toolkit. + + +%prep +%setup -q -n qt-x11-free-%{version} +%patch1 -p1 -b .cjk +%patch2 -p1 -b .ndebug +%patch3 -p1 -b .makefile +%patch4 -p1 -b .umask +%patch5 -p1 -b .strip +# drop backup file(s), else they get installed too, http://bugzilla.redhat.com/639459 +rm -fv mkspecs/linux-g++*/qmake.conf.strip +%patch7 -p1 -b .quiet +%patch8 -p1 -b .qembed +%patch12 -p1 -b .nostdlib +%patch13 -p1 -b .fonts +%patch14 -p1 -b .gl +%patch19 -p1 -b .gtk +%patch20 -p1 -b .gcc4-buildkey +%patch24 -p1 -b .uic +%patch25 -p1 -b .uic-multilib +%patch27 -p1 -b .fontrendering-ml_IN-bz#209097 +%patch29 -p1 -b .fontrendering-as_IN-bz#209972 +%patch31 -p1 -b .fontrendering-te_IN-bz#211259 +%patch32 -p1 -b .fontrendering-bz#214371 +%patch33 -p1 -b .fontrendering-#214570 +%patch34 -p1 -b .fontrendering-#209974 +%patch35 -p1 -b .fontrendering-ml_IN-217657 +%patch37 -p1 -b .fontrendering-gu-228452 +%patch38 -p1 -b .odbc +# it's not 100% clear to me if this is safe for all archs -- Rex +%ifarch %{arm} +%patch39 -p1 -b .arm +%endif +%patch40 -p1 -b .sane_defaults +sed -i.KDE3_PLUGIN_PATH \ + -e "s|@@KDE3_PLUGIN_PATH@@|%{_libdir}/kde3/plugins|" \ + src/kernel/qapplication.cpp +%patch41 -p1 -b .cstddef +%patch42 -p1 -b .qlocale-aliasing +%patch43 -p1 -b .system-sqlite2 +%patch44 -p1 -b .qimage-parentheses +%patch45 -p1 -b .system-zlib-header +%if 0%{?fedora} > 16 || 0%{?rhel} > 6 +# This patch works ONLY with libpng >= 1.5. +%patch46 -p0 -b .libpng15 +%endif + +# immodule patches +%if %{immodule} +%patch50 -p1 +%patch51 -p1 -b .quiet +%patch52 -p1 -b .fix-key-release-event-with-imm +%patch53 -p1 -b .resetinputcontext +%endif + +# qt-copy patches +%patch100 -p0 -b .0038-dragobject-dont-prefer-unknown +%patch101 -p0 -b .0047-fix-kmenu-width +%patch102 -p0 -b .0048-qclipboard_hack_80072 +%patch103 -p0 -b .0056-khotkeys_input_84434 +%patch105 -p0 -b .0073-xinerama-aware-qpopup +%patch107 -p0 -b .0079-compositing-types +%patch108 -p0 -b .0080-net-wm-sync-request +%patch110 -p0 -b .0084-compositing-properties + +# upstream patches +%patch200 -p1 -b .fullscreen +%patch201 -p1 -b .gcc34 + +# convert to UTF-8 +iconv -f iso-8859-1 -t utf-8 < doc/man/man3/qdial.3qt > doc/man/man3/qdial.3qt_ +mv doc/man/man3/qdial.3qt_ doc/man/man3/qdial.3qt + +# get rid of bundled libraries to ensure they won't be used +rm -rf src/3rdparty/{lib*,sqlite,zlib} + +%build +export QTDIR=`/bin/pwd` +export LD_LIBRARY_PATH="$QTDIR/lib:$LD_LIBRARY_PATH" +export PATH="$QTDIR/bin:$PATH" +export QTDEST=%{qtdir} + +%if %{smp} + export SMP_MFLAGS="%{?_smp_mflags}" +%endif + +%if %{immodule} + sh ./make-symlinks.sh +%endif + +# set correct X11 prefix +perl -pi -e "s,QMAKE_LIBDIR_X11.*,QMAKE_LIBDIR_X11\t=," mkspecs/*/qmake.conf +perl -pi -e "s,QMAKE_INCDIR_X11.*,QMAKE_INCDIR_X11\t=," mkspecs/*/qmake.conf +perl -pi -e "s,QMAKE_INCDIR_OPENGL.*,QMAKE_INCDIR_OPENGL\t=," mkspecs/*/qmake.conf +perl -pi -e "s,QMAKE_LIBDIR_OPENGL.*,QMAKE_LIBDIR_OPENGL\t=," mkspecs/*/qmake.conf + +# don't use rpath +perl -pi -e "s|-Wl,-rpath,| |" mkspecs/*/qmake.conf + +perl -pi -e "s|-O2|$INCLUDES %{optflags} -fno-strict-aliasing|g" mkspecs/*/qmake.conf + +# set correct lib path +if [ "%{_lib}" == "lib64" ] ; then + perl -pi -e "s,/usr/lib /lib,/usr/%{_lib} /%{_lib},g" config.tests/{unix,x11}/*.test + perl -pi -e "s,/lib /usr/lib,/%{_lib} /usr/%{_lib},g" config.tests/{unix,x11}/*.test +fi + +# build shared, threaded (default) libraries +echo yes | ./configure \ + -prefix $QTDEST \ + -docdir %{qt_docdir} \ +%if %{_lib} == lib64 + -platform linux-g++-64 \ +%else + -platform linux-g++ \ +%endif +%if %{debug} + -debug \ +%else + -release \ +%endif + -shared \ + -largefile \ + -qt-gif \ + -system-zlib \ + -system-libpng \ + -system-libmng \ + -system-libjpeg \ + -no-exceptions \ + -enable-styles \ + -enable-tools \ + -enable-kernel \ + -enable-widgets \ + -enable-dialogs \ + -enable-iconview \ + -enable-workspace \ + -enable-network \ + -enable-canvas \ + -enable-table \ + -enable-xml \ + -enable-opengl \ + -enable-sql \ + -qt-style-motif \ + %{plugins} \ + -stl \ + -thread \ + -cups \ + -sm \ + -xinerama \ + -xrender \ + -xkb \ + -ipv6 \ + -dlopen-opengl \ + -xft \ + -tablet + +make $SMP_MFLAGS src-qmake + +%if 0%{?rhel} < 7 +# build sqlite plugin +pushd plugins/src/sqldrivers/sqlite +qmake -o Makefile sqlite.pro +popd +%endif + +# build psql plugin +pushd plugins/src/sqldrivers/psql +qmake -o Makefile "INCLUDEPATH+=%{_includedir}/pgsql %{_includedir}/pgsql/server %{_includedir}/pgsql/internal" "LIBS+=-lpq" psql.pro +popd + +# build mysql plugin +pushd plugins/src/sqldrivers/mysql +qmake -o Makefile "INCLUDEPATH+=%{mysql_include_dir}" "LIBS+=-L%{mysql_lib_dir} -lmysqlclient" mysql.pro +popd + +# build odbc plugin +pushd plugins/src/sqldrivers/odbc +qmake -o Makefile "LIBS+=-lodbc" odbc.pro +popd + +make $SMP_MFLAGS src-moc +make $SMP_MFLAGS sub-src +make $SMP_MFLAGS sub-tools UIC="$QTDIR/bin/uic -nostdlib -L $QTDIR/plugins" + +%install +rm -rf %{buildroot} + +export QTDIR=`/bin/pwd` +export LD_LIBRARY_PATH="$QTDIR/lib:$LD_LIBRARY_PATH" +export PATH="$QTDIR/bin:$PATH" +export QTDEST=%{qtdir} + +make install INSTALL_ROOT=%{buildroot} + +install -m644 -D %{SOURCE10} %{buildroot}%{qtdir}/etc/settings/qtrc +sed -i \ + -e "s|@@QTDIR@@|%{qtdir}|" \ + -e "s|@@KDE3_PLUGIN_PATH@@|%{_libdir}/kde3/plugins|" \ + %{buildroot}%{qtdir}/etc/settings/qtrc + +for i in findtr qt20fix qtrename140 lrelease lupdate ; do + install bin/$i %{buildroot}%{qtdir}/bin/ +done + +mkdir -p %{buildroot}%{_libdir}/pkgconfig/ +mv %{buildroot}%{qtdir}/lib/pkgconfig/*.pc %{buildroot}%{_libdir}/pkgconfig/ + +# install man pages +mkdir -p %{buildroot}%{_mandir} +cp -fR doc/man/* %{buildroot}%{_mandir}/ + +# clean up +make -C tutorial clean +make -C examples clean + +# Make sure the examples can be built outside the source tree. +# Our binaries fulfill all requirements, so... +perl -pi -e "s,^DEPENDPATH.*,,g;s,^REQUIRES.*,,g" `find examples -name "*.pro"` + +# don't include Makefiles of qt examples/tutorials +find examples -name "Makefile" | xargs rm -f +find examples -name "*.obj" | xargs rm -rf +find examples -name "*.moc" | xargs rm -rf +find tutorial -name "Makefile" | xargs rm -f + +for a in */*/Makefile ; do + sed 's|^SYSCONF_MOC.*|SYSCONF_MOC = %{qtdir}/bin/moc|' < $a > ${a}.2 + mv -v ${a}.2 $a +done + +mkdir -p %{buildroot}/etc/profile.d +install -m 644 %{SOURCE2} %{SOURCE3} %{buildroot}/etc/profile.d/ + +# Add desktop files +mkdir -p %{buildroot}%{_datadir}/applications +desktop-file-install \ + --dir %{buildroot}%{_datadir}/applications \ + --vendor="qt" \ + %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7} + +# Patch qmake to use qt-mt unconditionally +perl -pi -e "s,-lqt ,-lqt-mt ,g;s,-lqt$,-lqt-mt,g" %{buildroot}%{qtdir}/mkspecs/*/qmake.conf + +# remove broken links +rm -f %{buildroot}%{qtdir}/mkspecs/default/linux-g++* +rm -f %{buildroot}%{qtdir}/lib/*.la + +mkdir -p %{buildroot}/etc/ld.so.conf.d +echo "%{qtdir}/lib" > %{buildroot}/etc/ld.so.conf.d/qt-%{_arch}.conf + +# install icons +mkdir %{buildroot}%{_datadir}/pixmaps +install -m 644 tools/assistant/images/qt.png %{buildroot}%{_datadir}/pixmaps/qtconfig3.png +install -m 644 tools/assistant/images/designer.png %{buildroot}%{_datadir}/pixmaps/designer3.png +install -m 644 tools/assistant/images/assistant.png %{buildroot}%{_datadir}/pixmaps/assistant3.png +install -m 644 tools/assistant/images/linguist.png %{buildroot}%{_datadir}/pixmaps/linguist3.png + +# own style directory +mkdir -p %{buildroot}%{qtdir}/plugins/styles + + +%clean +rm -rf %{buildroot} + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root,-) +%doc FAQ LICENSE* README* changes* +%dir %{qtdir} +%dir %{qtdir}/bin +%dir %{qtdir}/etc/ +%dir %{qtdir}/etc/settings/ +%dir %{qtdir}/lib +%dir %{qtdir}/plugins +%dir %{qtdir}/plugins/sqldrivers +%dir %{qtdir}/plugins/styles +%config %{qtdir}/etc/settings/qtrc +%{qtdir}/translations/ +%{qtdir}/plugins/designer/ +%if %{immodule} +%{qtdir}/plugins/inputmethods +%endif +%config /etc/profile.d/* +/etc/ld.so.conf.d/* +%{qtdir}/lib/libqui.so.* +%{qtdir}/lib/libqt*.so.* + +%files config +%defattr(-,root,root,-) +%{qtdir}/bin/qtconfig +%{_datadir}/applications/*qtconfig*.desktop +%{_datadir}/pixmaps/qtconfig3.png + +%files devel +%defattr(-,root,root,-) +%{qt_docdir}/ +%{qtdir}/bin/moc +%{qtdir}/bin/uic +%{qtdir}/bin/findtr +%{qtdir}/bin/qt20fix +%{qtdir}/bin/qtrename140 +%{qtdir}/bin/assistant +%{qtdir}/bin/qm2ts +%{qtdir}/bin/qmake +%{qtdir}/bin/qembed +%{qtdir}/bin/linguist +%{qtdir}/bin/lupdate +%{qtdir}/bin/lrelease +%{qtdir}/include +%{qtdir}/mkspecs +%{qtdir}/lib/libqt*.so +%{qtdir}/lib/libqui.so +%{qtdir}/lib/libeditor.a +%{qtdir}/lib/libdesigner*.a +%{qtdir}/lib/libqassistantclient.a +%{qtdir}/lib/*.prl +%{qtdir}/phrasebooks +%{_libdir}/pkgconfig/* +%{_datadir}/applications/*linguist*.desktop +%{_datadir}/applications/*assistant*.desktop +%{_datadir}/pixmaps/linguist3.png +%{_datadir}/pixmaps/assistant3.png + +%files devel-docs +%defattr(-,root,root,-) +%doc examples +%doc tutorial +%{_mandir}/*/* + +%if 0%{?rhel} < 7 +%files sqlite +%defattr(-,root,root,-) +%{qtdir}/plugins/sqldrivers/libqsqlite.so +%endif + +%files ODBC +%defattr(-,root,root,-) +%{qtdir}/plugins/sqldrivers/libqsqlodbc.so + +%files PostgreSQL +%defattr(-,root,root,-) +%{qtdir}/plugins/sqldrivers/libqsqlpsql.so + +%files MySQL +%defattr(-,root,root,-) +%{qtdir}/plugins/sqldrivers/libqsqlmysql.so + +%files designer +%defattr(-,root,root,-) +%{qtdir}/templates +%{qtdir}/bin/designer +%{_datadir}/applications/*designer*.desktop +%{_datadir}/pixmaps/designer3.png + + +%changelog +* Fri Jan 24 2014 Daniel Mach - 3.3.8b-51 +- Mass rebuild 2014-01-24 + +* Wed Jan 15 2014 Honza Horak - 3.3.8b-50 +- Rebuild for mariadb-libs + Related: #1045013 + +* Fri Dec 27 2013 Daniel Mach - 3.3.8b-49 +- Mass rebuild 2013-12-27 + +* Thu Apr 25 2013 Than Ngo - 3.3.8b-48 +- build with -fno-strict-aliasing +- drop deprecated Encoding + +* Thu Feb 14 2013 Fedora Release Engineering - 3.3.8b-47 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Jan 21 2013 Adam Tkac - 3.3.8b-46 +- rebuild due to "jpeg8-ABI" feature drop + +* Wed Oct 24 2012 Rex Dieter 3.3.8b-45 +- rebuild (libjpeg-turbo v8) + +* Tue Oct 09 2012 Than Ngo - 3.3.8b-44 +- fix url + +* Sat Jul 21 2012 Fedora Release Engineering - 3.3.8b-43 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Apr 18 2012 Than Ngo - 3.3.8b-42 +- add rhel condition + +* Sat Jan 14 2012 Fedora Release Engineering - 3.3.8b-41 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Sat Dec 10 2011 Kevin Kofler - 3.3.8b-40 +- fix FTBFS with F17's libpng 1.5 (patch from NetBSD) + +* Tue Dec 06 2011 Adam Jackson - 3.3.8b-39 +- Rebuild for new libpng + +* Thu Dec 01 2011 Than Ngo - 3.3.8b-38 +- add rhel7 condition + +* Fri Nov 04 2011 Kevin Kofler - 3.3.8b-37 +- fix aliasing issue in qlocale.cpp +- build against the system sqlite2-devel (patch from Debian) +- BuildRequires: sqlite2-devel instead of unused sqlite-devel (SQLite 3) +- silence compiler warning in qimage.h by adding parentheses +- fix the include path for zlib.h in qcstring.cpp to pick up the system version + +* Sun Aug 14 2011 Rex Dieter - 3.3.8b-36.1 +- Rebuilt for rpm (#728707) + +* Thu Jul 21 2011 Rex Dieter 3.3.8b-36 +- drop extraneous Requires: + +* Wed Mar 23 2011 Rex Dieter 3.3.8b-35 +- rebuild (mysql) + +* Thu Mar 10 2011 Than Ngo - 3.3.8b-34 +- fix multilib issue on ppc64 + +* Sun Jan 30 2011 Rex Dieter - 3.3.8b-33 +- cstddef patch (for gcc-4.6) + +* Mon Oct 18 2010 Rex Dieter - 3.3.8b-32 +- better fix for omitting patched qmake.conf files (#639459) + +* Mon Oct 04 2010 Than Ngo - 3.3.8b-31 +- fix bz#639459, don't include *.orig files + +* Wed Aug 11 2010 Than Ngo - 3.3.8b-30 +- drop not useful provides/obsoletes, bz#623106 + +* Tue Dec 22 2009 Rex Dieter - 3.3.8b-29 +- sane defaults (#549820) + +* Thu Sep 10 2009 Than Ngo - 3.3.8b-28 +- drop support fedora < 10 + +* Sun Jul 26 2009 Fedora Release Engineering - 3.3.8b-27 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Fri May 15 2009 Rex Dieter - 3.3.8b-26 +- arm patch + +* Thu Apr 16 2009 Rex Dieter - 3.3.8b-25 +- move designer plugins to runtime (#487622) + +* Fri Apr 10 2009 Than Ngo - 3.3.8b-24 +- unneeded executable permissions for profile.d scripts + +* Wed Feb 25 2009 Fedora Release Engineering - 3.3.8b-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Tue Feb 24 2009 Than Ngo - 3.3.8b-22 +- fix build problem against new unixODBC + +* Wed Feb 04 2009 Rex Dieter 3.3.8b-21 +- unowned %%qt_docdir (#483441) + +* Mon Feb 02 2009 Rex Dieter 3.3.8b-20 +- unowned dirs (#483441) + +* Sat Jan 31 2009 Karsten Hopp 3.3.8b-19 +- s390x is 64bit, s390 is 32bit. Fixed in /etc/profile.d/qt.* + +* Thu Jan 22 2009 Rex Dieter 3.3.8b-18 +- respin (mysql) + +* Wed Oct 08 2008 Than Ngo 3.3.8b-17 +- update qt-x11-immodule-unified-qt3 patch + +* Tue Sep 30 2008 Than Ngo 3.3.8b-16 +- mv translations in main package (bz#448761) + +* Sat Sep 20 2008 Kevin Kofler - 3.3.8b-15 +- set _default_patch_fuzz (fixes FTBFS) + +* Mon Jul 07 2008 Rex Dieter - 3.3.8b-14 +- QTDIR isn't set in ppc64 buildroot (#454313) +- /etc/profile.d/qt.sh leaks variable ARCH (#454260) + +* Fri May 23 2008 Than Ngo - 3.3.8b-13 +- fix rh#448027, qt3's PATH not set properly unless qt3-devel is installed + +* Wed Apr 02 2008 Than Ngo - 3.3.8b-12 +- get rid of 0088-fix-xinput-clash.diff, it's fixed in + new xorg-x11-proto-7.3-11 + +* Mon Mar 17 2008 Than Ngo 3.3.8b-11 +- fix obsolete/provides of version/release + +* Thu Mar 13 2008 Kevin Kofler 3.3.8b-10 +- fix %{?epoch:%{epoch}:} idiom not to add a ':' after it + +* Wed Mar 12 2008 Kevin Kofler 3.3.8b-9 +- rename to qt3 on Fedora >= 9 + +* Tue Mar 11 2008 Kevin Kofler 3.3.8b-8 +- prepare for rename to qt3 on Fedora >= 9 (not enabled yet) +- add Provides and Obsoletes everywhere +- update summaries and descriptions +- remove dots at end of Summary tags +- fix non-UTF-8 characters + +* Tue Mar 11 2008 Than Ngo 3.3.8b-7 +- 0088-fix-xinput-clash.diff, fix compile errors with Xmd.h + +* Fri Mar 07 2008 Than Ngo 3.3.8b-6 +- move qt.[c]sh in main package (#221000) + +* Mon Feb 18 2008 Kevin Kofler 3.3.8b-5 +- fix buildkey for GCC 4.3 (#433235) + +* Mon Feb 11 2008 Than Ngo 3.3.8b-4 +- rebuild for GCC 4.3 + +* Thu Jan 24 2008 Than Ngo 3.3.8b-3 +- add LICENSE.GPL2/GPL3 + +* Thu Jan 24 2008 Than Ngo 3.3.8b-2 +- License: GPLv2 or GPLv3 +- merged in 3.3.8b -> drop following patches: + * qt-3.3.6-fontrendering-punjabi-209970.patch + * qt-3.3.6-fontrendering-or_IN-209098.patch + * qt-3.3.6-fontrendering-gu-228451.patch + * qt-font-default-subst.diff + * 0076-fix-qprocess.diff + * 0082-fix-qdatetime-fromstring.diff + * qt-x11-free-3.3.8-bz#243722-mysql.patch + * qt3-CVE-2007-3388.patch + * utf8-bug-qt3-CVE-2007-0242.diff + * qt-3.3.6-bz#292941-CVE-2007-4137.patch + +* Wed Jan 23 2008 Than Ngo 3.3.8b-1 +- update to 3.3.8b, fix License + +* Mon Nov 26 2007 Than Ngo 3.3.8-11 +- add Provides: qt3 = %%version-%%release + +* Wed Nov 7 2007 Stepan Kasal - 3.3.8-10 +- rh#239216, fix a typo in qt-config description + +* Thu Oct 04 2007 Than Ngo - 3.3.8-9 +- rh#309091, qt should provide %%{qtdir}/plugins/styles +- rh#276521, qt-copy patches 0079, 0080, 0082 and 0084 + +* Mon Sep 17 2007 Than Ngo - 3.3.8-8 +- CVE-2007-4137 + +* Wed Aug 29 2007 Than Ngo - 1:3.3.8-7.fc7.1 +- CVE-2007-0242 + +* Tue Aug 28 2007 Than Ngo - 1:3.3.8-7 +- CVE-2007-3388 qt3 format string flaw +- backport to fix #bz243722, bz#244148, Applications using qt-mysql crash if database is + removed before QApplication is destroyed +- cleanup desktop files + +* Mon Apr 23 2007 Than Ngo - 1:3.3.8-5.fc7 +- apply patch to fix fontrendering problem in gu_IN #228451,#228452 + +* Wed Apr 11 2007 Than Ngo - 1:3.3.8-4.fc7 +- adjust qt-3.3.8-fontrendering-as_IN-209972.patch and + qt-3.3.8-fontrendering-#214570.patch for qt-3.3.8 + +* Mon Apr 02 2007 Than Ngo - 1:3.3.8-3.fc7 +- apply patches to fix + Qt UTF-8 overlong sequence decoding vulnerability + QPopupMenu aware of Xinerama + a regression in QProgress::writeToStdin() + +* Tue Mar 27 2007 Than Ngo 1:3.3.8-2.fc7 +- enable tablet support + +* Mon Mar 19 2007 Than Ngo 1:3.3.8-1.fc7 +- update to 3.3.8 + +* Wed Dec 06 2006 Than Ngo - 1:3.3.7-2.fc7 +- Resolves: bz#214371, bn_IN font rendering +- Resolves: bz#217657, ml_IN issue with cursor position +- Resolves: bz#217638, regression bug in qt +- Resolves: bz#209974, Vowel position set properly +- Resolves: bz#214570, Rendering is not fine for 'RA' 09B0 + +* Thu Nov 09 2006 Than Ngo 1:3.3.7-1.fc6 +- update to 3.3.7 +- fix #209097, ml_IN font rendering +- fix #209970, pa font rendering +- fix #209098, or_IN font rendering +- fix #209972, as_IN font rendering +- fix #209975, bn_IN font rendering +- fix #211259, te_IN font rendering +- fix #211436, as_IN font rendering + thanks Sachin Tawniya, LingNing Zhang for the fixes +- move html files to devel +- add sqlite plugin +- fix #189012, qt settings should be readable for other + +* Thu Aug 31 2006 Than Ngo 1:3.3.6-13 +- add missing desktop files + +* Mon Jul 17 2006 Than Ngo 1:3.3.6-12 +- rebuild + +* Wed Jul 12 2006 Jesse Keating - 1:3.3.6-11.1 +- rebuild + +* Mon Jul 10 2006 Than Ngo 1:3.3.6-11 +- apply upstream patches, fix arabic fonts issue, and + problems with missing minimum size when richtext + labels are used + +* Thu Jun 29 2006 Than Ngo 1:3.3.6-10 +- apply patch from Lars, fixes Qt 3.3.6 for Arabic fonts + +* Wed Jun 28 2006 Than Ngo 1:3.3.6-9 +- fix #183302, IM preedit issue in kbabel + +* Mon Jun 26 2006 Than Ngo 1:3.3.6-8 +- rebuilt + +* Thu Jun 08 2006 Than Ngo 1:3.3.6-7 +- fix utf8 issue in changelog +- fix #195410, don't strip binaries/libraries +- fix #156572, keyReleaseEvent issue + +* Mon Jun 05 2006 Than Ngo 1:3.3.6-6 +- qt-devel requires on mesa-libGLU-devel mesa-libGU-devel + +* Tue May 16 2006 Than Ngo 1:3.3.6-5 +- fix #191895, BR libXmu-devel +- disable warnings if debug is off + +* Mon May 15 2006 Than Ngo 1:3.3.6-4 +- fix multilib issue + +* Tue May 09 2006 Than Ngo 1:3.3.6-3 +- add subpackage qt-devel-docs #191099 + +* Thu Apr 13 2006 Than Ngo 1:3.3.6-2 +- fix xorg prefix #188510 + +* Mon Mar 20 2006 Than Ngo 1:3.3.6-1 +- update to 3.3.6 +- adapt qt-x11-immodule-unified-qt3.3.5-20060318 to qt-3.3.6 +- remove set of fixes for the immodule patch, included in qt-x11-immodule-unified-qt3.3.5-20060318 +- remove 0051-qtoolbar_77047.patch, qt-x11-free-3.3.4-assistant_de.patch, + qt-x11-free-3.3.5-warning.patch, included in new upstream + + +* Mon Feb 27 2006 Than Ngo 1:3.3.5-13 +- add set of fixes for the immodule patch, thanks to Dirk Müller + +* Fri Feb 10 2006 Jesse Keating - 1:3.3.5-12.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 1:3.3.5-12.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Tue Jan 17 2006 Than Ngo 1:3.3.5-12 +- add BuildRequires on mesa-libGL-devel + +* Wed Dec 21 2005 Than Ngo 1:3.3.5-11 +- BuildRequires on libXt-devel/xorg-x11-proto-devel + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Sun Nov 13 2005 Than Ngo 1:3.3.5-10 +- workaround for keyboard input action in KHotKeys + +* Tue Nov 08 2005 Than Ngo 1:3.3.5-9 +- fix for modular X + +* Tue Nov 08 2005 Than Ngo 1:3.3.5-8 +- get rid of xorg-x11-devel, fix for modular X + +* Tue Oct 25 2005 Than Ngo 1:3.3.5-7 +- update qt-x11-immodule-unified-qt3.3.5-20051012-quiet.patch + +* Mon Oct 24 2005 Than Ngo 1:3.3.5-6 +- update qt-x11-immodule-unified-qt3.3.5-20051018.diff +- remove unneeded qt-x11-immodule-unified-qt3.3.5-20051012-build.patch + +* Thu Oct 13 2005 Than Ngo 1:3.3.5-5 +- update qt-x11-immodule-unified-qt3.3.5-20051012 +- disable some debug messages +- apply patch to fix build problem with the new immodule patch + +* Tue Sep 27 2005 Than Ngo 1:3.3.5-4 +- apply patch to fix gcc warnings + +* Mon Sep 26 2005 Than Ngo 1:3.3.5-3 +- export QTINC/QTLIB, thanks to Rex Dieter (#169132) + +* Tue Sep 20 2005 Than Ngo 1:3.3.5-2 +- German translation of the Qt Assistent #161558 +- add uic workaround + +* Sun Sep 11 2005 Than Ngo 1:3.3.5-1 +- update to 3.3.5 + +* Mon Aug 22 2005 Than Ngo 1:3.3.4-22 +- apply upstream patch to fix kmail folder selector #166430 + +* Mon Aug 15 2005 Than Ngo 1:3.3.4-21 +- fix gcc4 build problem + +* Wed Aug 10 2005 Than Ngo 1:3.3.4-20 +- apply missing patches + +* Wed Aug 10 2005 Than Ngo 1:3.3.4-19 +- apply patch to fix wrong K menu width, #165510 + +* Mon Aug 01 2005 Than Ngo 1:3.3.4-18 +- add visibility patch + +* Wed Jul 20 2005 Than Ngo 1:3.3.4-17 +- fix German translation of the Qt Assistent #161558 + +* Mon Jun 27 2005 Than Ngo 1:3.3.4-16 +- apply patch to fix Rendering for Punjabii, thanks to Trolltech #156504 + +* Tue May 24 2005 Than Ngo 1:3.3.4-15 +- add better fix for #156977, thanks to trolltech +- apply patch to fix keyReleaseEvent problem #156572 + +* Wed May 18 2005 Than Ngo 1:3.3.4-14 +- apply patch to use ecvt, fcvt (thanks to Jakub) +- fix a bug in printing of postscript #156977 + +* Wed May 18 2005 Than Ngo 1:3.3.4-13 +- rebuild + +* Thu Apr 14 2005 Than Ngo 1:3.3.4-12 +- fix bad symlink #154086 + +* Wed Apr 13 2005 Than Ngo 1:3.3.4-11 +- remove bad symlink #154086 +- built with PostgresSQL 8.0.2 + +* Wed Mar 23 2005 Than Ngo 1:3.3.4-10 +- add GtkStyle patch from Peter Backlund #141125 + +* Fri Mar 04 2005 Than Ngo 1:3.3.4-9 +- fix buildkey issue with gcc-4 + +* Fri Mar 04 2005 Than Ngo 1:3.3.4-8 +- rebuilt against gcc-4.0.0-0.31 + +* Tue Mar 01 2005 Than Ngo 1:3.3.4-7 +- fix build problem with gcc4 + +* Mon Feb 28 2005 Than Ngo 1:3.3.4-6 +- rebuilt against gcc-4 + +* Tue Feb 22 2005 Than Ngo 1:3.3.4-5 +- fix application crash when input methode not available (bug #140658) +- remove .moc/.obj +- add qt-copy patch to fix KDE #80072 + +* Fri Feb 11 2005 Than Ngo 1:3.3.4-4 +- update qt-x11-immodule-unified patch + +* Thu Feb 10 2005 Than Ngo 1:3.3.4-3 +- fix rpm file conflict + +* Wed Feb 02 2005 Than Ngo 1:3.3.4-2 +- remove useless doc files #143949 +- fix build problem if installman is disable #146311 +- add missing html/examples/tutorial symlinks + +* Fri Jan 28 2005 Than Ngo 1:3.3.4-1 +- update to 3.3.4 +- adapt many patches to qt-3.3.4 +- drop qt-x11-free-3.3.0-freetype, qt-x11-free-3.3.3-qmake, qt-x11-free-3.3.1-lib64 + qt-x11-free-3.3.3-qimage, which are included in new upstream + +* Tue Nov 30 2004 Than Ngo 1:3.3.3-16 +- add sql macro + +* Mon Nov 29 2004 Than Ngo 1:3.3.3-15 +- convert qdial.3qt to UTF-8 bug #140946 + +* Tue Nov 23 2004 Than Ngo 1:3.3.3-14 +- add missing lupdate and lrelease #140230 + +* Fri Nov 19 2004 Than Ngo 1:3.3.3-13 +- apply patch to fix qinputcontext + +* Thu Nov 11 2004 Than Ngo 1:3.3.3-12 +- link against MySQL 3 +- fix rpm conflict + +* Wed Nov 10 2004 Than Ngo 1:3.3.3-11 +- apply patch to fix fullscreen problem +- remove html documents duplicate #135696 + +* Tue Nov 02 2004 Than Ngo 1:3.3.3-10 +- rebuilt + +* Tue Nov 02 2004 Than Ngo 1:3.3.3-9 +- remove unused patch +- set XIMInputStyle=On The Spot +- require xorg-x11-devel instead XFree86-devel + +* Thu Oct 14 2004 Than Ngo 1:3.3.3-8 +- don't compress examples/tutorial + +* Thu Oct 07 2004 Than Ngo 1:3.3.3-7 +- fix build problem without qt immodule #134918 + +* Tue Sep 28 2004 Than Ngo 1:3.3.3-6 +- fix font problem, bz #133578 + +* Tue Sep 14 2004 Than Ngo 1:3.3.3-4 +- update new immodule patch +- fix multilib problem #132516 + +* Wed Aug 18 2004 Than Ngo 1:3.3.3-3 +- add patch to fix dlopen issue (#126422) +- add image handling fix + +* Thu Aug 12 2004 Than Ngo 1:3.3.3-2 +- fix qmake broken link (#129723) + +* Wed Aug 11 2004 Than Ngo 1:3.3.3-1 +- update to 3.3.3 release + +* Thu Jul 01 2004 Than Ngo 1:3.3.2-10 +- add immodule for Qt + +* Tue Jun 29 2004 Than Ngo 1:3.3.2-9 +- add sub package config, allow multi lib installation (#126643) + +* Thu Jun 24 2004 Than Ngo 1:3.3.2-8 +- add fontconfig fix for qfontdatabase, #123868 +- fix some buildrequires problem, #125289 +- fix dangling symlink, #125351 +- get rid of backup files + +* Tue Jun 15 2004 Elliot Lee 1:3.3.2-7 +- rebuilt + +* Tue May 25 2004 Than Ngo 1:3.3.2-5 +- add missing qembed tool #124052, #124052 +- get rid of unused trigger +- add qt.conf in ld.so.conf.d -> don't change ld.so.conf #124080 + +* Wed May 12 2004 Than Ngo 1:3.3.2-4 +- backport some qt patches, Symbol font works again + +* Mon May 10 2004 Than Ngo 1:3.3.2-3 +- fixed annoying warning + +* Tue May 04 2004 Than Ngo 1:3.3.2-2 +- fix broken symlink at qt document, bug #121652 + +* Thu Apr 29 2004 Than Ngo 3.3.2-1 +- update to 3.3.2 + +* Thu Apr 22 2004 Than Ngo 3.3.1-1 +- add cvs backport +- fix lib64 issue, #121052 +- fix CJK font display, bug #121017, #120542, thanks to Leon Ho +- compress tutorial/examples + +* Fri Mar 26 2004 Than Ngo 3.3.1-0.8 +- fixed symlinks issue, #117572 + +* Thu Mar 25 2004 Than Ngo 3.3.1-0.7 +- add Trolltech patch, fix dpi setting issue + +* Tue Mar 23 2004 Than Ngo 3.3.1-0.6 +- add 0034-qclipboard_recursion_fix.patch from CVS, #118368 +- add better qt-x11-free-3.3.1-fontdatabase.patch + +* Sun Mar 07 2004 Than Ngo 1:3.3.1-0.5 +- disable smpflags + +* Fri Mar 05 2004 Than Ngo 1:3.3.1-0.4 +- fix font alias + +* Thu Mar 04 2004 Than Ngo 1:3.3.1-0.3 +- add fontdatabase fix from Trolltech + +* Thu Mar 04 2004 Than Ngo 1:3.3.1-0.2 +- fix wrong symlink #117451 + +* Tue Mar 02 2004 Elliot Lee +- rebuilt + +* Mon Mar 01 2004 Than Ngo 3.3.1-0.1 +- update to 3.3.1 + +* Mon Feb 23 2004 Than Ngo 3.3.0-0.4 +- add fix for building with freetype 2.1.7 or newer + +* Tue Feb 17 2004 Than Ngo 3.3.0-0.3 +- enable IPv6 support +- use dlopen, instead of linking with OpenGL libraries directly +- don't install backup files + +* Thu Feb 05 2004 Than Ngo 1:3.3.0-0.2 +- fix fontdatabase +- don't use strip in install script +- fix qt default setting + +* Wed Feb 04 2004 Than Ngo 1:3.3.0-0.1 +- 3.3.0 + +* Fri Jan 30 2004 Than Ngo 1:3.2.3-0.4 +- add mouse patch from CVS, bug #114647 + +* Tue Jan 20 2004 Than Ngo 1:3.2.3-0.3 +- rebuild + +* Tue Dec 2 2003 Than Ngo 1:3.2.3-0.2 +- Added missing prl files, (report from trolltech) +- Fixed description +- include requires XFree86-devel on qt-devel + +* Fri Nov 14 2003 Than Ngo 1:3.2.3-0.1 +- 3.2.3 release + +* Thu Oct 30 2003 Than Ngo 1:3.2.2-0.4 +- fix encoding problem + +* Sat Oct 18 2003 Than Ngo 1:3.2.2-0.3 +- fix encoding problem + +* Fri Oct 17 2003 Than Ngo 1:3.2.2-0.2 +- add font alias patch file, thanks to Leon Ho +- clean up monospace.patch from Leon Ho +- remove some unneeded patch files + +* Thu Oct 16 2003 Than Ngo 1:3.2.2-0.1 +- 3.2.2 release +- remove a patch file, which is included in 3.2.2 + +* Tue Oct 14 2003 Than Ngo 1:3.2.1-1.3 +- remove some unneeded patch files +- don't load XLFDs if XFT2 is used + +* Mon Sep 08 2003 Than Ngo 1:3.2.1-1.2 +- fixed rpm file list + +* Tue Sep 02 2003 Than Ngo 1:3.2.1-1.1 +- fix for the khtml form lineedit bug from CVS + +* Wed Aug 27 2003 Than Ngo 1:3.2.1-1 +- 3.2.1 release + +* Wed Jul 23 2003 Than Ngo 1:3.2.0-1 +- 3.2.0 release + +* Mon Jun 23 2003 Than Ngo 3.2.0b2-0.1 +- 3.2.0b2 +- add missing templates for designer + +* Wed Jun 18 2003 Than Ngo 3.2.0b1-0.2 +- clean up specfile + +* Wed Jun 18 2003 Than Ngo 3.2.0b1-0.1 +- 3.2.0b1 + +* Tue Jun 17 2003 Than Ngo 3.1.2-12 +- rebuilt + +* Tue Jun 17 2003 Than Ngo 3.1.2-10 +- add missing translations + +* Wed Jun 11 2003 Elliot Lee +- rebuilt + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Mon May 19 2003 Than Ngo 3.1.2-7 +- add some patches from KDE CVS qt-copy, thanks to Alexei Podtelezhnikov + +* Mon May 5 2003 Than Ngo 3.1.2-5.1 +- set correct permission config scripts + +* Tue Apr 29 2003 Than Ngo 3.1.2-4 +- fix typo bug in font loader + +* Wed Apr 9 2003 Than Ngo 3.1.2-2 +- add xrandr extension + +* Mon Mar 3 2003 Than Ngo 3.1.2-1 +- 3.1.2 release + +* Mon Feb 17 2003 Elliot Lee 3.1.1-7 +- ppc64 support + +* Wed Jan 29 2003 Than Ngo 3.1.1-6 +- add missing Categories section in qt designer #82920 + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Mon Dec 30 2002 Florian La Roche +- Change qmlined.h to not include an attic header that is also not shipped + with Red Hat Linux. This also fixes building unixODBC, that includes this + header (apparently also without needing it). + +* Thu Dec 19 2002 Than Ngo 3.1.1-3 +- add monospace patch file from Leon Ho (bug #79949) +- add small patch file from Sysoltsev Slawa (bug #79731) + +* Tue Dec 17 2002 Than Ngo 3.1.1-2 +- don't require XFree86, it's not needed + +* Tue Dec 17 2002 Than Ngo 3.1.1-1 +- update to 3.1.1 + +* Thu Nov 28 2002 Than Ngo 3.1.0-1.3 +- don't write Date into created moc files + +* Mon Nov 18 2002 Than Ngo 3.1.0-1.2 +- add missing libs +- remove workaround for ppc + +* Sun Nov 17 2002 Than Ngo 3.1.0-1.1 +- adjust qfontdatabase_x11 for 3.1.0 +- fix lib64 issue +- add workaround to build on ppc + +* Wed Nov 13 2002 Than Ngo 3.1.0-1 +- update to 3.1.0 +- adjust some patch files for 3.1.0 +- clean up specfile +- remove some Xft2 patch files, which are now in 3.1.0 +- add qwidget_x11.cpp.diff from Trolltech +- install qt in %%{_libdir}/qt-3.1 (bug #77706) +- don't use rpath +- enable large file support +- use system Xinerama +- remove unneeded cups patch file +- fix to build against new XFree86 + +* Tue Nov 5 2002 Than Ngo 3.0.5-19 +- examples misconfigured (bug #76083) +- don't include pkg-config (bug #74621) +- fix build problem with new XFree86 + +* Tue Sep 17 2002 Than Ngo 3.0.5-18 +- Fixed binaries symlinks + +* Mon Sep 9 2002 Than Ngo 3.0.5-17hammer +- clean up spec file for 64bit machine + +* Thu Aug 29 2002 Than Ngo 3.0.5-17 +- Fixed rpath issue (bug #69692, #69575) +- Removed dlopen patch +- Added monospace alias patch from Leon Ho (bug #72811) +- Added man pages + +* Sun Aug 25 2002 Than Ngo 3.0.5-16 +- Added missing catagory in qt designer +- Added small gb18030 patch file from Leon Ho + +* Thu Aug 22 2002 Bernhard Rosenkraenzer 3.0.5-15 +- Prereq fileutils (#71500) + +* Tue Aug 20 2002 Bernhard Rosenkraenzer 3.0.5-14 +- Don't link to libstdc++, it isn't used +- Work around s390 compiler bug (fpic/fPIC coexistance) +- Do away with the "Feature Bluecurve already defined" warning message +- Remove qmake cache files from the package + +* Wed Aug 14 2002 Than Ngo 3.0.5-13 +- Added fix to use VT100 graphic characters (bug #71364) +- Added fontdatabase fix from llch@redhat.com (bug #68353) + +* Mon Aug 12 2002 Bernhard Rosenkraenzer [not built] +- Fix default qtrc + +* Mon Aug 12 2002 Bernhard Rosenkraenzer 3.0.5-12 +- Fix CJK Printing (#71123) + +* Sun Aug 11 2002 Bernhard Rosenkraenzer 3.0.5-11 +- Move qtconfig from qt-devel to qt, it's generally useful +- Use -fno-use-cxa-atexit +- Some tweaks to allow building Qt/Embedded with the same spec file +- Apply the GB18030 patch even if xft2 isn't set + +* Fri Aug 9 2002 Than Ngo 3.0.5-10 +- Added XIM patch from llch@redhat.com (bug #70411) + +* Sun Aug 4 2002 Than Ngo 3.0.5-9 +- add a missing patch file (closelock/openlock) + +* Thu Aug 1 2002 Bernhard Rosenkraenzer 3.0.5-8 +- Define QT_INSTALL_PREFIX in qmake + +* Thu Aug 1 2002 Bernhard Rosenkraenzer 3.0.5-7 +- Find correct location of qmake mkspecs even if QTDIR isn't set + +* Thu Jul 25 2002 Than Ngo 3.0.5-6 +- Check file descriptor before closelock +* Thu Jul 25 2002 Than Ngo 3.0.5-5 +- Fixed a bug in openlock + +* Wed Jul 24 2002 Than Ngo 3.0.5-4 +- Tiny tweaks to qt3 patch + +* Tue Jul 23 2002 Owen Taylor +- Tiny fix to qt3.diff to not add '0' as a test character (#68964) + +* Mon Jul 22 2002 Tim Powers 3.0.5-2 +- rebuild using gcc-3.2-0.1 + +* Mon Jul 22 2002 Than Ngo 3.0.5-1 +- 3.0.5 +- Fixed dependencies issue + +* Thu Jul 18 2002 Than Ngo 3.0.4-12 +- Added qt-clipfix from Harald Hoyer (bug #67648) + +* Tue Jul 16 2002 Than Ngo 3.0.4-11 +- get rid of qt resource, it's now in redhat-artworks +- add some define to build for 7.3 + +* Thu Jul 11 2002 Than Ngo 3.0.4-10 +- add missing Buildprequires desktop-file-utils +- add patches for GB18030 (llch@redhat.com) bug #68430 + +* Tue Jul 09 2002 Than Ngo 3.0.4-9 +- add new desktop file for qt designer + +* Fri Jul 5 2002 Jakub Jelinek 3.0.4-8 +- compile libXinerama.a with -fpic in Qt until XFree86 is fixed +- make %%xft2 work even if old Xft headers aren't installed + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Tue Jun 18 2002 Bernhard Rosenkraenzer 3.0.4-6 +- Re-enable Xft2 now that fontconfig is fixed +- Require a version of fontconfig that works +- Use -fPIC rather than -fpic on alpha + +* Tue Jun 18 2002 Bernhard Rosenkraenzer 3.0.4-5 +- Revert to Xft1 for now, Xft2 is too unstable +- Exclude alpha for now to work around binutils bugs + +* Tue Jun 11 2002 Bernhard Rosenkraenzer 3.0.4-4 +- Add (and fix up) fontconfig patch + +* Mon Jun 3 2002 Bernhard Rosenkraenzer 3.0.4-3 +- Remove the glweak patch, it isn't needed after dropping XFree86 3.x + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Sun May 5 2002 Bernhard Rosenkraenzer 3.0.4-1 +- 3.0.4 +- Make SQL plugins optional (buildtime) +- Register with pkgconfig + +* Thu May 02 2002 Than Ngo 3.0.3-12 +- qtdir /usr/lib/qt3 +- build against gcc-3.1-0.26 +- add qt-3.0.3-glweak.patch + +* Wed Apr 17 2002 Bernhard Rosenkraenzer 3.0.3-11 +- qt3-gcc2.96 should be in qt, not qt-devel + +* Mon Apr 15 2002 Bernhard Rosenkraenzer 3.0.3-10 +- Tweaks to allow parallel installations of Qt 3.x (gcc 2.96) and Qt 3.x + (gcc 3.1) +- Fix up debug spewage at Qt designer startup + +* Wed Apr 10 2002 Bernhard Rosenkraenzer 3.0.3-9 +- Spec file fixes + +* Wed Apr 10 2002 Bernhard Rosenkraenzer 3.0.3-8 +- Get rid of non-threaded version, dlopen()'ing threaded code + (like plugins) from non-threaded code is dangerous +- Add some fixes from qt-copy, fixing the ksplash crash some people + have noticed on a first login +- Add translation fixes from CVS +- Patch example .pro files to build outside the Qt source tree (#63023) +- Fix various bugs + +* Thu Apr 04 2002 Leon Ho 3.0.3-7 +- fixes for CJK - qpsprinter +- fixes for CJK - gb18030 + +* Fri Mar 29 2002 Bernhard Rosenkraenzer 3.0.3-6 +- Make sure it builds with both gcc 2.96 and 3.1 + +* Wed Mar 28 2002 Leon Ho 3.0.3-5 +- fixes for CJK - qpsprinter + +* Wed Mar 27 2002 Bernhard Rosenkraenzer 3.0.3-4 +- Add CJK patches + +* Tue Mar 26 2002 Than Ngo 3.0.3-3 +- fix loading kde styles + +* Tue Mar 19 2002 Bernhard Rosenkraenzer 3.0.3-1 +- Update to 3.0.3 final + +* Thu Mar 14 2002 Bernhard Rosenkraenzer 3.0.3-0.cvs20020314.1 +- Update to 3.0.3-pre, required for KDE3 +- force -fPIC usage +- Remove conflict with qt2 < 2.3.2-1, the new qt2 2.3.1 is fixed and qt 2.3.2 + is broken +- Ship the qmake config files (so qmake works for building any 3rd party stuff, + e.g. aethera) + +* Wed Mar 6 2002 Bernhard Rosenkraenzer 3.0.2-2 +- Add some fixes from KDE's qt-copy CVS +- Pluginize image formats + +* Mon Feb 25 2002 Bernhard Rosenkraenzer 3.0.2-1 +- 3.0.2 final + +* Tue Feb 19 2002 Bernhard Rosenkraenzer 3.0.2-0.cvs20020118.3 +- Add GB18030 codec patch, #60034 +- Force-build jpeg support, fixing #59775 and #59795 + +* Sat Jan 26 2002 Bernhard Rosenkraenzer 3.0.2-0.cvs20020118.2 +- Build with CUPS support + +* Fri Jan 18 2002 Bernhard Rosenkraenzer 3.0.2-0.cvs20020118.1 +- Fix up /usr/bin/moc links, they should point to qt3 + +* Mon Jan 14 2002 Bernhard Rosenkraenzer 3.0.2-0.cvs20020114.1 +- Build styles directly into the main library for now, there's too much broken + code out there depending on this ATM. + +* Wed Jan 9 2002 Bernhard Rosenkraenzer 3.0.2-0.cvs20020109.1 +- Stop excluding alpha, gcc has been fixed + +* Tue Jan 8 2002 Bernhard Rosenkraenzer 3.0.2-0.cvs20020108.1 +- Add fixes from CVS; this fixes the "Alt + F1, arrow up, arrow up doesn't work + in KDE" bug + +* Mon Dec 17 2001 Bernhard Rosenkraenzer 3.0.1-2 +- Fix up settings search path +- Add default qtrc allowing to use KDE 3.x Qt plugins +- Make sure QLibrary uses RTLD_GLOBAL when dlopen()ing libraries + +* Thu Dec 13 2001 Bernhard Rosenkraenzer 3.1.0-1 +- Work around gcc bug #57467 + +* Wed Dec 12 2001 Bernhard Rosenkraenzer +- 3.0.1 final + +* Mon Dec 10 2001 Bernhard Rosenkraenzer 3.0.1-0.cvs20011210.1 +- Update to current (needed by KDE 3.x) +- Rebuild with current libstdc++ +- Temporarily disable building on alpha +- Fix build with PostgreSQL 7.2 + +* Mon Nov 26 2001 Bernhard Rosenkraenzer 3.0.0-5 +- Fix up glweak + +* Mon Nov 5 2001 Bernhard Rosenkraenzer 3.0.0-4 +- Give designer, uic, moc, etc. their real names - the qt2 versions + have been renamed in qt2-2.3.2-1. + Conflict with qt2 < 2.3.2-1. + +* Thu Oct 25 2001 Bernhard Rosenkraenzer 3.0.0-3 +- Add symlink /usr/lib/qt-3.0.0 -> /usr/lib/qt3 and set QTDIR to the + symlink, allowing to update to 3.0.1 without breaking rpath'ed binaries + +* Tue Oct 16 2001 Bernhard Rosenkraenzer 3.0.0-1 +- 3.0.0 final +- fix some minor specfile bugs +- Modularize some more (image format plugins) +- Build codecs + +* Tue Sep 18 2001 Bernhard Rosenkraenzer 3.0.0-0.beta5.1 +- beta5 +- Share more code between qt-x11 and qt-embedded builds + +* Wed Aug 29 2001 Bernhard Rosenkraenzer 3.0.0-0.beta4.1 +- beta4 +- build the Motif style directly into Qt rather than as a plugin - Qt should + always have at least one style... +- replace the designer3 symlink with a shell script that sets QTDIR correctly + before launching designer +- Add desktop file for designer + +* Mon Aug 6 2001 Tim Powers 3.0.0-0.beta3.4 +- explicitly include qm2ts, qmake, qtconfig in the devel package file list to avoid dangling symlinks + +* Thu Aug 2 2001 Bernhard Rosenkraenzer 3.0.0-0.beta3.3 +- Try yet another workaround for buildsystem breakages + +* Tue Jul 31 2001 Bernhard Rosenkraenzer +- Add another ugly workaround for build system problems, this should finally + get rid of the dangling symlinks + +* Tue Jul 31 2001 Bernhard Rosenkraenzer 3.0.0-0.beta3.2 +- Rephrase parts of the spec file, hopefully pleasing the build system + +* Sun Jul 29 2001 Bernhard Rosenkraenzer 3.0.0-0.beta3.1 +- beta3 +- Fix dangling symlinks + +* Sun Jun 24 2001 Bernhard Rosenkraenzer 3.0.0-0.beta1.2 +- Fix up QSQL Postgres classes for Postgres 7.1.x +- Fix various bugs: + - QtMultilineEdit and QtTableView should actually compile + - Link libqsqlpsql with libpq + - Don't link the base library with libmysqlclient, linking the MySQL + module with it is sufficient +- Add missing const qualifier +- move the SQL drivers to separate packages to avoid dependencies +- build and install designer plugins - converting glade files to Qt is fun. ;) +- handle RPM_OPT_FLAGS + +* Tue May 22 2001 Bernhard Rosenkraenzer 3.0.0-0.beta1.1 +- 3.0 beta 1 + +* Wed May 16 2001 Bernhard Rosenkraenzer 3.0.0-0.cvs20010516.1 +- Update, remove conflicts with Qt 2.x + +* Mon May 14 2001 Bernhard Rosenkraenzer 3.0.0-0.cvs20010514.1 +- Initial build of 3.0 branch + +* Fri Apr 27 2001 Bernhard Rosenkraenzer 2.3.0-6 +- Fix crashes on ia64, Patch from Bill Nottingham +- Allow building qt-nox + +* Fri Apr 20 2001 Bernhard Rosenkraenzer 2.3.0-5 +- Make sure uic and designer use the libqui from the source tree, not + a previously installed one. + Linking uic-x11 against libqui-embedded is definitely not a feature. ;) +- The qclipboard fix is needed for qt-x11 only, don't apply it if we're + building qt-embedded + +* Sat Apr 14 2001 Bernhard Rosenkraenzer +- Handle LPRng specific constructs in printcap, Bug #35937 + +* Sun Mar 25 2001 Florian La Roche +- add qfont patch from Trolltech + +* Tue Mar 13 2001 Harald Hoyer +- added patch for '@euro' language settings + +* Tue Mar 6 2001 Bernhard Rosenkraenzer +- 2.3.0 final +- BuildRequires XFree86-devel >= 4.0.2 (#30486) + +* Mon Feb 26 2001 Than Ngo +- fix check_env function, so that qt does not crash if QT_XFT is not set +- fix symlinks + +* Mon Feb 26 2001 Bernhard Rosenkraenzer +- 2.3.0b1 +- Add a patch to qpsprinter that handles TrueType fonts even if they come from xfs + +* Tue Feb 13 2001 Preston Brown +- japanese input and clipboard fixes applied. Changes have been sent upstream by patch authors. + +* Fri Feb 9 2001 Bernhard Rosenkraenzer +- Rebuild with new Mesa to get rid of pthreads linkage +- Add Xft fix from KDE CVS + +* Wed Feb 7 2001 Bernhard Rosenkraenzer +- Add printing bugfix patch from Trolltech + +* Sat Feb 3 2001 Bernhard Rosenkraenzer +- 2.2.4 +- Qt Embedded: Add QVfb and VNC support + +* Tue Jan 16 2001 Bernhard Rosenkraenzer +- Don't segfault when running Qt/Embedded applications as root +- Improve the Qt/Embedded sparc patch so we don't need the specfile hacks + anymore +- Fix a bug in QPrintDialog (causing KDE Bug #18608) + +* Thu Jan 11 2001 Bernhard Rosenkraenzer +- bzip2 source to save space +- Qt/Embedded 2.2.3 +- Fix qte build on sparc + +* Wed Dec 20 2000 Bernhard Rosenkraenzer +- Run ldconfig in %%post and %%postun for qt-Xt + +* Sun Dec 17 2000 Bernhard Rosenkraenzer +- Build with the Xrender extension + (Patch from Keith Packard ) + +* Wed Dec 13 2000 Bernhard Rosenkraenzer +- 2.2.3 + +* Tue Dec 12 2000 Bernhard Rosenkraenzer +- Rebuild to fix permissions on doc dir +- Don't exclude ia64 anymore + +* Fri Nov 17 2000 Bernhard Rosenkraenzer +- Fix up uic (Patch from trolltech) + +* Wed Nov 15 2000 Bernhard Rosenkraenzer +- Build qt-embedded + changes to base: fix build, fix ISO C99 compliance, fix 64bit support + +* Mon Nov 13 2000 Bernhard Rosenkraenzer +- 2.2.2 + +* Tue Oct 24 2000 Than Ngo +- call ldconfig for updating (Bug #19687) +- added patch from Trolltech, thanks to Rainer + +* Wed Oct 18 2000 Bernhard Rosenkraenzer +- Add missing msg2qm, msgmerge, qconfig tools (Bug #18997), introduced + by broken Makefiles in base +- fix up %%install so it works both with old-style and new-style fileutils + (fileutils <= 4.0z don't know about -L) + +* Fri Oct 13 2000 Bernhard Rosenkraenzer +- Disable exception handling; this speeds up KDE 2.x and reduces its + memory footprint by 20 MB. + +* Tue Oct 10 2000 Bernhard Rosenkraenzer +- dereference symlinks in include + +* Sun Oct 8 2000 Bernhard Rosenkraenzer +- fix -devel +- update to the new version of 2.2.1 on trolltech.com; the initial tarball + contained broken docs + +* Thu Oct 5 2000 Bernhard Rosenkraenzer +- 2.2.1 + +* Mon Sep 25 2000 Bernhard Rosenkraenzer +- Add missing uic + +* Thu Sep 21 2000 Bernhard Rosenkraenzer +- Move Qt designer to a different source RPM to get rid of a + circular dependency (kdelibs2->qt, qt->kdelibs2) +- Enable MNG support +- Don't compile (just include) examples and tutorials +- move the static libraries to a separate package (qt-static). + They're HUGE, and most people won't ever need them. +- clean up spec file +- fix up dependencies (-devel requires base, -static requires devel, + Xt requires base) +- add BuildRequires line + +* Tue Sep 12 2000 Than Ngo +- update release 2.2.0 +- changed copyright to GPL +- added missing static libraries +- made symbolic link for designer to load the help files correct +- made designer and designer-kde2 as sub packages +- added missing templates for designer +- remove jakub patch, since the release 2.2.0 already + contains this patch. +- fixed qt again to compile with gcc-2.96 +- use make -j for building + +* Wed Aug 23 2000 Bernhard Rosenkraenzer +- Work around compiler bugs (Patch from Jakub) +- Use relative symlinks (Bug #16750) + +* Mon Aug 21 2000 Bernhard Rosenkraenzer +- beta2 + +* Mon Aug 14 2000 Bernhard Rosenkraenzer +- new qt-copy from KDE2 CVS + +* Wed Aug 9 2000 Bernhard Rosenkraenzer +- official beta 1 + +* Thu Aug 3 2000 Than Ngo +- rebuilt against the libpng-1.0.8 + +* Thu Jul 27 2000 Bernhard Rosenkraenzer +- rebuild (so we have it on all arches) + +* Tue Jul 25 2000 Bernhard Rosenkraenzer +- move man pages to a more reasonable place (this fixes Bug #14126) +- exclude ia64 for now (compiler problems!!!) + +* Mon Jul 24 2000 Harald Hoyer +- modified connect patch to fit qt 2.2.0 beta. + +* Thu Jul 20 2000 Bernhard Rosenkraenzer +- update to current qt-copy; this is now a qt 2.2.0 beta. + +* Mon Jul 17 2000 Bernhard Rosenkraenzer +- update to current qt-copy in kde CVS, required + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Sun Jul 11 2000 Harald Hoyer +- made patch smaller and binary compatible when recompiled with 6.2 +- modified connect and moc to cope with the new g++ class layout + +* Sun Jul 09 2000 Than Ngo +- rebuilt qt with gcc-2.96-34 + +* Fri Jul 07 2000 Than Ngo +- rebuilt qt with c++ 2.96 + +* Mon Jul 3 2000 Bernhard Rosenkraenzer +- Fix dependancies + +* Sun Jul 2 2000 Bernhard Rosenkraenzer +- Use egcs++ for now ** FIXME + +* Wed Jun 28 2000 Preston Brown +- fix up qt.sh + +* Sun Jun 25 2000 Bernhard Rosenkraenzer +- Build in jpeg and threading support +- Fix a bug in clipboard pasting code + +* Wed Jun 07 2000 Preston Brown +- fix qt.{sh,csh} +- use new rpm macro paths +- package man pages + +* Fri Jun 2 2000 Bill Nottingham +- build without optimization on ia64 + +* Mon May 29 2000 Bernhard Rosenkraenzer +- 2.1.1 + +* Thu May 18 2000 Florian La Roche +- recompile with correct libstdc++ + +* Thu Apr 13 2000 Bernhard Rosenkraenzer +- 2.1.0 final + +* Wed Apr 5 2000 Bernhard Rosenkraenzer +- beta4 +- depend on libGL.so.1 rather than Mesa - XFree86 4.0 provides that + lib, too + +* Wed Mar 22 2000 Bernhard Rosenkraenzer +- beta3 + +* Tue Mar 7 2000 Bernhard Rosenkraenzer +- beta2 +- fix compilation of the NSPlugin add-on + +* Fri Mar 3 2000 Bill Nottingham +- fix %postun script + +* Fri Feb 18 2000 Bernhard Rosenkränzer +- beta1 +- get rid of qt-ImageIO, the functionality is now in the main Qt library +- remove qt-Network, the functionality is now in the main Qt library +- add changes-2.1.0 to %doc + +* Thu Feb 17 2000 Preston Brown +- no refcount check on postun script, we want it to happen even on upgrades + +* Thu Feb 10 2000 Bernhard Rosenkraenzer +- new snapshot, should fix QWhatsThisButton +- remove executable permissions from *.pro files + +* Mon Feb 07 2000 Preston Brown +- strip binaries in examples, tutorial + +* Mon Jan 31 2000 Bernhard Rosenkraenzer +- new snapshot - should fix the hotkey bug +- Fix up the Makefiles so it compiles + +* Tue Jan 18 2000 Bernhard Rosenkraenzer +- new snapshot - we need those QVariant fixes + +* Thu Jan 13 2000 Bernhard Rosenkraenzer +- switch from glxMesa to Mesa for the GL addon + +* Wed Jan 5 2000 Bernhard Rosenkränzer +- Fix up dependencies +- new snapshot + +* Mon Jan 3 2000 Ngo Than +- new snapshot for Red Hat Linux 6.2 +- increase version number + +* Mon Dec 20 1999 Bernhard Rosenkraenzer +- new snapshot +- handle RPM_OPT_FLAGS + +* Mon Dec 13 1999 Bernhard Rosenkraenzer +- new snapshot +- -GL requires libGL.so.1 instead of Mesa (might as well be glxMesa + or some commercial OpenGL) +- -GL BuildPrereqs /usr/X11R6/include/GL/gl.h instead of Mesa-devel + (might as well be glxMesa or some commercial OpenGL) + +* Sun Dec 05 1999 Bernhard Rosenkraenzer +- update to current RSYNC version +- remove compilation patch - it finally works out of the box + +* Wed Oct 27 1999 Bernhard Rosenkraenzer +- update to current CVS snapshot +- build extensions +- add patch to fix QNetwork compilation + +* Sun Oct 24 1999 Bernhard Rosenkraenzer +- current CVS snapshot +- fix compilation with gcc 2.95.x +- use install -c rather than just install to make BSD install happy + +* Mon Oct 11 1999 Bernhard Rosenkraenzer +- 2.1.0 snapshot (for KDE2) +- Fix typo in spec + +* Thu Sep 23 1999 Preston Brown +- don't ship tutorial or example binaries + +* Tue Sep 21 1999 Preston Brown +- substitution in tutorial and examples so that dependencies are correct and + they can be successfully rebuilt. +- switched to completely using QTDIR. trying to coexist with links into + /usr/{include,lib} and still compile with qt 1.x is very hard for + configure scripts to cope with. + +* Thu Aug 19 1999 Preston Brown +- implemented QTDIR compatibility. + +* Tue Jul 20 1999 Preston Brown +- qt 2.0.1 packaged. + +* Wed Jul 14 1999 Preston Brown +- Qt 2.00 packaged. +- examples, html documentation, tutorial moved to /usr/doc + +* Sat Apr 17 1999 Preston Brown +- static library supplied in dev package. + +* Wed Apr 07 1999 Preston Brown +- turn on internal GIF reading support + +* Tue Apr 06 1999 Preston Brown +- strip binaries + +* Mon Mar 15 1999 Preston Brown +- upgrade to qt 1.44. + +* Wed Feb 24 1999 Preston Brown +- Injected new description and group. + +* Tue Jan 19 1999 Preston Brown +- moved includes to /usr/include/qt + +* Mon Jan 04 1999 Preston Brown +- made setup phase silent. + +* Fri Dec 04 1998 Preston Brown +- upgraded to qt 1.42, released today. + +* Tue Dec 01 1998 Preston Brown +- took Arnts RPM and made some minor changes for Red Hat.