diff mbox series

[1/1] kconfig: port qconf to work with Qt6 in addition to Qt5

Message ID 20230724074625.458456-2-boris@codesynthesis.com (mailing list archive)
State New, archived
Headers show
Series kconfig: port qconf to work with Qt6 in addition to Qt5 | expand

Commit Message

Boris Kolpackov July 24, 2023, 7:46 a.m. UTC
Tested with Qt5 5.15 and Qt6 6.4. Note that earlier versions of Qt5
are no longer guaranteed to work.

Signed-off-by: Boris Kolpackov <boris@codesynthesis.com>
---
 scripts/kconfig/qconf.cc | 40 ++++++++++++++++++++++++++--------------
 1 file changed, 26 insertions(+), 14 deletions(-)

Comments

Randy Dunlap July 25, 2023, 3:10 a.m. UTC | #1
On 7/24/23 00:46, Boris Kolpackov wrote:
> Tested with Qt5 5.15 and Qt6 6.4. Note that earlier versions of Qt5
> are no longer guaranteed to work.

Was there such a guarantee somewhere?

> 
> Signed-off-by: Boris Kolpackov <boris@codesynthesis.com>

Acked-by: Randy Dunlap <rdunlap@infradead.org>
Tested-by: Randy Dunlap <rdunlap@infradead.org>

> ---
>  scripts/kconfig/qconf.cc | 40 ++++++++++++++++++++++++++--------------
>  1 file changed, 26 insertions(+), 14 deletions(-)

Thanks.
Boris Kolpackov July 25, 2023, 1:58 p.m. UTC | #2
Randy Dunlap <rdunlap@infradead.org> writes:

> On 7/24/23 00:46, Boris Kolpackov wrote:
>
> > Tested with Qt5 5.15 and Qt6 6.4. Note that earlier versions of Qt5
> > are no longer guaranteed to work.
> 
> Was there such a guarantee somewhere?

I don't believe there was anything explicit, but seeing that the
qconf source code hardly changed in the past couple of years, it
could have worked with earlier versions of Qt5 and some people
could have relied on that.


> Acked-by: Randy Dunlap <rdunlap@infradead.org>
> Tested-by: Randy Dunlap <rdunlap@infradead.org>

Thanks!
Masahiro Yamada July 29, 2023, 9:54 a.m. UTC | #3
On Tue, Jul 25, 2023 at 10:58 PM Boris Kolpackov
<boris@codesynthesis.com> wrote:
>
> Randy Dunlap <rdunlap@infradead.org> writes:
>
> > On 7/24/23 00:46, Boris Kolpackov wrote:
> >
> > > Tested with Qt5 5.15 and Qt6 6.4. Note that earlier versions of Qt5
> > > are no longer guaranteed to work.



This patch did not change scripts/kconfig/qconf-cfg.sh at all.
Hence, Qt5 is always linked.


Please change scripts/kconfig/qconf-cfg.sh so that:

  1. If Qt6 is installed, please link Qt6.
  2. If Qt6 is not installed but Qt5 is installed,
     please link Qt5



> >
> > Was there such a guarantee somewhere?
>
> I don't believe there was anything explicit, but seeing that the
> qconf source code hardly changed in the past couple of years, it
> could have worked with earlier versions of Qt5 and some people
> could have relied on that.
>
>
> > Acked-by: Randy Dunlap <rdunlap@infradead.org>
> > Tested-by: Randy Dunlap <rdunlap@infradead.org>
>
> Thanks!


A request to reviewers/testers:

  Please make sure you tested this
  with both Qt5 and Qt6.


To check the Qt version you are running:
  1.   'make xconfig'
 2. See  Help -> About


--
Best Regards
Masahiro Yamada
diff mbox series

Patch

diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc
index 78087b2..3a4d7a1 100644
--- a/scripts/kconfig/qconf.cc
+++ b/scripts/kconfig/qconf.cc
@@ -5,10 +5,11 @@ 
  */
 
 #include <QAction>
+#include <QActionGroup>
 #include <QApplication>
 #include <QCloseEvent>
 #include <QDebug>
-#include <QDesktopWidget>
+#include <QScreen>
 #include <QFileDialog>
 #include <QLabel>
 #include <QLayout>
@@ -17,6 +18,7 @@ 
 #include <QMenuBar>
 #include <QMessageBox>
 #include <QToolBar>
+#include <QRegularExpression>
 
 #include <stdlib.h>
 
@@ -1126,7 +1128,7 @@  QString ConfigInfoView::debug_info(struct symbol *sym)
 
 QString ConfigInfoView::print_filter(const QString &str)
 {
-	QRegExp re("[<>&\"\\n]");
+	QRegularExpression re("[<>&\"\\n]");
 	QString res = str;
 	for (int i = 0; (i = res.indexOf(re, i)) >= 0;) {
 		switch (res[i].toLatin1()) {
@@ -1322,15 +1324,15 @@  ConfigMainWindow::ConfigMainWindow(void)
 	int width, height;
 	char title[256];
 
-	QDesktopWidget *d = configApp->desktop();
 	snprintf(title, sizeof(title), "%s%s",
 		rootmenu.prompt->text,
 		""
 		);
 	setWindowTitle(title);
 
-	width = configSettings->value("/window width", d->width() - 64).toInt();
-	height = configSettings->value("/window height", d->height() - 64).toInt();
+	QRect g = configApp->primaryScreen()->geometry();
+	width = configSettings->value("/window width", g.width() - 64).toInt();
+	height = configSettings->value("/window height", g.height() - 64).toInt();
 	resize(width, height);
 	x = configSettings->value("/window x");
 	y = configSettings->value("/window y");
@@ -1379,17 +1381,17 @@  ConfigMainWindow::ConfigMainWindow(void)
 		this, &ConfigMainWindow::goBack);
 
 	QAction *quitAction = new QAction("&Quit", this);
-	quitAction->setShortcut(Qt::CTRL + Qt::Key_Q);
+	quitAction->setShortcut(Qt::CTRL | Qt::Key_Q);
 	connect(quitAction, &QAction::triggered,
 		this, &ConfigMainWindow::close);
 
 	QAction *loadAction = new QAction(QPixmap(xpm_load), "&Load", this);
-	loadAction->setShortcut(Qt::CTRL + Qt::Key_L);
+	loadAction->setShortcut(Qt::CTRL | Qt::Key_L);
 	connect(loadAction, &QAction::triggered,
 		this, &ConfigMainWindow::loadConfig);
 
 	saveAction = new QAction(QPixmap(xpm_save), "&Save", this);
-	saveAction->setShortcut(Qt::CTRL + Qt::Key_S);
+	saveAction->setShortcut(Qt::CTRL | Qt::Key_S);
 	connect(saveAction, &QAction::triggered,
 		this, &ConfigMainWindow::saveConfig);
 
@@ -1403,7 +1405,7 @@  ConfigMainWindow::ConfigMainWindow(void)
 	connect(saveAsAction, &QAction::triggered,
 		this, &ConfigMainWindow::saveConfigAs);
 	QAction *searchAction = new QAction("&Find", this);
-	searchAction->setShortcut(Qt::CTRL + Qt::Key_F);
+	searchAction->setShortcut(Qt::CTRL | Qt::Key_F);
 	connect(searchAction, &QAction::triggered,
 		this, &ConfigMainWindow::searchConfig);
 	singleViewAction = new QAction(QPixmap(xpm_single_view), "Single View", this);
@@ -1750,11 +1752,21 @@  void ConfigMainWindow::closeEvent(QCloseEvent* e)
 		e->accept();
 		return;
 	}
-	QMessageBox mb("qconf", "Save configuration?", QMessageBox::Warning,
-			QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape);
-	mb.setButtonText(QMessageBox::Yes, "&Save Changes");
-	mb.setButtonText(QMessageBox::No, "&Discard Changes");
-	mb.setButtonText(QMessageBox::Cancel, "Cancel Exit");
+
+	QMessageBox mb(QMessageBox::Icon::Warning, "qconf",
+		       "Save configuration?");
+
+	QPushButton *yb = mb.addButton(QMessageBox::Yes);
+	QPushButton *db = mb.addButton(QMessageBox::No);
+	QPushButton *cb = mb.addButton(QMessageBox::Cancel);
+
+	yb->setText("&Save Changes");
+	db->setText("&Discard Changes");
+	cb->setText("Cancel Exit");
+
+	mb.setDefaultButton(yb);
+	mb.setEscapeButton(cb);
+
 	switch (mb.exec()) {
 	case QMessageBox::Yes:
 		if (saveConfig())