Upgrade to Qt 4:

remove Qt 3 files
copy Qt 4 from qt4/devel
Wed Mar 12 2008 Kevin Kofler <Kevin@tigcc.ticalc.org> 4.3.4-6
- rename to qt on Fedora >= 9
This commit is contained in:
Kevin Kofler 2008-03-12 23:38:15 +00:00
parent ff83e35ad4
commit b1128646fc
62 changed files with 1310 additions and 3937 deletions

View File

@ -1,10 +1,4 @@
qt-x11-free-3.3.3.tar.bz2
qt-x11-immodule-unified-qt3.3.3-20040910.diff.bz2
qt-x11-immodule-unified-qt3.3.4-20041203.diff.bz2
qt-x11-free-3.3.4.tar.bz2
qt-x11-free-3.3.5.tar.bz2
qt-x11-immodule-unified-qt3.3.5-20051012.diff.bz2
qt-x11-immodule-unified-qt3.3.5-20051018.diff.bz2
qt-x11-immodule-unified-qt3.3.7-20061229.diff.bz2
qt-x11-free-3.3.8.tar.bz2
qt-x11-free-3.3.8b.tar.gz
hi128-app-qt4-logo.png
hi48-app-qt4-logo.png
qt-copy-patches-20080305svn.tar.bz2
qt-x11-opensource-src-4.3.4.tar.gz

View File

@ -1,57 +0,0 @@
qt-bugs@ issue : 38642
bugs.kde.org number : 71084
applied: no
author: Lubos Lunak <l.lunak@kde.org>
Hello,
start Mozilla, go e.g. to http://kde.org, start KWrite (or basically any Qt
app that accepts text drops), select 'Conquer your Desktop!', and try to
drag&drop it onto KWrite. The only text pasted should be 'm'.
I don't know much the related mimetype and encoding stuff, so I'm unsure
whose fault this actually is. The text drag is provided as a lot of
text/something targets, to list some text/_moz_htmlinfo, text/x-moz-url,
text/unicode and similar. The problem is, Kate uses QTextDrag::decode() with
no subtype specified, probably with the intention that as Kate is a text
editor, it can accept any text pasted. And since the first target provided by
mozilla is text/x-moz-url, (which moreover seems to be encoded as 16bit
unicode), the text dropped is completely wrong. You can easily see all
targets provided by Mozilla with see_mime.patch applied.
Solution #1: Say that Kate (any pretty much everybody else expecting text)
should say "plain" as the subtype. In such case, I suggest you drop the
QTextDrag::decode() variant with no subtype specified, and stress more the
fact that not specifying a subtype can result in a lot of rubbish. It's
simply too tempting to leave the subtype empty and try to accept anything.
Solution #2: When trying to accept anything, try to get useful data. Which
means either sorting the subtypes available somehow, checking only the ones
Qt knows.
To me, #1 seems to be a better choice, or possibly at least something like
the attached QTextDrag patch, which simply always tries first "plain" subtype
if none is specified. With this patch, Mozilla even works (that's irony, of
course, Mozilla still pastes the text/plain text as HTML, but at least now it
pastes something where it's easy to point at the offender).
--- src/kernel/qdragobject.cpp.sav 2004-01-06 19:24:35.000000000 +0100
+++ src/kernel/qdragobject.cpp 2004-01-06 19:47:01.000000000 +0100
@@ -844,6 +844,16 @@ bool QTextDrag::decode( const QMimeSourc
{
if(!e)
return FALSE;
+
+ // when subtype is not specified, try text/plain first, otherwise this may read
+ // things like text/x-moz-url even though better targets are available
+ if( subtype.isNull()) {
+ QCString subtmp = "plain";
+ if( decode( e, str, subtmp )) {
+ subtype = subtmp;
+ return true;
+ }
+ }
if ( e->cacheType == QMimeSource::Text ) {
str = *e->cache.txt.str;

View File

@ -1,25 +0,0 @@
qt-bugs@ issue: N46882
bugs.kde.org number: 77545
applied: no
author: Stephan Binner <binner@kde.org>
Fix wrong K menu width for the case of enabled side pixmap and a menu title
(like "Recently Used Applications") being longer than every other entry.
Solution: Respect PanelKMenu::setMaximumSize() as up to Qt 3.2.3
Index: src/widgets/qpopupmenu.cpp
===================================================================
RCS file: /home/kde/qt-copy/src/widgets/qpopupmenu.cpp,v
retrieving revision 1.60
diff -u -3 -p -b -r1.60 qpopupmenu.cpp
--- src/widgets/qpopupmenu.cpp 29 Apr 2004 22:31:28 -0000 1.60
+++ src/widgets/qpopupmenu.cpp 30 Apr 2004 01:11:59 -0000
@@ -2531,7 +2531,7 @@ QSize QPopupMenu::sizeHint() const
QPopupMenu* that = (QPopupMenu*) this;
//We do not need a resize here, just the sizeHint..
- return that->updateSize(FALSE, FALSE).expandedTo( QApplication::globalStrut() );
+ return that->updateSize(FALSE).expandedTo( QApplication::globalStrut() );
}

View File

@ -1,48 +0,0 @@
qt-bugs@ issue : none, probably even won't be
bugs.kde.org number : 80072
applied: no
author: Lubos Lunak <l.lunak@kde.org>
A crude hack for KDE #80072. No good idea how to fix it properly yet :(.
--- src/kernel/qclipboard_x11.cpp.sav 2004-04-30 12:00:06.000000000 +0200
+++ src/kernel/qclipboard_x11.cpp 2004-05-09 21:18:10.269264304 +0200
@@ -109,6 +109,7 @@ static int pending_timer_id = 0;
static bool pending_clipboard_changed = FALSE;
static bool pending_selection_changed = FALSE;
+Q_EXPORT bool qt_qclipboard_bailout_hack = false;
// event capture mechanism for qt_xclb_wait_for_event
static bool waiting_for_data = FALSE;
@@ -453,6 +454,15 @@ static int qt_xclb_event_filter(XEvent *
return 0;
}
+static bool selection_request_pending = false;
+
+static Bool check_selection_request_pending( Display*, XEvent* e, XPointer )
+ {
+ if( e->type == SelectionRequest && e->xselectionrequest.owner == owner->winId())
+ selection_request_pending = true;
+ return False;
+ }
+
bool qt_xclb_wait_for_event( Display *dpy, Window win, int type, XEvent *event,
int timeout )
{
@@ -504,6 +514,14 @@ bool qt_xclb_wait_for_event( Display *dp
do {
if ( XCheckTypedWindowEvent(dpy,win,type,event) )
return TRUE;
+ if( qt_qclipboard_bailout_hack ) {
+ XEvent dummy;
+ selection_request_pending = false;
+ if ( owner != NULL )
+ XCheckIfEvent(dpy,&dummy,check_selection_request_pending,NULL);
+ if( selection_request_pending )
+ return TRUE;
+ }
now = QTime::currentTime();
if ( started > now ) // crossed midnight

View File

@ -1,21 +0,0 @@
qt-bugs@ issue : 58251
bugs.kde.org number : 84434
applied: no
author: Lubos Lunak <l.lunak@kde.org>
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);

View File

@ -1,113 +0,0 @@
qt-bugs@ issue : none
bugs.kde.org number : none
applied: no
author: Lubos Lunak <l.lunak@kde.org>
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 );

View File

@ -1,109 +0,0 @@
qt-bugs@ issue : N154454
bugs.kde.org number : none
applied: no
author: Dirk Mueller <mueller@kde.org>
This patch makes the utf8 decoders in Qt reject overlong
sequences, like required.
--- src/codecs/qutfcodec.cpp
+++ src/codecs/qutfcodec.cpp
@@ -154,6 +154,7 @@
class QUtf8Decoder : public QTextDecoder {
uint uc;
+ uint min_uc;
int need;
bool headerDone;
public:
@@ -167,8 +168,9 @@
result.setLength( len ); // worst case
QChar *qch = (QChar *)result.unicode();
uchar ch;
+ int error = -1;
for (int i=0; i<len; i++) {
- ch = *chars++;
+ ch = chars[i];
if (need) {
if ( (ch&0xc0) == 0x80 ) {
uc = (uc << 6) | (ch & 0x3f);
@@ -182,6 +184,8 @@
*qch++ = QChar(high);
*qch++ = QChar(low);
headerDone = TRUE;
+ } else if ((uc < min_uc) || (uc >= 0xd800 && uc <= 0xdfff) || (uc >= 0xfffe)) {
+ *qch++ = QChar::replacement;
} else {
if (headerDone || QChar(uc) != QChar::byteOrderMark)
*qch++ = uc;
@@ -190,6 +194,7 @@
}
} else {
// error
+ i = error;
*qch++ = QChar::replacement;
need = 0;
}
@@ -200,12 +205,21 @@
} else if ((ch & 0xe0) == 0xc0) {
uc = ch & 0x1f;
need = 1;
+ error = i;
+ min_uc = 0x80;
} else if ((ch & 0xf0) == 0xe0) {
uc = ch & 0x0f;
need = 2;
+ error = i;
+ min_uc = 0x800;
} else if ((ch&0xf8) == 0xf0) {
uc = ch & 0x07;
need = 3;
+ error = i;
+ min_uc = 0x10000;
+ } else {
+ // error
+ *qch++ = QChar::replacement;
}
}
}
--- src/tools/qstring.cpp
+++ src/tools/qstring.cpp
@@ -5805,6 +5805,7 @@
result.setLength( len ); // worst case
QChar *qch = (QChar *)result.unicode();
uint uc = 0;
+ uint min_uc = 0;
int need = 0;
int error = -1;
uchar ch;
@@ -5822,6 +5823,12 @@
unsigned short low = uc%0x400 + 0xdc00;
*qch++ = QChar(high);
*qch++ = QChar(low);
+ } else if (uc < min_uc || (uc >= 0xd800 && uc <= 0xdfff) || (uc >= 0xfffe)) {
+ // overlong seqence, UTF16 surrogate or BOM
+ i = error;
+ qch = addOne(qch, result);
+ *qch++ = QChar(0xdbff);
+ *qch++ = QChar(0xde00+((uchar)utf8[i]));
} else {
*qch++ = uc;
}
@@ -5844,14 +5851,17 @@
uc = ch & 0x1f;
need = 1;
error = i;
+ min_uc = 0x80;
} else if ((ch & 0xf0) == 0xe0) {
uc = ch & 0x0f;
need = 2;
error = i;
+ min_uc = 0x800;
} else if ((ch&0xf8) == 0xf0) {
uc = ch & 0x07;
need = 3;
error = i;
+ min_uc = 0x10000;
} else {
// Error
qch = addOne(qch, result);

View File

@ -1,424 +0,0 @@
qt-bugs@ issue : none
bugs.kde.org number : none
applied: no
author: Lubos Lunak <l.lunak@kde.org>
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() );

View File

@ -1,311 +0,0 @@
qt-bugs@ issue : none
bugs.kde.org number : none
applied: no
author: Lubos Lunak <l.lunak@kde.org>
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 <X11/extensions/sync.h>
+#endif // QT_NO_XSYNC
+
+
#ifndef QT_NO_XKB
# include <X11/XKBlib.h>
#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;
}

View File

@ -1,80 +0,0 @@
qt-bugs@ issue : none
bugs.kde.org number : none
applied: no
author: Lubos Lunak <l.lunak@kde.org>
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 ) {

View File

@ -1,55 +0,0 @@
qt-bugs@ issue :
bugs.kde.org number :
applied: no
author: Dirk Mueller <mueller@kde.org>
fix compile errors with newer X.org
--- include/private/qt_x11_p.h
+++ include/private/qt_x11_p.h
@@ -86,7 +86,7 @@
// the wacom tablet (currently just the IRIX version)
-#if defined (QT_TABLET_SUPPORT)
+#if defined (QT_TABLET_SUPPORT) && defined (QT_CLEAN_NAMESPACE)
# include <X11/extensions/XInput.h>
#if defined (Q_OS_IRIX)
# include <wacom.h> // wacom driver defines for IRIX (quite handy)
--- src/kernel/qtaddons_x11.cpp
+++ src/kernel/qtaddons_x11.cpp
@@ -22,6 +22,10 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
+#ifndef QT_CLEAN_NAMESPACE
+#define QT_CLEAN_NAMESPACE
+#endif
+
#include "qt_x11_p.h"
#if !defined(QT_NO_XFTFREETYPE) && !defined(QT_XFT2)
--- src/kernel/qt_x11_p.h
+++ src/kernel/qt_x11_p.h
@@ -86,7 +86,7 @@
// the wacom tablet (currently just the IRIX version)
-#if defined (QT_TABLET_SUPPORT)
+#if defined (QT_TABLET_SUPPORT) && defined (QT_CLEAN_NAMESPACE)
# include <X11/extensions/XInput.h>
#if defined (Q_OS_IRIX)
# include <wacom.h> // wacom driver defines for IRIX (quite handy)
--- src/kernel/qwidget_x11.cpp
+++ src/kernel/qwidget_x11.cpp
@@ -38,6 +38,10 @@
**
**********************************************************************/
+#ifndef QT_CLEAN_NAMESPACE
+#define QT_CLEAN_NAMESPACE
+#endif
+
#include "qapplication.h"
#include "qapplication_p.h"
#include "qnamespace.h"

3
Trolltech.conf Normal file
View File

@ -0,0 +1,3 @@
[Qt]
font="Sans Serif,10,-1,5,50,0,0,0,0,0"

9
assistant.desktop Normal file
View File

@ -0,0 +1,9 @@
[Desktop Entry]
Name=Qt4 Assistant
Comment=Shows Qt4 documentation and examples
Exec=assistant-qt4
Icon=assistant
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;Documentation;

View File

@ -1,9 +0,0 @@
[Desktop Entry]
Name=Qt3 Assistant
Comment=Add translations to Qt3 applications
Exec=assistant
Icon=assistant3
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;

View File

@ -1,9 +1,9 @@
[Desktop Entry]
Name=Qt3 Designer
Name=Qt4 Designer
GenericName=Interface Designer
Comment=Design GUIs for Qt3 applications
Exec=designer
Icon=designer3
Comment=Design GUIs for Qt4 applications
Exec=designer-qt4
Icon=designer
MimeType=application/x-designer;
Terminal=false
Encoding=UTF-8

View File

@ -1,8 +1,8 @@
[Desktop Entry]
Name=Qt3 Linguist
Comment=Add translations to Qt3 applications
Exec=linguist
Icon=linguist3
Name=Qt4 Linguist
Comment=Add translations to Qt4 applications
Exec=linguist-qt4
Icon=linguist4
MimeType=application/x-linguist;
Terminal=false
Encoding=UTF-8

27
qconfig-multilib.h Normal file
View File

@ -0,0 +1,27 @@
/* qconfig.h */
/* This file is here to prevent a file conflict on multiarch systems. A
* conflict will occur because qconfig.h has arch-specific definitions.
*
* DO NOT INCLUDE THE NEW FILE DIRECTLY -- ALWAYS INCLUDE THIS ONE INSTEAD. */
#if defined(__x86_64__)
# include <QtCore/qconfig-x86_64.h>
#elif defined(__i386__)
# include <QtCore/qconfig-i386.h>
#elif defined(__powerpc64__)
# include <QtCore/qconfig-ppc64.h>
#elif defined(__powerpc__)
# include <QtCore/qconfig-ppc.h>
#elif defined(__s390x__)
# include <QtCore/qconfig-s390x.h>
#elif defined(__s390__)
# include <QtCore/qconfig-s390.h>
#elif defined(__sparc64__)
# include <QtCore/qconfig-sparc64.h>
#elif defined(__sparc__)
# include <QtCore/qconfig-sparc.h>
#else
/* Should never reach this point, if so see bugzilla.redhat.com/223663 */
#error "This qt4-devel package does not work your architecture?"
#endif

View File

@ -1,15 +0,0 @@
--- 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() ) ); */
}
}
}

View File

@ -1,11 +0,0 @@
--- 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"

View File

@ -1,114 +0,0 @@
--- 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

View File

@ -1,18 +0,0 @@
--- 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. },

View File

@ -1,15 +0,0 @@
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) {

View File

@ -1,11 +0,0 @@
--- qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp.bak 2006-10-18 17:55:23.308589840 +0800
+++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2006-10-18 17:57:45.284006296 +0800
@@ -164,7 +164,7 @@
Matra, Matra, Matra, Matra,
Matra, Invalid, Invalid, Matra,
Matra, Invalid, Invalid, Matra,
- Matra, Halant, Unknown, Unknown,
+ Matra, Halant, Consonant, Unknown,
Invalid, Invalid, Invalid, Invalid,
Invalid, Invalid, Invalid, VowelMark,

View File

@ -1,12 +0,0 @@
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,

View File

@ -1,60 +0,0 @@
--- 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:");

View File

@ -1,11 +0,0 @@
--- 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,

View File

@ -1,12 +0,0 @@
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 );

View File

@ -1,11 +0,0 @@
--- 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,

View File

@ -1,23 +0,0 @@
--- 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;

View File

@ -1,11 +0,0 @@
--- 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,

158
qt-43-aliasing.diff Normal file
View File

@ -0,0 +1,158 @@
--- src/corelib/tools/qmap.h
+++ src/corelib/tools/qmap.h
@@ -185,6 +185,7 @@ public:
class iterator
{
+ friend class const_iterator;
QMapData::Node *i;
public:
@@ -240,9 +241,9 @@ public:
public:
#endif
inline bool operator==(const const_iterator &o) const
- { return i == reinterpret_cast<const iterator &>(o).i; }
+ { return i == o.i; }
inline bool operator!=(const const_iterator &o) const
- { return i != reinterpret_cast<const iterator &>(o).i; }
+ { return i != o.i; }
private:
// ### Qt 5: remove
@@ -252,6 +253,7 @@ public:
class const_iterator
{
+ friend class iterator;
QMapData::Node *i;
public:
@@ -270,7 +272,7 @@ public:
#else
inline const_iterator(const iterator &o)
#endif
- { i = reinterpret_cast<const const_iterator &>(o).i; }
+ { i = o.i; }
inline const Key &key() const { return concrete(i)->key; }
inline const T &value() const { return concrete(i)->value; }
--- src/corelib/tools/qset.h
+++ src/corelib/tools/qset.h
@@ -84,6 +84,7 @@ public:
{
typedef QHash<T, QHashDummyValue> Hash;
typename Hash::iterator i;
+ friend class const_iterator;
public:
typedef std::bidirectional_iterator_tag iterator_category;
@@ -101,9 +102,9 @@ public:
inline bool operator==(const iterator &o) const { return i == o.i; }
inline bool operator!=(const iterator &o) const { return i != o.i; }
inline bool operator==(const const_iterator &o) const
- { return i == reinterpret_cast<const iterator &>(o).i; }
+ { return i == o.i; }
inline bool operator!=(const const_iterator &o) const
- { return i != reinterpret_cast<const iterator &>(o).i; }
+ { return i != o.i; }
inline iterator &operator++() { ++i; return *this; }
inline iterator operator++(int) { iterator r = *this; ++i; return r; }
inline iterator &operator--() { --i; return *this; }
@@ -118,6 +119,7 @@ public:
{
typedef QHash<T, QHashDummyValue> Hash;
typename Hash::const_iterator i;
+ friend class iterator;
public:
typedef std::bidirectional_iterator_tag iterator_category;
@@ -130,7 +132,7 @@ public:
inline const_iterator(typename Hash::const_iterator o) : i(o) {}
inline const_iterator(const const_iterator &o) : i(o.i) {}
inline const_iterator(const iterator &o)
- : i(reinterpret_cast<const const_iterator &>(o).i) {}
+ : i(o.i) {}
inline const_iterator &operator=(const const_iterator &o) { i = o.i; return *this; }
inline const T &operator*() const { return i.key(); }
inline const T *operator->() const { return &i.key(); }
--- src/corelib/tools/qhash.h
+++ src/corelib/tools/qhash.h
@@ -291,6 +291,7 @@ public:
class iterator
{
+ friend class const_iterator;
QHashData::Node *i;
public:
@@ -343,9 +344,9 @@ public:
public:
#endif
inline bool operator==(const const_iterator &o) const
- { return i == reinterpret_cast<const iterator &>(o).i; }
+ { return i == o.i; }
inline bool operator!=(const const_iterator &o) const
- { return i != reinterpret_cast<const iterator &>(o).i; }
+ { return i != o.i; }
private:
// ### Qt 5: remove
@@ -355,6 +356,7 @@ public:
class const_iterator
{
+ friend class iterator;
QHashData::Node *i;
public:
@@ -374,7 +376,7 @@ public:
#else
inline const_iterator(const iterator &o)
#endif
- { i = reinterpret_cast<const const_iterator &>(o).i; }
+ { i = o.i; }
inline const Key &key() const { return concrete(i)->key; }
inline const T &value() const { return concrete(i)->value; }
--- src/corelib/tools/qlist.h
+++ src/corelib/tools/qlist.h
@@ -162,17 +162,17 @@ public:
inline bool operator>=(const iterator& other) const { return i >= other.i; }
#ifndef QT_STRICT_ITERATORS
inline bool operator==(const const_iterator &o) const
- { return i == reinterpret_cast<const iterator &>(o).i; }
+ { return i == o.i; }
inline bool operator!=(const const_iterator &o) const
- { return i != reinterpret_cast<const iterator &>(o).i; }
+ { return i != o.i; }
inline bool operator<(const const_iterator& other) const
- { return i < reinterpret_cast<const iterator &>(other).i; }
+ { return i < other.i; }
inline bool operator<=(const const_iterator& other) const
- { return i <= reinterpret_cast<const iterator &>(other).i; }
+ { return i <= other.i; }
inline bool operator>(const const_iterator& other) const
- { return i > reinterpret_cast<const iterator &>(other).i; }
+ { return i > other.i; }
inline bool operator>=(const const_iterator& other) const
- { return i >= reinterpret_cast<const iterator &>(other).i; }
+ { return i >= other.i; }
#endif
inline iterator &operator++() { ++i; return *this; }
inline iterator operator++(int) { Node *n = i; ++i; return n; }
--- src/corelib/tools/qlinkedlist.h
+++ src/corelib/tools/qlinkedlist.h
@@ -119,9 +119,9 @@ public:
inline bool operator==(const iterator &o) const { return i == o.i; }
inline bool operator!=(const iterator &o) const { return i != o.i; }
inline bool operator==(const const_iterator &o) const
- { return i == reinterpret_cast<const iterator &>(o).i; }
+ { return i == o.i; }
inline bool operator!=(const const_iterator &o) const
- { return i != reinterpret_cast<const iterator &>(o).i; }
+ { return i != o.i; }
inline iterator &operator++() { i = i->n; return *this; }
inline iterator operator++(int) { Node *n = i; i = i->n; return n; }
inline iterator &operator--() { i = i->p; return *this; }

21
qt-copy-patches-svn_checkout.sh Executable file
View File

@ -0,0 +1,21 @@
#!/bin/bash
DATE=$(date +%Y%m%d)
EXPORT_DIR=qt-copy
set -x
rm -rf $EXPORT_DIR
# app
svn export --non-recursive svn://anonsvn.kde.org/home/kde/branches/qt/4.3 $EXPORT_DIR/
svn export svn://anonsvn.kde.org/home/kde/branches/qt/4.3/patches $EXPORT_DIR/patches
pushd $EXPORT_DIR
rm -f ../qt-copy-patches-${DATE}svn.tar.bz2
tar cjf ../qt-copy-patches-${DATE}svn.tar.bz2 \
.applied_patches apply_patches README.qt-copy patches/
popd
# cleanup
rm -rf $EXPORT_DIR

View File

@ -1,12 +0,0 @@
--- 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.";

View File

@ -1,14 +0,0 @@
--- 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

View File

@ -1,30 +0,0 @@
--- 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;

View File

@ -1,20 +0,0 @@
--- 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
+

View File

@ -1,11 +0,0 @@
--- 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;

View File

@ -1,18 +0,0 @@
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();

View File

@ -1,55 +0,0 @@
--- qt-x11-free-3.3.6/src/kernel/qapplication_x11.cpp.orig 2006-06-20 15:45:44.000000000 +0200
+++ qt-x11-free-3.3.6/src/kernel/qapplication_x11.cpp 2006-06-20 15:51:13.000000000 +0200
@@ -3294,11 +3294,7 @@
// 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;
@@ -5220,11 +5216,12 @@
} 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);
}
}
--- qt-x11-free-3.3.6/src/kernel/qwidget_x11.cpp.orig 2006-06-20 15:46:49.000000000 +0200
+++ qt-x11-free-3.3.6/src/kernel/qwidget_x11.cpp 2006-06-20 15:48:14.000000000 +0200
@@ -2699,11 +2699,10 @@
{
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;
@@ -2754,10 +2753,8 @@
*/
void QWidget::createInputContext()
{
-#if !defined(QT_NO_IM_EXTENSIONS)
if( !isInputMethodEnabled() || QApplication::closingDown() )
return;
-#endif
QWidget *icWidget = icHolderWidget();
#ifndef QT_NO_IM

View File

@ -1,11 +0,0 @@
--- 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 }
};

View File

@ -1,92 +0,0 @@
--- 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 );

View File

@ -1,36 +0,0 @@
--- 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

View File

@ -1,14 +0,0 @@
--- 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",

View File

@ -1,40 +0,0 @@
--- qt-x11-free-3.3.8/src/widgets/qtextedit.cpp.im 2007-03-19 10:19:10.000000000 +0100
+++ qt-x11-free-3.3.8/src/widgets/qtextedit.cpp 2007-03-19 10:19:47.000000000 +0100
@@ -5059,6 +5059,10 @@
void QTextEdit::setDocument( QTextDocument *dc )
{
+ if ( dc == 0 ) {
+ qWarning( "Q3TextEdit::setDocument() called with null Q3TextDocument pointer" );
+ return;
+ }
if ( dc == doc )
return;
resetInputContext();
--- qt-x11-free-3.3.8/src/widgets/qlineedit.cpp.im 2007-03-19 10:20:03.000000000 +0100
+++ qt-x11-free-3.3.8/src/widgets/qlineedit.cpp 2007-03-19 10:22:11.000000000 +0100
@@ -457,10 +457,10 @@
\property QLineEdit::text
\brief the line edit's text
- Setting this property clears the selection, clears the undo/redo
- history, moves the cursor to the end of the line and resets the
- \c modified property to FALSE. The text is not validated when
- inserted with setText().
+ Note that setting this property clears the selection, clears the
+ undo/redo history, moves the cursor to the end of the line and
+ resets the \c modified property to FALSE. The text is not
+ validated when inserted with setText().
The text is truncated to maxLength() length.
@@ -1014,6 +1014,9 @@
/*!
Selects text from position \a start and for \a length characters.
+ Note that this function sets the cursor's position to the end of
+ the selection regardless of its current position.
+
\sa deselect() selectAll() getSelection() cursorForward() cursorBackward()
*/

View File

@ -1,83 +0,0 @@
--- qt-x11-free-3.3.8/src/kernel/qwidget_x11.cpp 2007-02-02 15:01:13.000000000 +0100
+++ qt-x11-free-3.3.7/src/kernel/qwidget_x11.cpp 2006-10-19 16:25:16.000000000 +0200
@@ -1442,7 +1442,16 @@
QWidget *tlw = topLevelWidget();
if ( tlw->isVisible() && !tlw->topData()->embedded && !qt_deferred_map_contains(tlw) ) {
XSetInputFocus( x11Display(), tlw->winId(), RevertToNone, qt_x_time);
- focusInputContext();
+
+#ifndef QT_NO_XIM
+ // trigger input context creation if it hasn't happened already
+ createInputContext();
+
+ if (tlw->topData()->xic) {
+ QInputContext *qic = (QInputContext *) tlw->topData()->xic;
+ qic->setFocus();
+ }
+#endif
}
}
@@ -2717,16 +2726,14 @@
{
#ifndef QT_NO_XIM
QWidget *tlw = topLevelWidget();
- if (!tlw->isPopup() || isInputMethodEnabled()) {
- QTLWExtra *topdata = tlw->topData();
+ QTLWExtra *topdata = tlw->topData();
- // trigger input context creation if it hasn't happened already
- createInputContext();
+ // trigger input context creation if it hasn't happened already
+ createInputContext();
- if (topdata->xic) {
- QInputContext *qic = (QInputContext *) topdata->xic;
- qic->setFocus();
- }
+ if (topdata->xic) {
+ QInputContext *qic = (QInputContext *) topdata->xic;
+ qic->setFocus();
}
#endif // QT_NO_XIM
}
--- qt-x11-free-3.3.8/src/widgets/qtextedit.cpp 2007-02-02 15:01:23.000000000 +0100
+++ qt-x11-free-3.3.7/src/widgets/qtextedit.cpp 2006-10-19 16:25:34.000000000 +0200
@@ -4972,10 +4972,6 @@
void QTextEdit::setDocument( QTextDocument *dc )
{
- if ( dc == 0 ) {
- qWarning( "Q3TextEdit::setDocument() called with null Q3TextDocument pointer" );
- return;
- }
if ( dc == doc )
return;
resetInputContext();
--- qt-x11-free-3.3.8/src/widgets/qlineedit.cpp 2007-02-02 15:01:24.000000000 +0100
+++ qt-x11-free-3.3.7/src/widgets/qlineedit.cpp 2006-10-19 16:25:36.000000000 +0200
@@ -446,10 +446,10 @@
\property QLineEdit::text
\brief the line edit's text
- Note that setting this property clears the selection, clears the
- undo/redo history, moves the cursor to the end of the line and
- resets the \c modified property to FALSE. The text is not
- validated when inserted with setText().
+ Setting this property clears the selection, clears the undo/redo
+ history, moves the cursor to the end of the line and resets the
+ \c modified property to FALSE. The text is not validated when
+ inserted with setText().
The text is truncated to maxLength() length.
@@ -1002,9 +1002,6 @@
/*!
Selects text from position \a start and for \a length characters.
- Note that this function sets the cursor's position to the end of
- the selection regardless of its current position.
-
\sa deselect() selectAll() getSelection() cursorForward() cursorBackward()
*/

View File

@ -1,25 +0,0 @@
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.*"
;;
*)
;;

View File

@ -1,23 +0,0 @@
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 <qinputcontextfactory.h>
#include <qsettings.h>
-
+#include <stdlib.h>
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 <qnamespace.h>
#include <qevent.h>
#include <qglobal.h>
+#include <algorithm>
static const int ignoreKeys[] = {
Qt::Key_Shift,

View File

@ -1,24 +0,0 @@
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";

View File

@ -1,134 +0,0 @@
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();
}

View File

@ -0,0 +1,43 @@
--- qt-x11-opensource-src-4.2.2/mkspecs/linux-g++-64/qmake.conf.multilib 2006-11-27 11:26:42.000000000 -0600
+++ qt-x11-opensource-src-4.2.2/mkspecs/linux-g++-64/qmake.conf 2007-02-26 15:01:02.000000000 -0600
@@ -14,6 +14,8 @@
QMAKE_CFLAGS = -m64
QMAKE_LFLAGS = -m64
+QMAKE_CFLAGS_RELEASE += -O2
+
include(../common/g++.conf)
include(../common/linux.conf)
--- qt-x11-opensource-src-4.2.2/mkspecs/linux-g++-32/qmake.conf.multilib 2006-11-27 11:26:42.000000000 -0600
+++ qt-x11-opensource-src-4.2.2/mkspecs/linux-g++-32/qmake.conf 2007-02-26 15:01:34.000000000 -0600
@@ -11,6 +11,8 @@
QMAKE_CFLAGS = -m32
QMAKE_LFLAGS = -m32
+QMAKE_CFLAGS_RELEASE += -O2
+
include(../common/g++.conf)
include(../common/linux.conf)
load(qt_config)
--- qt-x11-opensource-src-4.2.2/mkspecs/linux-g++/qmake.conf.multilib 2006-11-27 11:26:42.000000000 -0600
+++ qt-x11-opensource-src-4.2.2/mkspecs/linux-g++/qmake.conf 2007-02-26 15:01:26.000000000 -0600
@@ -8,6 +8,8 @@
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
+QMAKE_CFLAGS_RELEASE += -O2
+
include(../common/g++.conf)
include(../common/linux.conf)
load(qt_config)
--- qt-x11-opensource-src-4.2.2/qmake/project.cpp.QMAKEPATH 2006-11-27 11:26:03.000000000 -0600
+++ qt-x11-opensource-src-4.2.2/qmake/project.cpp 2007-02-26 13:45:39.000000000 -0600
@@ -498,6 +498,7 @@
ret << ((*it) + concat);
}
ret << QLibraryInfo::location(QLibraryInfo::DataPath) + concat;
+ ret << QLibraryInfo::location(QLibraryInfo::PrefixPath) + concat;
return ret;
}

View File

@ -0,0 +1,11 @@
--- qt-x11-opensource-src-4.3.0beta/tools/assistant/lib/qassistantclient.cpp.assistant4 2007-03-19 15:15:06.000000000 -0500
+++ qt-x11-opensource-src-4.3.0beta/tools/assistant/lib/qassistantclient.cpp 2007-03-21 14:02:59.000000000 -0500
@@ -172,7 +172,7 @@
: QObject( parent ), host ( QLatin1String("localhost") )
{
if ( path.isEmpty() )
- assistantCommand = QLatin1String("assistant");
+ assistantCommand = QLatin1String("assistant-qt4");
else {
QFileInfo fi( path );
if ( fi.isDir() )

View File

@ -0,0 +1,17 @@
diff -up qt-x11-opensource-src-4.3.4/src/corelib/thread/qatomic.h.me qt-x11-opensource-src-4.3.4/src/corelib/thread/qatomic.h
--- qt-x11-opensource-src-4.3.4/src/corelib/thread/qatomic.h.me 2008-02-29 16:32:54.000000000 +0100
+++ qt-x11-opensource-src-4.3.4/src/corelib/thread/qatomic.h 2008-02-29 17:05:03.000000000 +0100
@@ -178,8 +178,13 @@ struct QBasicAtomicPointer
#endif // Q_SPECIALIZED_QATOMIC
template <typename T>
+#if defined(QT_MOC) || defined(QT_BUILD_QMAKE) || defined(QT_UIC)
+inline T qAtomicSetPtr(T *ptr, T newval)
+{ T ret = *ptr; *ptr = newval; return ret; }
+#else
inline T qAtomicSetPtr(volatile T *ptr, T newval)
{ return static_cast<T>(q_atomic_set_ptr(ptr, newval)); }
+#endif
// High-level atomic integer operations
class QAtomic : public QBasicAtomic

15
qt.csh
View File

@ -1,15 +0,0 @@
# Qt initialization script (csh)
set qt_prefix = `/usr/bin/pkg-config --variable=prefix qt-mt`
if ( "${path}" !~ *$qt_prefix/bin* ) then
set path = ( $qt_prefix/bin $path )
endif
if ( $?QTDIR ) then
exit
endif
setenv QTDIR $qt_prefix
setenv QTINC $qt_prefix/include
setenv QTLIB $qt_prefix/lib

15
qt.sh
View File

@ -1,15 +0,0 @@
# Qt initialization script (sh)
qt_prefix=`/usr/bin/pkg-config --variable=prefix qt-mt`
if ! echo ${PATH} | /bin/grep -q $qt_prefix/bin ; then
PATH=$qt_prefix/bin:${PATH}
fi
if [ -z "$QTDIR" ] ; then
QTDIR="$qt_prefix"
QTINC="$qt_prefix/include"
QTLIB="$qt_prefix/lib"
fi
export QTDIR QTINC QTLIB PATH

2616
qt.spec

File diff suppressed because it is too large Load Diff

15
qt4-wrapper.sh Executable file
View File

@ -0,0 +1,15 @@
#!/bin/bash
if [ -z "$QT4DIR" ] ; then
# rpm is more correct multilib-wise, provided /etc/rpm/platform doesn't get in the way.
QT4DIR="$(/bin/rpm --eval "%{_libdir}/qt4" 2>/dev/null || /usr/bin/pkg-config --variable=prefix QtCore )"
export QT4DIR
fi
if ! echo ${PATH} | /bin/grep -q $QT4DIR/bin ; then
PATH=${QT4DIR}/bin:${PATH}
export PATH
fi
exec $QT4DIR/bin/`basename $0` ${1+"$@"}

8
qt4.csh Executable file
View File

@ -0,0 +1,8 @@
# Qt4 initialization script (csh)
if ( $?QMAKESPEC ) then
exit
endif
setenv QMAKESPEC @@QMAKESPEC@@

8
qt4.sh Executable file
View File

@ -0,0 +1,8 @@
# Qt4 initialization script (sh)
if [ -z "$QMAKESPEC" ] ; then
QMAKESPEC=@@QMAKESPEC@@
export QMAKESPEC
fi

9
qtconfig.desktop Normal file
View File

@ -0,0 +1,9 @@
[Desktop Entry]
Name=Qt4 Config
Comment=Configure Qt4 behavior, styles, fonts
Exec=qtconfig-qt4
Icon=qt4-logo
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Settings;

View File

@ -1,9 +0,0 @@
[Desktop Entry]
Name=Qt3 Config
Comment=Configure Qt3 behavior, styles, fonts
Exec=qtconfig
Icon=qtconfig3
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Settings;

9
qtdemo.desktop Normal file
View File

@ -0,0 +1,9 @@
[Desktop Entry]
Name=Qt4 Demo
Comment=Show Qt4 demos and programming examples
Exec=qtdemo-qt4
Icon=qt4-logo
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;

View File

@ -1,2 +1,4 @@
91adfea39f17a64b86497bce32782cf3 qt-x11-immodule-unified-qt3.3.7-20061229.diff.bz2
9f05b4125cfe477cc52c9742c3c09009 qt-x11-free-3.3.8b.tar.gz
d9f511e4b51983b4e10eb58b320416d5 hi128-app-qt4-logo.png
6dcc0672ff9e60a6b83f95c5f42bec5b hi48-app-qt4-logo.png
e07759e773b8ec38ce222b6fd5e9f0c5 qt-copy-patches-20080305svn.tar.bz2
9499101ec54eb7b0de195b3c5e3ffa93 qt-x11-opensource-src-4.3.4.tar.gz