From d3e87ed4a07c97c013fb5b50f91db6092cf6fe3f Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Tue, 29 Jan 2013 23:27:33 -0600 Subject: [PATCH 01/10] Rename a few build variables for overall consistency --- src/3rdparty/sqlite/os.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/3rdparty/sqlite/os.c b/src/3rdparty/sqlite/os.c index b4ae7a1..a85810f 100644 --- a/src/3rdparty/sqlite/os.c +++ b/src/3rdparty/sqlite/os.c @@ -1340,7 +1340,7 @@ int sqliteOsReadLock(OsFile *id){ ovlp.Offset = FIRST_LOCKBYTE+1; ovlp.OffsetHigh = 0; ovlp.hEvent = 0; - res = LockFileEx(id->h, LOCKFILE_FAIL_IMMEDIATELY, + res = LockFileEx(id->h, LOCTDEFILE_FAIL_IMMEDIATELY, 0, N_LOCKBYTE, 0, &ovlp); }else{ res = LockFile(id->h, FIRST_LOCKBYTE+lk, 0, 1, 0); From 05d2fcdc9265d1ee8b35899e300bf1ddf90c97de Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Fri, 1 Feb 2013 17:25:37 -0600 Subject: [PATCH 02/10] Fix FTBFS --- doc/html/{checklists-example.html => chectdelists-example.html} | 0 ...{qchecklistitem-members.html => qchectdelistitem-members.html} | 0 doc/html/{qchecklistitem.html => qchectdelistitem.html} | 0 doc/man/man3/{qchecklistitem.3qt => qchectdelistitem.3qt} | 0 .../{checklists/checklists.cpp => chectdelists/chectdelists.cpp} | 0 .../{checklists/checklists.doc => chectdelists/chectdelists.doc} | 0 examples/{checklists/checklists.h => chectdelists/chectdelists.h} | 0 .../{checklists/checklists.pro => chectdelists/chectdelists.pro} | 0 examples/{checklists => chectdelists}/main.cpp | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename doc/html/{checklists-example.html => chectdelists-example.html} (100%) rename doc/html/{qchecklistitem-members.html => qchectdelistitem-members.html} (100%) rename doc/html/{qchecklistitem.html => qchectdelistitem.html} (100%) rename doc/man/man3/{qchecklistitem.3qt => qchectdelistitem.3qt} (100%) rename examples/{checklists/checklists.cpp => chectdelists/chectdelists.cpp} (100%) rename examples/{checklists/checklists.doc => chectdelists/chectdelists.doc} (100%) rename examples/{checklists/checklists.h => chectdelists/chectdelists.h} (100%) rename examples/{checklists/checklists.pro => chectdelists/chectdelists.pro} (100%) rename examples/{checklists => chectdelists}/main.cpp (100%) diff --git a/doc/html/checklists-example.html b/doc/html/chectdelists-example.html similarity index 100% rename from doc/html/checklists-example.html rename to doc/html/chectdelists-example.html diff --git a/doc/html/qchecklistitem-members.html b/doc/html/qchectdelistitem-members.html similarity index 100% rename from doc/html/qchecklistitem-members.html rename to doc/html/qchectdelistitem-members.html diff --git a/doc/html/qchecklistitem.html b/doc/html/qchectdelistitem.html similarity index 100% rename from doc/html/qchecklistitem.html rename to doc/html/qchectdelistitem.html diff --git a/doc/man/man3/qchecklistitem.3qt b/doc/man/man3/qchectdelistitem.3qt similarity index 100% rename from doc/man/man3/qchecklistitem.3qt rename to doc/man/man3/qchectdelistitem.3qt diff --git a/examples/checklists/checklists.cpp b/examples/chectdelists/chectdelists.cpp similarity index 100% rename from examples/checklists/checklists.cpp rename to examples/chectdelists/chectdelists.cpp diff --git a/examples/checklists/checklists.doc b/examples/chectdelists/chectdelists.doc similarity index 100% rename from examples/checklists/checklists.doc rename to examples/chectdelists/chectdelists.doc diff --git a/examples/checklists/checklists.h b/examples/chectdelists/chectdelists.h similarity index 100% rename from examples/checklists/checklists.h rename to examples/chectdelists/chectdelists.h diff --git a/examples/checklists/checklists.pro b/examples/chectdelists/chectdelists.pro similarity index 100% rename from examples/checklists/checklists.pro rename to examples/chectdelists/chectdelists.pro diff --git a/examples/checklists/main.cpp b/examples/chectdelists/main.cpp similarity index 100% rename from examples/checklists/main.cpp rename to examples/chectdelists/main.cpp From 4b9e514d7c18cdaa3e07347245b27d47825196c5 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Fri, 1 Feb 2013 17:32:43 -0600 Subject: [PATCH 03/10] Fix prior commit --- doc/html/{chectdelists-example.html => checklists-example.html} | 0 ...{qchectdelistitem-members.html => qchecklistitem-members.html} | 0 doc/html/{qchectdelistitem.html => qchecklistitem.html} | 0 doc/man/man3/{qchectdelistitem.3qt => qchecklistitem.3qt} | 0 .../{chectdelists/chectdelists.cpp => checklists/checklists.cpp} | 0 .../{chectdelists/chectdelists.doc => checklists/checklists.doc} | 0 examples/{chectdelists/chectdelists.h => checklists/checklists.h} | 0 .../{chectdelists/chectdelists.pro => checklists/checklists.pro} | 0 examples/{chectdelists => checklists}/main.cpp | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename doc/html/{chectdelists-example.html => checklists-example.html} (100%) rename doc/html/{qchectdelistitem-members.html => qchecklistitem-members.html} (100%) rename doc/html/{qchectdelistitem.html => qchecklistitem.html} (100%) rename doc/man/man3/{qchectdelistitem.3qt => qchecklistitem.3qt} (100%) rename examples/{chectdelists/chectdelists.cpp => checklists/checklists.cpp} (100%) rename examples/{chectdelists/chectdelists.doc => checklists/checklists.doc} (100%) rename examples/{chectdelists/chectdelists.h => checklists/checklists.h} (100%) rename examples/{chectdelists/chectdelists.pro => checklists/checklists.pro} (100%) rename examples/{chectdelists => checklists}/main.cpp (100%) diff --git a/doc/html/chectdelists-example.html b/doc/html/checklists-example.html similarity index 100% rename from doc/html/chectdelists-example.html rename to doc/html/checklists-example.html diff --git a/doc/html/qchectdelistitem-members.html b/doc/html/qchecklistitem-members.html similarity index 100% rename from doc/html/qchectdelistitem-members.html rename to doc/html/qchecklistitem-members.html diff --git a/doc/html/qchectdelistitem.html b/doc/html/qchecklistitem.html similarity index 100% rename from doc/html/qchectdelistitem.html rename to doc/html/qchecklistitem.html diff --git a/doc/man/man3/qchectdelistitem.3qt b/doc/man/man3/qchecklistitem.3qt similarity index 100% rename from doc/man/man3/qchectdelistitem.3qt rename to doc/man/man3/qchecklistitem.3qt diff --git a/examples/chectdelists/chectdelists.cpp b/examples/checklists/checklists.cpp similarity index 100% rename from examples/chectdelists/chectdelists.cpp rename to examples/checklists/checklists.cpp diff --git a/examples/chectdelists/chectdelists.doc b/examples/checklists/checklists.doc similarity index 100% rename from examples/chectdelists/chectdelists.doc rename to examples/checklists/checklists.doc diff --git a/examples/chectdelists/chectdelists.h b/examples/checklists/checklists.h similarity index 100% rename from examples/chectdelists/chectdelists.h rename to examples/checklists/checklists.h diff --git a/examples/chectdelists/chectdelists.pro b/examples/checklists/checklists.pro similarity index 100% rename from examples/chectdelists/chectdelists.pro rename to examples/checklists/checklists.pro diff --git a/examples/chectdelists/main.cpp b/examples/checklists/main.cpp similarity index 100% rename from examples/chectdelists/main.cpp rename to examples/checklists/main.cpp From 5df139de988197954c554b832e8bc6fcf48f54a1 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 3 Feb 2013 22:55:56 -0600 Subject: [PATCH 04/10] Rename KStyle to TDEStyle to avoid conflicts with KDE4 --- changes-3.5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changes-3.5 b/changes-3.5 index 3e5a920..9aee75a 100644 --- a/changes-3.5 +++ b/changes-3.5 @@ -31,7 +31,7 @@ sizeFromContents styleHint stylePixmap visualRect -drawKStylePrimitive +drawTDEStylePrimitive polish unPolish From 5aa389f311cae593530b0d0f500d67b10f7dd494 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Tue, 12 Feb 2013 18:15:11 -0600 Subject: [PATCH 05/10] Fix GTK threading deadlock --- src/kernel/qeventloop_glib_p.h | 3 +++ src/kernel/qeventloop_x11_glib.cpp | 32 ++++++++++++++++++++---------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/kernel/qeventloop_glib_p.h b/src/kernel/qeventloop_glib_p.h index 663f20e..3fa3593 100644 --- a/src/kernel/qeventloop_glib_p.h +++ b/src/kernel/qeventloop_glib_p.h @@ -100,6 +100,8 @@ public: exitloop = FALSE; shortcut = FALSE; singletoolkit = TRUE; + ctx = 0; + ctx_is_default = false; } int looplevel; @@ -129,6 +131,7 @@ public: // main context GMainContext *ctx; + bool ctx_is_default; }; #endif // QEVENTLOOP_GLIB_P_H diff --git a/src/kernel/qeventloop_x11_glib.cpp b/src/kernel/qeventloop_x11_glib.cpp index 877ff44..d37fbee 100644 --- a/src/kernel/qeventloop_x11_glib.cpp +++ b/src/kernel/qeventloop_x11_glib.cpp @@ -79,8 +79,7 @@ static GSourceFuncs qt_gsource_funcs = { // forward main loop callbacks to QEventLoop methods! -static gboolean qt_gsource_prepare ( GSource *source, - gint *timeout ) +static gboolean qt_gsource_prepare ( GSource *source, gint *timeout ) { QtGSource * qtGSource = (QtGSource*) source; QEventLoop* candidateEventLoop = qtGSource->qeventLoop; @@ -95,7 +94,7 @@ static gboolean qt_gsource_prepare ( GSource *source, } } -static gboolean qt_gsource_check ( GSource *source ) +static gboolean qt_gsource_check ( GSource *source ) { QtGSource * qtGSource = (QtGSource*) source; QEventLoop* candidateEventLoop = qtGSource->qeventLoop; @@ -110,8 +109,7 @@ static gboolean qt_gsource_check ( GSource *source ) } } -static gboolean qt_gsource_dispatch ( GSource *source, - GSourceFunc callback, gpointer user_data ) +static gboolean qt_gsource_dispatch ( GSource *source, GSourceFunc callback, gpointer user_data ) { Q_UNUSED(callback); Q_UNUSED(user_data); @@ -215,6 +213,7 @@ void QEventLoop::init() // new main context for thread d->ctx = g_main_context_new(); g_main_context_push_thread_default(d->ctx); + d->ctx_is_default = true; // new GSource QtGSource * qtGSource = (QtGSource*) g_source_new(&qt_gsource_funcs, sizeof(QtGSource)); @@ -241,9 +240,9 @@ void QEventLoop::init() d->threadPipe_gPollFD.fd = d->thread_pipe[0]; d->threadPipe_gPollFD.events = G_IO_IN | G_IO_HUP | G_IO_ERR; - g_source_add_poll(d->gSource, &d->threadPipe_gPollFD); + g_source_add_poll(d->gSource, &d->threadPipe_gPollFD); -#ifdef DEBUG_QT_GLIBMAINLOOP +#ifdef DEBUG_QT_GLIBMAINLOOP printf("inside init(2)\n"); #endif @@ -375,7 +374,7 @@ bool QEventLoop::processX11Events() } -bool QEventLoop::gsourcePrepare(GSource *gs, int * timeout) +bool QEventLoop::gsourcePrepare(GSource *gs, int * timeout) { Q_UNUSED(gs); @@ -428,7 +427,7 @@ bool QEventLoop::gsourcePrepare(GSource *gs, int * timeout) #ifdef DEBUG_QT_GLIBMAINLOOP printf("inside gsourcePrepare(2) canwait=%d\n", canWait); -#endif +#endif if ( canWait ) { emit aboutToBlock(); @@ -440,7 +439,7 @@ bool QEventLoop::gsourcePrepare(GSource *gs, int * timeout) (**it)(); } -#ifdef DEBUG_QT_GLIBMAINLOOP +#ifdef DEBUG_QT_GLIBMAINLOOP printf("inside gsourcePrepare(2.1) canwait=%d\n", canWait); #endif @@ -649,4 +648,17 @@ void QEventLoop::appClosingDown() void QEventLoop::setSingleToolkitEventHandling(bool enabled) { d->singletoolkit = enabled; + + if (!d->singletoolkit) { + if (d->ctx_is_default) { + d->ctx_is_default = false; + g_main_context_pop_thread_default(d->ctx); + } + } + else { + if (!d->ctx_is_default) { + g_main_context_push_thread_default(d->ctx); + d->ctx_is_default = true; + } + } } \ No newline at end of file From c47f5e14e4231c872828374d05815d59a045cb2c Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Wed, 13 Feb 2013 20:35:23 -0600 Subject: [PATCH 06/10] Fix CLI application failure when glib event loop is used --- src/kernel/qeventloop_glib_p.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/kernel/qeventloop_glib_p.h b/src/kernel/qeventloop_glib_p.h index 3fa3593..4dfc02c 100644 --- a/src/kernel/qeventloop_glib_p.h +++ b/src/kernel/qeventloop_glib_p.h @@ -90,6 +90,9 @@ public: xfd = -1; x_gPollFD.fd = -1; #endif // Q_WS_X11 + singletoolkit = TRUE; + ctx = 0; + ctx_is_default = false; reset(); } @@ -99,11 +102,8 @@ public: quitnow = FALSE; exitloop = FALSE; shortcut = FALSE; - singletoolkit = TRUE; - ctx = 0; - ctx_is_default = false; } - + int looplevel; int quitcode; unsigned int quitnow : 1; From 5015438cc486e83eec69d7a8800b23316727eed4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Sun, 17 Feb 2013 12:00:56 +0100 Subject: [PATCH 07/10] Fix unintended rename of LOCKFILE --- src/3rdparty/sqlite/os.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/3rdparty/sqlite/os.c b/src/3rdparty/sqlite/os.c index a85810f..b4ae7a1 100644 --- a/src/3rdparty/sqlite/os.c +++ b/src/3rdparty/sqlite/os.c @@ -1340,7 +1340,7 @@ int sqliteOsReadLock(OsFile *id){ ovlp.Offset = FIRST_LOCKBYTE+1; ovlp.OffsetHigh = 0; ovlp.hEvent = 0; - res = LockFileEx(id->h, LOCTDEFILE_FAIL_IMMEDIATELY, + res = LockFileEx(id->h, LOCKFILE_FAIL_IMMEDIATELY, 0, N_LOCKBYTE, 0, &ovlp); }else{ res = LockFile(id->h, FIRST_LOCKBYTE+lk, 0, 1, 0); From 82b71e49603bf3a53240076c395864addd869267 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Mon, 18 Feb 2013 20:35:59 -0600 Subject: [PATCH 08/10] Doublebuffer QIconView to reduce flicker This closes Bug 1408 --- src/iconview/qiconview.cpp | 47 +++++++++++++++++++++++++++++++++++++- src/iconview/qiconview.h | 1 + 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/iconview/qiconview.cpp b/src/iconview/qiconview.cpp index 66fa498..9fd3022 100644 --- a/src/iconview/qiconview.cpp +++ b/src/iconview/qiconview.cpp @@ -214,6 +214,7 @@ public: QIconViewItem *currentItem, *tmpCurrentItem, *highlightedItem, *startDragItem, *pressedItem, *selectAnchor, *renamingItem; QRect *rubber; + QPixmap *backBuffer; QTimer *scrollTimer, *adjustTimer, *updateTimer, *inputTimer, *fullRedrawTimer; int rastX, rastY, spacing; @@ -2800,6 +2801,7 @@ QIconView::QIconView( QWidget *parent, const char *name, WFlags f ) d->currentItem = 0; d->highlightedItem = 0; d->rubber = 0; + d->backBuffer = 0; d->scrollTimer = 0; d->startDragItem = 0; d->tmpCurrentItem = 0; @@ -2953,6 +2955,8 @@ QIconView::~QIconView() delete item; item = tmp; } + delete d->backBuffer; + d->backBuffer = 0; delete d->fm; d->fm = 0; #ifndef QT_NO_TOOLTIP @@ -4972,6 +4976,47 @@ void QIconView::contentsDropEvent( QDropEvent *e ) } #endif +/*! + This function grabs all paintevents that otherwise would have been + processed by the QScrollView::viewportPaintEvent(). Here we use a + doublebuffer to reduce 'on-paint' flickering on QIconView + (and of course its children). + + \sa QScrollView::viewportPaintEvent(), QIconView::drawContents() +*/ + +void QIconView::bufferedPaintEvent( QPaintEvent* pe ) +{ + QWidget* vp = viewport(); + QRect r = pe->rect() & vp->rect(); + int ex = r.x() + contentsX(); + int ey = r.y() + contentsY(); + int ew = r.width(); + int eh = r.height(); + + if ( !d->backBuffer ) + d->backBuffer = new QPixmap(vp->size()); + if ( d->backBuffer->size() != vp->size() ) { + // Resize function (with hysteresis). Uses a good compromise between memory + // consumption and speed (number) of resizes. + float newWidth = (float)vp->width(); + float newHeight = (float)vp->height(); + if ( newWidth > d->backBuffer->width() || newHeight > d->backBuffer->height() ) + { + newWidth *= 1.1892; + newHeight *= 1.1892; + d->backBuffer->resize( (int)newWidth, (int)newHeight ); + } else if ( 1.5*newWidth < d->backBuffer->width() || 1.5*newHeight < d->backBuffer->height() ) + d->backBuffer->resize( (int)newWidth, (int)newHeight ); + } + + QPainter p; + p.begin(d->backBuffer, vp); + drawContentsOffset(&p, contentsX(), contentsY(), ex, ey, ew, eh); + p.end(); + bitBlt(vp, r.x(), r.y(), d->backBuffer, r.x(), r.y(), ew, eh); +} + /*! \reimp */ @@ -5756,7 +5801,7 @@ bool QIconView::eventFilter( QObject * o, QEvent * e ) if ( !d->rubber ) drawDragShapes( d->oldDragPos ); } - viewportPaintEvent( (QPaintEvent*)e ); + bufferedPaintEvent( (QPaintEvent*)e ); if ( d->dragging ) { if ( !d->rubber ) drawDragShapes( d->oldDragPos ); diff --git a/src/iconview/qiconview.h b/src/iconview/qiconview.h index 97780d8..109779f 100644 --- a/src/iconview/qiconview.h +++ b/src/iconview/qiconview.h @@ -452,6 +452,7 @@ protected: void contentsDropEvent( QDropEvent *e ); #endif + void bufferedPaintEvent( QPaintEvent* ); void resizeEvent( QResizeEvent* e ); void keyPressEvent( QKeyEvent *e ); void focusInEvent( QFocusEvent *e ); From 89af6f8007568a86132c9b4cc0a21356572a8bda Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 24 Feb 2013 02:27:31 -0600 Subject: [PATCH 09/10] Restore expected qApp->exit() behaviour when called from a non-GUI thread --- src/kernel/qapplication.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/kernel/qapplication.cpp b/src/kernel/qapplication.cpp index 5b43301..591fc8d 100644 --- a/src/kernel/qapplication.cpp +++ b/src/kernel/qapplication.cpp @@ -2931,7 +2931,14 @@ int QApplication::exec() */ void QApplication::exit( int retcode ) { - qApp->eventLoop()->exit( retcode ); + QThread* thread = qApp->guiThread(); + if (thread) { + if (thread->d) { + if (thread->d->eventLoop) { + thread->d->eventLoop->exit( retcode ); + } + } + } } /*! From d10d2321a34ab6c157bdf2a2e900c0ee52f1bd79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Fri, 1 Mar 2013 23:18:23 -0600 Subject: [PATCH 10/10] Fix textbox trails introduced with GIT commit 82b71e49 This resolves Bug 1408 --- src/iconview/qiconview.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/iconview/qiconview.cpp b/src/iconview/qiconview.cpp index 9fd3022..2272f83 100644 --- a/src/iconview/qiconview.cpp +++ b/src/iconview/qiconview.cpp @@ -5800,11 +5800,11 @@ bool QIconView::eventFilter( QObject * o, QEvent * e ) if ( d->dragging ) { if ( !d->rubber ) drawDragShapes( d->oldDragPos ); - } - bufferedPaintEvent( (QPaintEvent*)e ); - if ( d->dragging ) { + viewportPaintEvent( (QPaintEvent*)e ); if ( !d->rubber ) drawDragShapes( d->oldDragPos ); + } else { + bufferedPaintEvent( (QPaintEvent*)e ); } } return TRUE;