changeset 31770:1d1eff97670e

revise parentage of GLWidget object (bug #63697) * Canvas.h (Canvas): Revert previous change in inheritance. Inherit from QObject, not QWidget. * GLCanvas.h, GLCanvas.cc (GLWidget::GLWidget): Also accept QWidget parent and pass it to QOpenGLWidget constructor. (GLCanvas::GLCanvas): Pass QWidget parent to GLWidget constructor, not, Canvas.
author John W. Eaton <jwe@octave.org>
date Tue, 24 Jan 2023 16:17:31 -0500
parents 56223b5a01d4
children 21f9b34eb893
files libgui/graphics/Canvas.h libgui/graphics/GLCanvas.cc libgui/graphics/GLCanvas.h
diffstat 3 files changed, 8 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/graphics/Canvas.h	Sun Jan 22 21:09:15 2023 -0500
+++ b/libgui/graphics/Canvas.h	Tue Jan 24 16:17:31 2023 -0500
@@ -26,7 +26,7 @@
 #if ! defined (octave_Canvas_h)
 #define octave_Canvas_h 1
 
-#include <QWidget>
+#include <QObject>
 #include <QPoint>
 
 #include "event-manager.h"
@@ -45,7 +45,7 @@
 
   class interpreter;
 
-  class Canvas : public QWidget
+  class Canvas : public QObject
   {
     Q_OBJECT
 
@@ -113,9 +113,8 @@
 
   protected:
 
-    Canvas (octave::interpreter& interp, const graphics_handle& handle,
-            QWidget *parent)
-      : QWidget (parent), m_interpreter (interp), m_handle (handle),
+    Canvas (octave::interpreter& interp, const graphics_handle& handle)
+      : QObject (), m_interpreter (interp), m_handle (handle),
         m_redrawBlocked (false), m_mouseMode (NoMode), m_clickMode (false),
         m_eventMask (0), m_rectMode (false)
     { }
--- a/libgui/graphics/GLCanvas.cc	Sun Jan 22 21:09:15 2023 -0500
+++ b/libgui/graphics/GLCanvas.cc	Tue Jan 24 16:17:31 2023 -0500
@@ -37,8 +37,8 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-  GLWidget::GLWidget (Canvas &parent_canvas)
-    : QOpenGLWidget (&parent_canvas), m_parent_canvas (parent_canvas),
+  GLWidget::GLWidget (Canvas& parent_canvas, QWidget *parent)
+    : QOpenGLWidget (parent), m_parent_canvas (parent_canvas),
       m_glfcns (), m_renderer (m_glfcns)
   {
     setFocusPolicy (Qt::ClickFocus);
@@ -297,7 +297,7 @@
 
   GLCanvas::GLCanvas (octave::interpreter& interp,
                       const graphics_handle& gh, QWidget *parent)
-    : Canvas (interp, gh, parent), m_glwidget (new GLWidget (*this))
+    : Canvas (interp, gh), m_glwidget (new GLWidget (*this, parent))
   { }
 
   GLCanvas::~GLCanvas (void)
--- a/libgui/graphics/GLCanvas.h	Sun Jan 22 21:09:15 2023 -0500
+++ b/libgui/graphics/GLCanvas.h	Tue Jan 24 16:17:31 2023 -0500
@@ -44,7 +44,7 @@
 
   public:
 
-    GLWidget (Canvas& parent_canvas);
+    GLWidget (Canvas& parent_canvas, QWidget *parent);
 
     ~GLWidget (void);