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:
parent
ff83e35ad4
commit
b1128646fc
14
.cvsignore
14
.cvsignore
@ -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
|
||||
|
@ -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;
|
@ -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() );
|
||||
}
|
||||
|
@ -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
|
@ -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);
|
@ -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 );
|
@ -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);
|
@ -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() );
|
@ -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;
|
||||
}
|
||||
|
@ -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 ) {
|
@ -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
3
Trolltech.conf
Normal file
@ -0,0 +1,3 @@
|
||||
[Qt]
|
||||
font="Sans Serif,10,-1,5,50,0,0,0,0,0"
|
||||
|
9
assistant.desktop
Normal file
9
assistant.desktop
Normal 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;
|
@ -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;
|
@ -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
|
@ -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
27
qconfig-multilib.h
Normal 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
|
||||
|
@ -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() ) ); */
|
||||
}
|
||||
}
|
||||
}
|
@ -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"
|
@ -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
|
||||
|
@ -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. },
|
@ -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) {
|
@ -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,
|
@ -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,
|
@ -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:");
|
@ -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,
|
||||
|
@ -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 );
|
@ -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,
|
@ -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;
|
@ -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
158
qt-43-aliasing.diff
Normal 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
21
qt-copy-patches-svn_checkout.sh
Executable 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
|
||||
|
@ -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.";
|
@ -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
|
||||
|
@ -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;
|
@ -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
|
||||
+
|
@ -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;
|
@ -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();
|
@ -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
|
@ -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 }
|
||||
};
|
@ -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 );
|
@ -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
|
@ -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",
|
@ -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()
|
||||
*/
|
||||
|
@ -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()
|
||||
*/
|
||||
|
@ -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.*"
|
||||
;;
|
||||
*)
|
||||
;;
|
@ -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,
|
@ -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";
|
@ -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();
|
||||
}
|
||||
|
43
qt-x11-opensource-src-4.2.2-multilib.patch
Normal file
43
qt-x11-opensource-src-4.2.2-multilib.patch
Normal 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;
|
||||
}
|
11
qt-x11-opensource-src-4.3.0-qassistant-qt4.patch
Normal file
11
qt-x11-opensource-src-4.3.0-qassistant-qt4.patch
Normal 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() )
|
17
qt-x11-opensource-src-4.3.4-aliasing.patch
Normal file
17
qt-x11-opensource-src-4.3.4-aliasing.patch
Normal 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
15
qt.csh
@ -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
15
qt.sh
@ -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
|
15
qt4-wrapper.sh
Executable file
15
qt4-wrapper.sh
Executable 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
8
qt4.csh
Executable file
@ -0,0 +1,8 @@
|
||||
# Qt4 initialization script (csh)
|
||||
|
||||
if ( $?QMAKESPEC ) then
|
||||
exit
|
||||
endif
|
||||
|
||||
setenv QMAKESPEC @@QMAKESPEC@@
|
||||
|
8
qt4.sh
Executable file
8
qt4.sh
Executable file
@ -0,0 +1,8 @@
|
||||
# Qt4 initialization script (sh)
|
||||
|
||||
if [ -z "$QMAKESPEC" ] ; then
|
||||
QMAKESPEC=@@QMAKESPEC@@
|
||||
export QMAKESPEC
|
||||
|
||||
fi
|
||||
|
9
qtconfig.desktop
Normal file
9
qtconfig.desktop
Normal 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;
|
@ -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
9
qtdemo.desktop
Normal 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;
|
6
sources
6
sources
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user