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, Qt::WindowFlags flags=0); Ui::WidgetCreateGasParticles *ui(); diff --git a/step/gascreationdialog.cc b/step/gascreationdialog.cc --- a/step/gascreationdialog.cc +++ b/step/gascreationdialog.cc @@ -35,7 +35,7 @@ GasCreationDialog::GasCreationDialog(GasMenuHandler* handler, StepCore::Gas *gas, - QWidget *parent, Qt::WFlags flags) + QWidget *parent, Qt::WindowFlags flags) : QDialog(parent, flags) , _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/mainwindow.cc b/step/mainwindow.cc --- a/step/mainwindow.cc +++ b/step/mainwindow.cc @@ -44,10 +44,10 @@ #include #include #include -#include +#include #include -#include +#include #include #include 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.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()); 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/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,10 +287,11 @@ 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); } @@ -297,10 +299,11 @@ 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 @@ -126,7 +126,7 @@ prepareGeometryChange(); _viewScale = static_cast(scene())->currentViewScale(); resetMatrix(); - scale(1/_viewScale, -1/_viewScale); + setTransform(QTransform::fromScale(1/_viewScale, -1/_viewScale), true); } WorldScene::WorldScene(WorldModel* worldModel, QObject* parent) @@ -230,7 +230,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);