mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
Turn of replotting while the cylinder type combo box is active
Since replotting is expensive and it is triggered while scrolling through the list of cylinders, better not do it for improved user experience and replot only after the combo box loses focus. I hope this... Fixes #768 Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
98085e25e5
commit
b72c32da7d
4 changed files with 23 additions and 0 deletions
|
@ -6,6 +6,8 @@
|
|||
#include "diveplanner.h"
|
||||
#include "simplewidgets.h"
|
||||
#include "gettextfromc.h"
|
||||
#include "profile/profilewidget2.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include <QtDebug>
|
||||
#include <QPainter>
|
||||
|
@ -252,6 +254,14 @@ void TankInfoDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
|
|||
|
||||
TankInfoDelegate::TankInfoDelegate(QObject *parent) : ComboBoxDelegate(TankInfoModel::instance(), parent)
|
||||
{
|
||||
connect(this, SIGNAL(closeEditor(QWidget *, QAbstractItemDelegate::EndEditHint)),
|
||||
this, SLOT(reenableReplot(QWidget *, QAbstractItemDelegate::EndEditHint)));
|
||||
}
|
||||
|
||||
void TankInfoDelegate::reenableReplot(QWidget *widget, QAbstractItemDelegate::EndEditHint hint)
|
||||
{
|
||||
MainWindow::instance()->graphics()->setReplot(true);
|
||||
MainWindow::instance()->graphics()->replot();
|
||||
}
|
||||
|
||||
void TankInfoDelegate::revertModelData(QWidget *widget, QAbstractItemDelegate::EndEditHint hint)
|
||||
|
@ -275,6 +285,7 @@ QWidget *TankInfoDelegate::createEditor(QWidget *parent, const QStyleOptionViewI
|
|||
currCylinderData.type = copy_string(cyl->type.description);
|
||||
currCylinderData.pressure = cyl->type.workingpressure.mbar;
|
||||
currCylinderData.size = cyl->type.size.mliter;
|
||||
MainWindow::instance()->graphics()->setReplot(false);
|
||||
return delegate;
|
||||
}
|
||||
|
||||
|
|
|
@ -57,6 +57,7 @@ public:
|
|||
public
|
||||
slots:
|
||||
void revertModelData(QWidget *widget, QAbstractItemDelegate::EndEditHint hint);
|
||||
void reenableReplot(QWidget *widget, QAbstractItemDelegate::EndEditHint hint);
|
||||
};
|
||||
|
||||
class TankUseDelegate : public QStyledItemDelegate {
|
||||
|
|
|
@ -289,10 +289,14 @@ void ProfileWidget2::setupItemOnScene()
|
|||
heartBeatAxis->setLinesVisible(true);
|
||||
percentageAxis->setTextVisible(true);
|
||||
percentageAxis->setLinesVisible(true);
|
||||
|
||||
replotEnabled = true;
|
||||
}
|
||||
|
||||
void ProfileWidget2::replot()
|
||||
{
|
||||
if (!replotEnabled)
|
||||
return;
|
||||
dataModel->clear();
|
||||
plotDive(0, true); // simply plot the displayed_dive again
|
||||
}
|
||||
|
@ -1089,6 +1093,11 @@ struct plot_data *ProfileWidget2::getEntryFromPos(QPointF pos)
|
|||
return entry;
|
||||
}
|
||||
|
||||
void ProfileWidget2::setReplot(bool state)
|
||||
{
|
||||
replotEnabled = state;
|
||||
}
|
||||
|
||||
void ProfileWidget2::contextMenuEvent(QContextMenuEvent *event)
|
||||
{
|
||||
if (currentState == ADD || currentState == PLAN) {
|
||||
|
|
|
@ -103,6 +103,7 @@ slots: // Necessary to call from QAction's signals.
|
|||
void pointInserted(const QModelIndex &parent, int start, int end);
|
||||
void pointsRemoved(const QModelIndex &, int start, int end);
|
||||
void plotPictures();
|
||||
void setReplot(bool state);
|
||||
void replot();
|
||||
|
||||
/* this is called for every move on the handlers. maybe we can speed up this a bit? */
|
||||
|
@ -145,6 +146,7 @@ private:
|
|||
QString backgroundFile;
|
||||
ToolTipItem *toolTipItem;
|
||||
bool isPlotZoomed;
|
||||
bool replotEnabled;
|
||||
// All those here should probably be merged into one structure,
|
||||
// So it's esyer to replicate for more dives later.
|
||||
// In the meantime, keep it here.
|
||||
|
|
Loading…
Reference in a new issue