Skip to content

Commit 155819c

Browse files
committed
refactor: replace QQuickView with QQuickWidget for Kanban view
Qt docs note that QWidget::createWindowContainer has a number of known limitations, with one of them being focus handling. [1] On Wayland, that limitation seems to be preventing us from typing anything into the Kanban view, because it never gains focus. [1] https://doc.qt.io/qt-6/qwidget.html#createWindowContainer
1 parent 1585918 commit 155819c

File tree

4 files changed

+14
-12
lines changed

4 files changed

+14
-12
lines changed

CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ set(QT_COMPONENTS
5959
Sql
6060
Test
6161
Widgets
62-
Quick)
62+
Quick
63+
QuickWidgets)
6364

6465
message(STATUS "Trying to find Qt 6...")
6566
find_package(QT NAMES Qt6 QUIET)
@@ -367,7 +368,8 @@ target_link_libraries(
367368
Qt${QT_VERSION_MAJOR}::Sql
368369
Qt${QT_VERSION_MAJOR}::Widgets
369370
Qt${QT_VERSION_MAJOR}::WidgetsPrivate
370-
Qt${QT_VERSION_MAJOR}::Quick)
371+
Qt${QT_VERSION_MAJOR}::Quick
372+
Qt${QT_VERSION_MAJOR}::QuickWidgets)
371373

372374
if(APPLE)
373375
set(COPYRIGHT_TEXT

packaging/windows/Notes_Inno_Script_Github.iss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ Source: "{#SourcePath}\Notes64\Qt6QuickLayouts.dll"; DestDir: "{app}"; Flags: ig
182182
Source: "{#SourcePath}\Notes64\Qt6QuickParticles.dll"; DestDir: "{app}"; Flags: ignoreversion; Check: IsWin64; MinVersion: 10.0.17763
183183
Source: "{#SourcePath}\Notes64\Qt6QuickShapes.dll"; DestDir: "{app}"; Flags: ignoreversion; Check: IsWin64; MinVersion: 10.0.17763
184184
Source: "{#SourcePath}\Notes64\Qt6QuickTemplates2.dll"; DestDir: "{app}"; Flags: ignoreversion; Check: IsWin64; MinVersion: 10.0.17763
185+
Source: "{#SourcePath}\Notes64\Qt6QuickWidgets.dll"; DestDir: "{app}"; Flags: ignoreversion; Check: IsWin64; MinVersion: 10.0.17763
185186
Source: "{#SourcePath}\Notes64\Qt6Sql.dll"; DestDir: "{app}"; Flags: ignoreversion; Check: IsWin64; MinVersion: 10.0.17763
186187
Source: "{#SourcePath}\Notes64\Qt6Svg.dll"; DestDir: "{app}"; Flags: ignoreversion; Check: IsWin64; MinVersion: 10.0.17763
187188
Source: "{#SourcePath}\Notes64\Qt6Widgets.dll"; DestDir: "{app}"; Flags: ignoreversion; Check: IsWin64; MinVersion: 10.0.17763

src/mainwindow.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@ MainWindow::MainWindow(QWidget *parent)
6666
m_treeModel(new NodeTreeModel(this)),
6767
m_treeViewLogic(nullptr),
6868
#if QT_VERSION >= QT_VERSION_CHECK(6, 2, 0)
69-
m_kanbanQuickView(nullptr),
70-
m_kanbanWidget(this),
69+
m_kanbanWidget(nullptr),
7170
#endif
7271
m_editorSettingsQuickView(nullptr),
7372
m_editorSettingsWidget(new QWidget(this)),
@@ -1205,11 +1204,11 @@ void MainWindow::setupKanbanView()
12051204
// https://doc.qt.io/qt-6/qtquick-quickwidgets-qquickwidgetversuswindow-opengl-example.html
12061205

12071206
QUrl source("qrc:/qt/qml/kanbanMain.qml");
1208-
m_kanbanQuickView.rootContext()->setContextProperty("noteEditorLogic", m_noteEditorLogic);
1209-
m_kanbanQuickView.rootContext()->setContextProperty("mainWindow", this);
1210-
m_kanbanQuickView.setSource(source);
1211-
m_kanbanQuickView.setResizeMode(QQuickView::SizeRootObjectToView);
1212-
m_kanbanWidget = QWidget::createWindowContainer(&m_kanbanQuickView, this);
1207+
m_kanbanWidget = new QQuickWidget(this);
1208+
m_kanbanWidget->rootContext()->setContextProperty("noteEditorLogic", m_noteEditorLogic);
1209+
m_kanbanWidget->rootContext()->setContextProperty("mainWindow", this);
1210+
m_kanbanWidget->setSource(source);
1211+
m_kanbanWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
12131212
m_kanbanWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
12141213
m_kanbanWidget->hide();
12151214
m_ui->verticalLayout_textEdit->insertWidget(m_ui->verticalLayout_textEdit->indexOf(m_textEdit), m_kanbanWidget);
@@ -1626,7 +1625,7 @@ void MainWindow::setupModelView()
16261625
m_treeViewLogic = new TreeViewLogic(m_treeView, m_treeModel, m_dbManager, m_listView, this);
16271626
#if QT_VERSION >= QT_VERSION_CHECK(6, 2, 0)
16281627
m_noteEditorLogic = new NoteEditorLogic(m_textEdit, m_editorDateLabel, m_searchEdit, m_kanbanWidget, m_ui->tagListView, m_tagPool, m_dbManager, this);
1629-
m_kanbanQuickView.rootContext()->setContextProperty("noteEditorLogic", m_noteEditorLogic);
1628+
m_kanbanWidget->rootContext()->setContextProperty("noteEditorLogic", m_noteEditorLogic);
16301629
#else
16311630
m_noteEditorLogic = new NoteEditorLogic(m_textEdit, m_editorDateLabel, m_searchEdit, m_ui->tagListView, m_tagPool, m_dbManager, this);
16321631
#endif

src/mainwindow.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include <QtGlobal>
2727
#include <QWidget>
2828
#include <QQuickView>
29+
#include <QQuickWidget>
2930
#include <QQmlContext>
3031
#include <QVariant>
3132
#include <QJsonObject>
@@ -168,8 +169,7 @@ public slots:
168169
NodeTreeModel *m_treeModel;
169170
TreeViewLogic *m_treeViewLogic;
170171
#if QT_VERSION >= QT_VERSION_CHECK(6, 2, 0)
171-
QQuickView m_kanbanQuickView;
172-
QWidget *m_kanbanWidget;
172+
QQuickWidget *m_kanbanWidget;
173173
#endif
174174
QQuickView m_editorSettingsQuickView;
175175
QWidget *m_editorSettingsWidget;

0 commit comments

Comments
 (0)