View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0016861 | Scribus | Build System | public | 2022-11-19 15:04 | 2023-05-29 18:56 |
| Reporter | fsimonis | Assigned To | jghali | ||
| Priority | normal | Severity | block | Reproducibility | have not tried |
| Status | closed | Resolution | fixed | ||
| Product Version | 1.7.0.svn | ||||
| Fixed in Version | 1.7.0.svn | ||||
| Summary | 0016861: Port of AdapterWidget to Qt6 | ||||
| Description | The ui/AdapterWidget is currently implemented as a QGLWidget, which was removed in Qt6. The provided patch ports the implementation of the AdapterWidget to using OpenGLWidget instead of QGLWidget. It also adds OpenGLWidgets to the Qt dependencies. | ||||
| Additional Information | The patch has only been tested on an updated Arch Linux install with Qt6 installed. | ||||
| Tags | No tags attached. | ||||
| Attached Files | 0001-Port-QGL-to-Gt6.patch (5,771 bytes)
From 816ca3148057b2c945f60edffca67f8187bf3a19 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Simonis?= <simonisfrederic@gmail.com>
Date: Sat, 19 Nov 2022 15:57:14 +0100
Subject: [PATCH] Port QGL to Gt6
---
CMakeLists_Dependencies.cmake | 4 ++++
scribus/CMakeLists.txt | 1 +
scribus/ui/AdapterWidget.cpp | 2 +-
scribus/ui/AdapterWidget.h | 7 ++++---
scribus/ui/osgeditor.cpp | 8 ++++----
5 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/CMakeLists_Dependencies.cmake b/CMakeLists_Dependencies.cmake
index 3634100..b45d8ec 100644
--- a/CMakeLists_Dependencies.cmake
+++ b/CMakeLists_Dependencies.cmake
@@ -31,6 +31,10 @@ find_package(Qt6 COMPONENTS OpenGL REQUIRED)
include_directories(${Qt6OpenGL_INCLUDE_DIRS})
add_definitions(${Qt6OpenGL_DEFINITIONS})
+find_package(Qt6 COMPONENTS OpenGLWidgets REQUIRED)
+include_directories(${Qt6OpenGLWidgets_INCLUDE_DIRS})
+add_definitions(${Qt6OpenGLWidgets_DEFINITIONS})
+
find_package(Qt6 COMPONENTS PrintSupport REQUIRED)
include_directories(${Qt6PrintSupport_INCLUDE_DIRS})
add_definitions(${Qt6PrintSupport_DEFINITIONS})
diff --git a/scribus/CMakeLists.txt b/scribus/CMakeLists.txt
index e22db44..9e82181 100644
--- a/scribus/CMakeLists.txt
+++ b/scribus/CMakeLists.txt
@@ -771,6 +771,7 @@ target_link_libraries(${EXE_NAME}
Qt6::Xml
Qt6::PrintSupport
Qt6::OpenGL
+ Qt6::OpenGLWidgets
)
target_link_libraries(${EXE_NAME}
diff --git a/scribus/ui/AdapterWidget.cpp b/scribus/ui/AdapterWidget.cpp
index 16a21d2..d68cf81 100644
--- a/scribus/ui/AdapterWidget.cpp
+++ b/scribus/ui/AdapterWidget.cpp
@@ -33,7 +33,7 @@ for which a new license (GPL+exception) is in place.
#include "iconmanager.h"
#include "AdapterWidget.h"
-AdapterWidget::AdapterWidget ( QWidget * parent, const char * name, const QGLWidget * shareWidget) : QGLWidget ( parent, shareWidget)
+AdapterWidget::AdapterWidget ( QWidget * parent, const char * name) : QOpenGLWidget ( parent )
{
_gw = new osgViewer::GraphicsWindowEmbedded ( 0,0,width(),height() );
setFocusPolicy ( Qt::ClickFocus );
diff --git a/scribus/ui/AdapterWidget.h b/scribus/ui/AdapterWidget.h
index a797b13..59fb71f 100644
--- a/scribus/ui/AdapterWidget.h
+++ b/scribus/ui/AdapterWidget.h
@@ -18,14 +18,15 @@ for which a new license (GPL+exception) is in place.
#include <QtCore>
#include <QtGui>
#include <QtOpenGL>
+#include <QOpenGLWidget>
#include <osgViewer/Viewer>
#include <osg/Vec3>
-class AdapterWidget : public QGLWidget
+class AdapterWidget : public QOpenGLWidget
{
Q_OBJECT
public:
- AdapterWidget ( QWidget* parent = nullptr, const char * name = 0, const QGLWidget * shareWidget = 0);
+ AdapterWidget ( QWidget* parent = nullptr, const char * name = 0);
virtual ~AdapterWidget() {}
@@ -53,7 +54,7 @@ class AdapterWidget : public QGLWidget
class ViewerQT : public osgViewer::Viewer, public AdapterWidget
{
public:
- ViewerQT ( QWidget* parent = nullptr, const char * name = 0, const QGLWidget * shareWidget = 0) : AdapterWidget ( parent, name, shareWidget)
+ ViewerQT ( QWidget* parent = nullptr, const char * name = 0) : AdapterWidget ( parent, name )
{
getCamera()->setViewport ( new osg::Viewport ( 0,0,width(),height() ) );
getCamera()->setProjectionMatrixAsPerspective ( 30.0f, static_cast<double> ( width() ) /static_cast<double> ( height() ), 1.0f, 10000.0f );
diff --git a/scribus/ui/osgeditor.cpp b/scribus/ui/osgeditor.cpp
index fe437c1..ddd5fba 100644
--- a/scribus/ui/osgeditor.cpp
+++ b/scribus/ui/osgeditor.cpp
@@ -111,7 +111,7 @@ OSGEditorDialog::OSGEditorDialog(QWidget* parent, PageItem_OSGFrame *frame, QStr
drawingarea->getCamera()->getProjectionMatrixAsPerspective(fovy, aspectRatio, zNear, zFar);
drawingarea->getCamera()->setProjectionMatrixAsPerspective(currentView.angleFOV, aspectRatio, zNear, zFar);
changeRenderMode(static_cast<int>(currentView.rendermode));
- drawingarea->updateGL();
+ drawingarea->update();
connect(drawingarea, SIGNAL(mouseMoved()), this, SLOT(reportCamera()));
connect(viewCombo, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(changeView(QString)));
connect(buttonAddView, SIGNAL(clicked()), this, SLOT(addView()));
@@ -185,7 +185,7 @@ void OSGEditorDialog::clearDisplay()
void OSGEditorDialog::setCameraValues()
{
drawingarea->getCamera()->setProjectionMatrixAsPerspective(fovAngle->value(), static_cast<double>(drawingarea->width()) / static_cast<double>(drawingarea->height()), 1.0f, 10000.0f );
- drawingarea->updateGL();
+ drawingarea->update();
currentView.angleFOV = fovAngle->value();
}
@@ -219,7 +219,7 @@ void OSGEditorDialog::changeView(QString viewName)
drawingarea->getCamera()->getProjectionMatrixAsPerspective(fovy, aspectRatio, zNear, zFar);
drawingarea->getCamera()->setProjectionMatrixAsPerspective(currentView.angleFOV, aspectRatio, zNear, zFar);
changeRenderMode(static_cast<int>(currentView.rendermode));
- drawingarea->updateGL();
+ drawingarea->update();
connect(fovAngle, SIGNAL(valueChanged(double)), this, SLOT(setCameraValues()));
connect(renderStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeRenderMode(int)));
connect(lightStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLightMode(int)));
@@ -649,7 +649,7 @@ void OSGEditorDialog::accept()
currentView.illumination = static_cast<PageItem_OSGFrame::LightType>(lightStyleCombo->currentIndex());
currentView.rendermode = static_cast<PageItem_OSGFrame::RenderType>(renderStyleCombo->currentIndex());
currItem->modelFile = modelFile;
- QImage image = drawingarea->grabFrameBuffer();
+ QImage image = drawingarea->grabFramebuffer();
currItem->setImage(image);
viewMap[currentViewName] = currentView;
currItem->viewMap = viewMap;
--
2.38.1
| ||||
| Patch | Yes | ||||
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2022-11-19 15:04 | fsimonis | New Issue | |
| 2022-11-19 15:04 | fsimonis | File Added: 0001-Port-QGL-to-Gt6.patch | |
| 2022-11-19 18:40 | jghali | Summary | Port of QOpenGLWidget to QT6 => Port of AdapterWidget to Qt6 |
| 2022-11-19 19:05 | jghali | Assigned To | => jghali |
| 2022-11-19 19:05 | jghali | Status | new => resolved |
| 2022-11-19 19:05 | jghali | Resolution | open => fixed |
| 2022-11-19 19:05 | jghali | Fixed in Version | => 1.7.0.svn |
| 2022-11-19 19:05 | jghali | Note Added: 0049811 | |
| 2023-05-29 18:56 | cbradney | Status | resolved => closed |