From cb720fae50b1b44ad760f02cb32a68587bc53dd0 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 3 May 2014 23:39:04 +0200 Subject: [PATCH] + fixes #0001517: Problem with constraint menu not displaying properly if moved (overwrites the background) --- src/Mod/Sketcher/Gui/EditDatumDialog.cpp | 8 +++----- src/Mod/Sketcher/Gui/EditDatumDialog.h | 6 +++--- src/Mod/Sketcher/Gui/ViewProviderSketch.cpp | 5 ++--- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/Mod/Sketcher/Gui/EditDatumDialog.cpp b/src/Mod/Sketcher/Gui/EditDatumDialog.cpp index fade42b3e..8d2b0815c 100644 --- a/src/Mod/Sketcher/Gui/EditDatumDialog.cpp +++ b/src/Mod/Sketcher/Gui/EditDatumDialog.cpp @@ -62,12 +62,10 @@ EditDatumDialog::EditDatumDialog(Sketcher::SketchObject* pcSketch, int ConstrNbr EditDatumDialog::~EditDatumDialog(){} -void EditDatumDialog::run(void * data, SoSensor * sensor) +void EditDatumDialog::customEvent(QEvent*) { - EditDatumDialog* self = reinterpret_cast(data); - self->exec(); - delete self; - delete sensor; + this->exec(); + this->deleteLater(); } void EditDatumDialog::exec(bool atCursor) diff --git a/src/Mod/Sketcher/Gui/EditDatumDialog.h b/src/Mod/Sketcher/Gui/EditDatumDialog.h index 2d0f97383..2fadb8197 100644 --- a/src/Mod/Sketcher/Gui/EditDatumDialog.h +++ b/src/Mod/Sketcher/Gui/EditDatumDialog.h @@ -22,7 +22,7 @@ #ifndef SKETCHERGUI_EditDatumDialog_H #define SKETCHERGUI_EditDatumDialog_H -class SoSensor; +#include namespace Sketcher { class Constraint; @@ -32,15 +32,15 @@ class SketchObject; namespace SketcherGui { class ViewProviderSketch; -class EditDatumDialog { +class EditDatumDialog : public QObject { Q_DECLARE_TR_FUNCTIONS(SketcherGui::EditDatumDialog) public: EditDatumDialog(ViewProviderSketch* vp, int ConstrNbr); EditDatumDialog(Sketcher::SketchObject* pcSketch, int ConstrNbr); ~EditDatumDialog(); - static void run(void * data, SoSensor * sensor); void exec(bool atCursor=true); + void customEvent(QEvent*); private: Sketcher::SketchObject* sketch; diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index 0506e7003..15eaaf536 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -52,7 +52,6 @@ # include # include # include -# include # include /// Qt Include Files @@ -876,9 +875,9 @@ void ViewProviderSketch::editDoubleClicked(void) Constr->Type == Sketcher::DistanceX || Constr->Type == Sketcher::DistanceY || Constr->Type == Sketcher::Radius || Constr->Type == Sketcher::Angle) { + // Coin's SoIdleSensor causes problems on some platform while Qt seems to work properly (#0001517) EditDatumDialog * editDatumDialog = new EditDatumDialog(this, edit->PreselectConstraint); - SoIdleSensor* sensor = new SoIdleSensor(EditDatumDialog::run, editDatumDialog); - sensor->schedule(); + QCoreApplication::postEvent(editDatumDialog, new QEvent(QEvent::User)); edit->editDatumDialog = true; // avoid to double handle "ESC" } }