diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,7 @@ Crash KHtml Config - KDELibs4Support + IconThemes NewStuff Plotting ) diff --git a/step/CMakeLists.txt b/step/CMakeLists.txt --- a/step/CMakeLists.txt +++ b/step/CMakeLists.txt @@ -54,6 +54,9 @@ add_definitions(${QALCULATE_CFLAGS}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${KDE4_ENABLE_EXCEPTIONS}") set(qalculate_LIBS ${QALCULATE_LIBRARIES} ${CLN_LIBRARIES}) + # To compile with libcln + string (REPLACE "-fno-exceptions" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + add_definitions (-fexceptions) endif(STEP_WITH_QALCULATE) ki18n_wrap_ui( step_SRCS ${step_UIS} ) @@ -69,11 +72,12 @@ target_link_libraries(step stepcore KF5::Crash + KF5::IconThemes KF5::KHtml KF5::Plotting KF5::NewStuff - KF5::KDELibs4Support Qt5::OpenGL + Qt5::Widgets ${qalculate_LIBS}) install(TARGETS step ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) diff --git a/step/gascreationdialog.h b/step/gascreationdialog.h --- a/step/gascreationdialog.h +++ b/step/gascreationdialog.h @@ -38,7 +38,7 @@ public: GasCreationDialog(GasMenuHandler* handler, StepCore::Gas *gas, - QWidget *parent=0, Qt::WFlags flags=0); + QWidget *parent=0); Ui::WidgetCreateGasParticles *ui(); diff --git a/step/gascreationdialog.cc b/step/gascreationdialog.cc --- a/step/gascreationdialog.cc +++ b/step/gascreationdialog.cc @@ -35,8 +35,8 @@ GasCreationDialog::GasCreationDialog(GasMenuHandler* handler, StepCore::Gas *gas, - QWidget *parent, Qt::WFlags flags) - : QDialog(parent, flags) + QWidget *parent) + : QDialog(parent) , _gas(gas) , _handler(handler) { diff --git a/step/gasgraphics.cc b/step/gasgraphics.cc --- a/step/gasgraphics.cc +++ b/step/gasgraphics.cc @@ -179,12 +179,12 @@ setFlag(QGraphicsItem::ItemIsMovable); //setExclusiveMoving(true); //setFlag(QGraphicsItem::ItemIsMovable); - //setAcceptsHoverEvents(true); + //setAcceptHoverEvents(true); //_centerHandler = new ArrowHandlerGraphicsItem(item, worldModel, this, // _item->metaObject()->property("measureRectCenter")); //_centerHandler->setVisible(false); setZValue(REGION_ZVALUE); - setAcceptsHoverEvents(true); + setAcceptHoverEvents(true); setOnHoverHandlerEnabled(true); } diff --git a/step/infobrowser.h b/step/infobrowser.h --- a/step/infobrowser.h +++ b/step/infobrowser.h @@ -37,7 +37,7 @@ Q_OBJECT public: - explicit InfoBrowser(WorldModel* worldModel, QWidget* parent = 0, Qt::WindowFlags flags = {}); + explicit InfoBrowser(WorldModel* worldModel, QWidget* parent = 0); public slots: void openUrl(const QUrl& url, bool clearHistory = false, bool fromHistory = false); diff --git a/step/infobrowser.cc b/step/infobrowser.cc --- a/step/infobrowser.cc +++ b/step/infobrowser.cc @@ -35,8 +35,8 @@ #include #include -InfoBrowser::InfoBrowser(WorldModel* worldModel, QWidget* parent, Qt::WindowFlags flags) - : QDockWidget(i18n("Context info"), parent, flags), +InfoBrowser::InfoBrowser(WorldModel* worldModel, QWidget* parent) + : QDockWidget(i18n("Context info"), parent), _worldModel(worldModel), _wikiJob(NULL), _wikiFromHistory(false), _selectionChanged(false) { QWidget* widget = new QWidget(this); diff --git a/step/itempalette.h b/step/itempalette.h --- a/step/itempalette.h +++ b/step/itempalette.h @@ -37,7 +37,7 @@ Q_OBJECT public: - explicit ItemPalette(WorldModel* worldModel, QWidget* parent = 0, Qt::WindowFlags flags = {}); + explicit ItemPalette(WorldModel* worldModel, QWidget* parent = 0); signals: void beginAddItem(const QString& name); diff --git a/step/itempalette.cc b/step/itempalette.cc --- a/step/itempalette.cc +++ b/step/itempalette.cc @@ -187,8 +187,8 @@ } }; -ItemPalette::ItemPalette(WorldModel* worldModel, QWidget* parent, Qt::WindowFlags flags) - : QDockWidget(i18n("Palette"), parent, flags), _worldModel(worldModel), _widget(0) +ItemPalette::ItemPalette(WorldModel* worldModel, QWidget* parent) + : QDockWidget(i18n("Palette"), parent), _worldModel(worldModel), _widget(0) { setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); //setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable); diff --git a/step/mainwindow.cc b/step/mainwindow.cc --- a/step/mainwindow.cc +++ b/step/mainwindow.cc @@ -44,10 +44,8 @@ #include #include #include -#include #include - -#include +#include #include #include @@ -59,6 +57,7 @@ #include #include #include +#include #include #include diff --git a/step/messageframe.h b/step/messageframe.h --- a/step/messageframe.h +++ b/step/messageframe.h @@ -34,7 +34,7 @@ enum Flag { CloseButton = 1, CloseTimer = 2 }; Q_DECLARE_FLAGS(Flags, Flag) - explicit MessageFrame(QWidget* parent = 0, Qt::WindowFlags f = {}); + explicit MessageFrame(QWidget* parent = 0); int showMessage(Type type, const QString& text, Flags flags = 0); int changeMessage(int id, Type type, const QString& text, Flags flags = 0); diff --git a/step/messageframe.cc b/step/messageframe.cc --- a/step/messageframe.cc +++ b/step/messageframe.cc @@ -26,8 +26,8 @@ #include #include -MessageFrame::MessageFrame(QWidget* parent, Qt::WindowFlags f) - : QFrame(parent, f), _lastId(0) +MessageFrame::MessageFrame(QWidget* parent) + : QFrame(parent), _lastId(0) { hide(); diff --git a/step/particlegraphics.cc b/step/particlegraphics.cc --- a/step/particlegraphics.cc +++ b/step/particlegraphics.cc @@ -31,7 +31,7 @@ Q_ASSERT(dynamic_cast(_item) != NULL); setFlag(QGraphicsItem::ItemIsSelectable); setFlag(QGraphicsItem::ItemIsMovable); - setAcceptsHoverEvents(true); + setAcceptHoverEvents(true); _lastArrowRadius = -1; _velocityHandler = new ArrowHandlerGraphicsItem(item, worldModel, this, _item->metaObject()->property("velocity")); diff --git a/step/polygongraphics.cc b/step/polygongraphics.cc --- a/step/polygongraphics.cc +++ b/step/polygongraphics.cc @@ -38,7 +38,7 @@ Q_ASSERT(dynamic_cast(_item) != NULL); setFlag(QGraphicsItem::ItemIsSelectable); setFlag(QGraphicsItem::ItemIsMovable); - setAcceptsHoverEvents(true); + setAcceptHoverEvents(true); _velocityHandler = new ArrowHandlerGraphicsItem(item, worldModel, this, _item->metaObject()->property("velocity")); _velocityHandler->setVisible(false); diff --git a/step/propertiesbrowser.h b/step/propertiesbrowser.h --- a/step/propertiesbrowser.h +++ b/step/propertiesbrowser.h @@ -60,7 +60,7 @@ Q_OBJECT public: - explicit PropertiesBrowser(WorldModel* worldModel, QWidget* parent = 0, Qt::WindowFlags flags = {}); + explicit PropertiesBrowser(WorldModel* worldModel, QWidget* parent = 0); public slots: void settingsChanged(); diff --git a/step/propertiesbrowser.cc b/step/propertiesbrowser.cc --- a/step/propertiesbrowser.cc +++ b/step/propertiesbrowser.cc @@ -89,6 +89,7 @@ void PropertiesBrowserModel::setObject(StepCore::Object* object) { + beginResetModel(); _object = object; _subRows.clear(); @@ -111,7 +112,7 @@ } } - reset(); + endResetModel(); } void PropertiesBrowserModel::emitDataChanged(bool dynamicOnly) @@ -272,11 +273,12 @@ } if(index.row() == 1 && dynamic_cast(_object)) { if(value.toString() != _object->metaObject()->className()) { + beginResetModel(); _worldModel->beginMacro(i18n("Change solver type")); _object = _worldModel->newSolver(value.toString() + "Solver"); Q_ASSERT(_object != NULL); _worldModel->endMacro(); - reset(); + endResetModel(); } } else { const StepCore::MetaProperty* p = _object->metaObject()->property(index.row()); @@ -667,8 +669,8 @@ return option; } -PropertiesBrowser::PropertiesBrowser(WorldModel* worldModel, QWidget* parent, Qt::WindowFlags flags) - : QDockWidget(i18n("Properties"), parent, flags) +PropertiesBrowser::PropertiesBrowser(WorldModel* worldModel, QWidget* parent) + : QDockWidget(i18n("Properties"), parent) { _worldModel = worldModel; _propertiesBrowserModel = new PropertiesBrowserModel(worldModel, this); diff --git a/step/softbodygraphics.cc b/step/softbodygraphics.cc --- a/step/softbodygraphics.cc +++ b/step/softbodygraphics.cc @@ -212,7 +212,7 @@ Q_ASSERT(dynamic_cast(_item) != NULL); setFlag(QGraphicsItem::ItemIsSelectable); setFlag(QGraphicsItem::ItemIsMovable); - setAcceptsHoverEvents(true); + setAcceptHoverEvents(true); setZValue(BODY_ZVALUE-1); _velocityHandler = new ArrowHandlerGraphicsItem(item, worldModel, this, _item->metaObject()->property("velocity"), diff --git a/step/stepgraphicsitem.h b/step/stepgraphicsitem.h --- a/step/stepgraphicsitem.h +++ b/step/stepgraphicsitem.h @@ -152,7 +152,7 @@ bool isOnHoverHandlerEnabled() const { return _onHoverHandlerEnabled; } /** Set to true in order to enable on-hover handler. - * \note You should also call setAcceptsHoverEvents(true) in order + * \note You should also call setAcceptHoverEvents(true) in order * for on-hover handler to work */ void setOnHoverHandlerEnabled(bool enabled); diff --git a/step/stepgraphicsitem.cc b/step/stepgraphicsitem.cc --- a/step/stepgraphicsitem.cc +++ b/step/stepgraphicsitem.cc @@ -164,7 +164,7 @@ void StepGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { // Workaround for bug in Qt - if (scene()->itemAt(event->scenePos()) != this) { + if (scene()->itemAt(event->scenePos(), QTransform()) != this) { event->ignore(); return; } @@ -185,7 +185,7 @@ { // Workaround for bug in Qt if (scene()->mouseGrabberItem() != this && - scene()->itemAt(event->scenePos()) != this) { + scene()->itemAt(event->scenePos(), QTransform()) != this) { event->ignore(); return; } @@ -242,7 +242,7 @@ void StepGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { // Workaround for bug in Qt - if (scene()->itemAt(event->scenePos()) != this) { + if (scene()->itemAt(event->scenePos(), QTransform()) != this) { event->ignore(); return; } @@ -606,7 +606,7 @@ _deleteTimer->setInterval(500); _deleteTimer->setSingleShot(true); _deleteTimerEnabled = false; - setAcceptsHoverEvents(true); + setAcceptHoverEvents(true); connect(_deleteTimer, SIGNAL(timeout()), this, SLOT(deleteLater())); } diff --git a/step/toolgraphics.cc b/step/toolgraphics.cc --- a/step/toolgraphics.cc +++ b/step/toolgraphics.cc @@ -70,7 +70,6 @@ #include #include #include -#include #include #include @@ -134,7 +133,7 @@ { setFlag(QGraphicsItem::ItemIsSelectable); setFlag(QGraphicsItem::ItemIsMovable); - setAcceptsHoverEvents(true); + setAcceptHoverEvents(true); _backgroundBrush = Qt::NoBrush; @@ -370,7 +369,7 @@ Q_ASSERT(dynamic_cast(_item) != NULL); setFlag(QGraphicsItem::ItemIsSelectable); setFlag(QGraphicsItem::ItemIsMovable); - setAcceptsHoverEvents(true); + setAcceptHoverEvents(true); _widget = new QWidget(); _widget->setPalette(QPalette(Qt::lightGray)); @@ -900,7 +899,7 @@ Q_ASSERT(dynamic_cast(_item) != NULL); setFlag(QGraphicsItem::ItemIsSelectable); setFlag(QGraphicsItem::ItemIsMovable); - setAcceptsHoverEvents(true); + setAcceptHoverEvents(true); _plotWidget = new KPlotWidget(); _plotWidget->setPalette(QPalette(Qt::lightGray)); @@ -1246,7 +1245,7 @@ Q_ASSERT(dynamic_cast(_item) != NULL); setFlag(QGraphicsItem::ItemIsSelectable); setFlag(QGraphicsItem::ItemIsMovable); - setAcceptsHoverEvents(true); + setAcceptHoverEvents(true); setBackgroundBrush(QBrush(Qt::white)); _widget = new QFrame(); @@ -1409,7 +1408,7 @@ Q_ASSERT(dynamic_cast(_item) != NULL); setFlag(QGraphicsItem::ItemIsSelectable); setFlag(QGraphicsItem::ItemIsMovable); - setAcceptsHoverEvents(true); + setAcceptHoverEvents(true); setBackgroundBrush(QBrush(Qt::white)); _widget = new QWidget(); diff --git a/step/undobrowser.h b/step/undobrowser.h --- a/step/undobrowser.h +++ b/step/undobrowser.h @@ -30,7 +30,7 @@ Q_OBJECT public: - explicit UndoBrowser(WorldModel* worldModel, QWidget* parent = 0, Qt::WindowFlags flags = {}); + explicit UndoBrowser(WorldModel* worldModel, QWidget* parent = 0); public slots: void setEmptyLabel(const QString& label); diff --git a/step/undobrowser.cc b/step/undobrowser.cc --- a/step/undobrowser.cc +++ b/step/undobrowser.cc @@ -24,8 +24,8 @@ #include #include -UndoBrowser::UndoBrowser(WorldModel* worldModel, QWidget* parent, Qt::WindowFlags flags) - : QDockWidget(i18n("Undo history"), parent, flags), _worldModel(worldModel) +UndoBrowser::UndoBrowser(WorldModel* worldModel, QWidget* parent) + : QDockWidget(i18n("Undo history"), parent), _worldModel(worldModel) { _undoView = new QUndoView(_worldModel->undoStack(), this); setWidget(_undoView); diff --git a/step/worldbrowser.h b/step/worldbrowser.h --- a/step/worldbrowser.h +++ b/step/worldbrowser.h @@ -29,7 +29,7 @@ Q_OBJECT public: - explicit WorldBrowser(WorldModel* worldModel, QWidget* parent = 0, Qt::WindowFlags flags = {}); + explicit WorldBrowser(WorldModel* worldModel, QWidget* parent = 0); protected: WorldBrowserView* _worldBrowserView; diff --git a/step/worldbrowser.cc b/step/worldbrowser.cc --- a/step/worldbrowser.cc +++ b/step/worldbrowser.cc @@ -56,8 +56,8 @@ _macStyle = QApplication::style()->inherits("QMacStyle"); } -WorldBrowser::WorldBrowser(WorldModel* worldModel, QWidget* parent, Qt::WindowFlags flags) - : QDockWidget(i18nc("Object list", "World"), parent, flags) +WorldBrowser::WorldBrowser(WorldModel* worldModel, QWidget* parent) + : QDockWidget(i18nc("Object list", "World"), parent) { _worldBrowserView = new WorldBrowserView(this); _worldBrowserView->header()->hide(); diff --git a/step/worldmodel.cc b/step/worldmodel.cc --- a/step/worldmodel.cc +++ b/step/worldmodel.cc @@ -262,8 +262,9 @@ PairInt current = indexToPair(_worldModel->_selectionModel->currentIndex()); */ + _worldModel->beginResetModel(); _newWorld = _worldModel->_world = new StepCore::World(*_oldWorld); - _worldModel->reset(); + _worldModel->endResetModel(); _startTime = _worldModel->formatProperty(_worldModel->_world, NULL, _worldModel->_world->metaObject()->property("time"), @@ -286,21 +287,23 @@ void CommandSimulate::redo() { if(_newWorld != _worldModel->_world) { + _worldModel->beginResetModel(); _worldModel->_world = _newWorld; _worldCopy = _oldWorld; - _worldModel->reset(); + _worldModel->endResetModel(); _worldModel->_selectionModel->setCurrentIndex( _worldModel->worldIndex(), QItemSelectionModel::SelectCurrent); } } void CommandSimulate::undo() { + _worldModel->beginResetModel(); _worldModel->_world = _oldWorld; _worldCopy = _newWorld; - _worldModel->reset(); + _worldModel->endResetModel(); _worldModel->_selectionModel->setCurrentIndex( _worldModel->worldIndex(), QItemSelectionModel::SelectCurrent); } @@ -359,6 +362,7 @@ void WorldModel::resetWorld() { Q_ASSERT(!isSimulationActive()); + beginResetModel(); if(_world->name().isEmpty()) { // XXX: check that loaded items has unique names ! _world->setName(getUniqueName("world")); @@ -378,7 +382,7 @@ _undoStack->clear(); _world->doCalcFn(); - reset(); + endResetModel(); _selectionModel->setCurrentIndex(worldIndex(), QItemSelectionModel::SelectCurrent); diff --git a/step/worldscene.cc b/step/worldscene.cc --- a/step/worldscene.cc +++ b/step/worldscene.cc @@ -125,8 +125,7 @@ { prepareGeometryChange(); _viewScale = static_cast(scene())->currentViewScale(); - resetMatrix(); - scale(1/_viewScale, -1/_viewScale); + setTransform(QTransform::fromScale(1/_viewScale, -1/_viewScale), false); } WorldScene::WorldScene(WorldModel* worldModel, QObject* parent) @@ -230,7 +229,7 @@ void WorldScene::mousePressEvent(QGraphicsSceneMouseEvent* mouseEvent) { - if(itemAt(mouseEvent->scenePos()) == NULL) { + if(itemAt(mouseEvent->scenePos(), QTransform()) == NULL) { // XXX: how to easily select World ? //_worldModel->selectionModel()->clearSelection(); _worldModel->selectionModel()->setCurrentIndex(_worldModel->worldIndex(), QItemSelectionModel::Clear);