[Kst] kdeextragear-2/kst/kst
George Staikos
staikos at kde.org
Fri Mar 18 19:50:21 CET 2005
CVS commit by staikos:
change the default paint mechanism to P_PAINT from P_DATA and introduce a hack
to the update thread to pass the list of changed curves in the event. Kst2DPlot
is a mess and too dangerous to put into the update thread right now. This hack
will go away when Kst2DPlot gets cleaned up.
BUG: 95117
M +1 -1 kst.cpp 1.293
M +1 -1 kst.h 1.126
M +29 -3 kstdoc.cpp 1.154
M +1 -1 stdinsource.cpp 1.12
M +1 -0 threadevents.h 1.6
M +9 -2 updatethread.cpp 1.44
M +3 -0 updatethread.h 1.7
--- kdeextragear-2/kst/kst/kst.cpp #1.292:1.293
@@ -1414,5 +1414,5 @@ void KstApp::paintAll(KstPaintType pt) {
t.start();
#endif
- if (mdiMode() == KMdi::TabPageMode) {
+ if (mdiMode() == KMdi::TabPageMode) { // Optimization
KstViewWindow *view = dynamic_cast<KstViewWindow*>(activeWindow());
if (pt == P_DATA) { // what about P_PLOT? I think it's not needed anyway
--- kdeextragear-2/kst/kst/kst.h #1.125:1.126
@@ -123,5 +123,5 @@ class KstApp : public KMdiMainFrm {
bool dataMode() const;
- void paintAll(KstPaintType = P_DATA);
+ void paintAll(KstPaintType = P_PAINT);
void EventELOGSubmitEntry(const QString& message);
--- kdeextragear-2/kst/kst/kstdoc.cpp #1.153:1.154
@@ -38,4 +38,5 @@
#include <kfiledialog.h>
#include <kmessagebox.h>
+#include <kmdimainfrm.h>
#include <kprogress.h>
#include <ksavefile.h>
@@ -832,7 +833,32 @@ bool KstDoc::event(QEvent *e) {
switch (te->_eventType) {
case ThreadEvent::UpdateDataDialogs:
+ {
//kdDebug() << "Update data dialogs" << endl;
emit dataChanged();
+ // HACK: remove me later
+ KMdiIterator<KMdiChildView*> *it = KstApp::inst()->createIterator();
+ if (it) {
+ while (it->currentItem()) {
+ KstViewWindow *view = dynamic_cast<KstViewWindow*>(it->currentItem());
+ if (!view) {
+ it->next();
+ continue;
+ }
+
+ Kst2DPlotList pl = view->view()->findChildrenType<Kst2DPlot>(true);
+ for (Kst2DPlotList::Iterator i = pl.begin(); i != pl.end(); ++i) {
+ for (QValueList<KstBaseCurve*>::ConstIterator j = te->_curves.begin(); j != te->_curves.end(); ++j) {
+ if ((*i)->Curves.contains(*j)) {
+ (*i)->setDirty();
+ break;
+ }
+ }
+ }
+ it->next();
+ }
+ KstApp::inst()->deleteIterator(it);
+ }
KstApp::inst()->paintAll();
+ }
break;
case ThreadEvent::UpdateAllDialogs:
--- kdeextragear-2/kst/kst/stdinsource.cpp #1.11:1.12
@@ -40,5 +40,5 @@ KstStdinSource::KstStdinSource(KConfig *
_file = new KTempFile;
_filename = _file->name();
- update();
+ update(); // FIXME
_src = KstDataSource::loadSource(_filename, "ASCII");
if (_src && _src->isValid()) {
--- kdeextragear-2/kst/kst/threadevents.h #1.5:1.6
@@ -29,4 +29,5 @@ class ThreadEvent : public QEvent {
ThreadEventType _eventType;
+ QValueList<KstBaseCurve*> _curves; // HACK: for temporary use in update reworking
};
--- kdeextragear-2/kst/kst/updatethread.cpp #1.43:1.44
@@ -87,6 +87,7 @@ void UpdateThread::run() {
if (gotData) {
kdDebug() << "Posting UpdateDataDialogs" << endl;
- QApplication::postEvent(_doc,
- new ThreadEvent(ThreadEvent::UpdateDataDialogs));
+ ThreadEvent *e = new ThreadEvent(ThreadEvent::UpdateDataDialogs);
+ e->_curves = _updatedCurves;
+ QApplication::postEvent(_doc, e);
// this event also triggers an implicit repaint
} else {
@@ -128,4 +129,6 @@ bool UpdateThread::doUpdates(bool force,
KstObject::UpdateType U = KstObject::NO_CHANGE;
+ _updatedCurves.clear(); // HACK
+
if (gotData) {
*gotData = false;
@@ -162,4 +165,8 @@ bool UpdateThread::doUpdates(bool force,
bcp->writeUnlock();
+ if (ut == KstObject::UPDATE) { // HACK
+ _updatedCurves.append(bcp);
+ }
+
if (U != KstObject::UPDATE) {
U = ut;
--- kdeextragear-2/kst/kst/updatethread.h #1.6:1.7
@@ -21,7 +21,9 @@
#include <qmutex.h>
#include <qthread.h>
+#include <qvaluelist.h>
#include "kstwaitcondition.h"
+class KstBaseCurve;
class KstDoc;
@@ -50,4 +52,5 @@ class UpdateThread : public QThread {
int _updateCounter;
int _updateTime;
+ QValueList<KstBaseCurve*> _updatedCurves; // HACK: temporary use in update reworking
};
More information about the Kst
mailing list