Skip to content

Commit 8f40cd8

Browse files
mbernasocchipka
authored andcommitted
fixed closeEvent by subclassing QDockWidget instead of QgsGLWidgetAdapter
1 parent 34a7461 commit 8f40cd8

File tree

4 files changed

+38
-19
lines changed

4 files changed

+38
-19
lines changed

src/plugins/globe/globe_plugin.cpp

+2-4
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ void GlobePlugin::initGui()
113113
SLOT( projectReady() ) );
114114
connect( mQGisIface->mainWindow(), SIGNAL( newProjectCreated() ), this,
115115
SLOT( blankProjectReady() ) );
116-
connect( &viewer, SIGNAL( globeClosed() ), this,
116+
connect( &mQDockWidget, SIGNAL( globeClosed() ), this,
117117
SLOT( setGlobeNotRunning() ) );
118118

119119
}
@@ -741,9 +741,7 @@ void GlobePlugin::copyFolder( QString sourceFolder, QString destFolder )
741741

742742
void GlobePlugin::setGlobeNotRunning()
743743
{
744-
QMessageBox m;
745-
m.setText("globe not running");
746-
m.exec();
744+
QgsDebugMsg( "Globe Closed" );
747745
mIsGlobeRunning = false;
748746
}
749747

src/plugins/globe/globe_plugin.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
#include "globe_plugin_dialog.h"
2626
#include "Controls"
2727
#include <QObject>
28-
#include <QDockWidget>
2928
#include <osgEarth/MapNode>
3029
#include <osgEarth/MapLayer>
3130
#include <osgEarthUtil/EarthManipulator>
@@ -98,7 +97,7 @@ class GlobePlugin : public QObject, public QgisPlugin
9897
//! OSG Viewer
9998
QgsOsgViewer viewer;
10099
//! Dock widget for viewer
101-
QDockWidget mQDockWidget;
100+
QDockWidgetGlobe mQDockWidget;
102101
//! Settings Dialog
103102
QgsGlobePluginDialog mSettingsDialog;
104103
//! OSG root node

src/plugins/globe/qgsosgviewer.cpp

+16-10
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,22 @@
2323
#include <QString>
2424
#include <QMessageBox>
2525

26+
QDockWidgetGlobe::QDockWidgetGlobe(const QString &title, QWidget *parent, Qt::WindowFlags flags):
27+
QDockWidget(title, parent, flags)
28+
{
29+
};
30+
31+
QDockWidgetGlobe::QDockWidgetGlobe(QWidget *parent, Qt::WindowFlags flags):
32+
QDockWidget(parent, flags)
33+
{
34+
};
35+
36+
//reimplement the close event to emit a signal
37+
void QDockWidgetGlobe::closeEvent(QCloseEvent* event)
38+
{
39+
emit globeClosed();
40+
event->accept();
41+
}
2642

2743
QgsGLWidgetAdapter::QgsGLWidgetAdapter( QWidget * parent, const char * name, const QGLWidget * shareWidget, WindowFlags f):
2844
QGLWidget(parent, shareWidget, f)
@@ -85,13 +101,3 @@ void QgsGLWidgetAdapter::wheelEvent(QWheelEvent *event)
85101
{
86102
_gw->getEventQueue()->mouseScroll((event->delta()>0) ? osgGA::GUIEventAdapter::SCROLL_DOWN : osgGA::GUIEventAdapter::SCROLL_UP);
87103
}
88-
89-
//reimplement the close event to emit a signal
90-
void QgsGLWidgetAdapter::closeEvent(QCloseEvent *event)
91-
{
92-
QMessageBox m;
93-
m.setText("close event");
94-
m.exec();
95-
emit globeClosed();
96-
event->accept();
97-
}

src/plugins/globe/qgsosgviewer.h

+19-3
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,30 @@
2222
#include <osgViewer/Viewer>
2323

2424
#include <QtOpenGL/QGLWidget>
25+
#include <QtGui/QDockWidget>
2526
#include <QtGui/QKeyEvent>
2627
#include <QtCore/QTimer>
2728

2829
using Qt::WindowFlags;
2930

31+
class QDockWidgetGlobe : public QDockWidget
32+
{
33+
Q_OBJECT
34+
35+
public:
36+
QDockWidgetGlobe(const QString& title, QWidget* parent = 0, WindowFlags flags = 0);
37+
QDockWidgetGlobe(QWidget *parent = 0, Qt::WindowFlags flags = 0);
38+
39+
virtual ~QDockWidgetGlobe() {}
40+
41+
protected:
42+
virtual void closeEvent(QCloseEvent *event);
43+
44+
signals:
45+
void globeClosed();
46+
};
47+
48+
3049
class QgsGLWidgetAdapter : public QGLWidget
3150
{
3251
Q_OBJECT
@@ -49,12 +68,9 @@ class QgsGLWidgetAdapter : public QGLWidget
4968
virtual void mouseReleaseEvent( QMouseEvent* event );
5069
virtual void mouseMoveEvent( QMouseEvent* event );
5170
virtual void wheelEvent( QWheelEvent * event );
52-
virtual void closeEvent(QCloseEvent *event);
5371

5472
osg::ref_ptr<osgViewer::GraphicsWindowEmbedded> _gw;
5573

56-
signals:
57-
void globeClosed();
5874

5975
};
6076

0 commit comments

Comments
 (0)