From 2c898011cfb94c8b629a96b494e652a2f39c1544 Mon Sep 17 00:00:00 2001 From: Szymon Tomasz Stefanek Date: Fri, 2 Jan 2015 17:18:58 +0000 Subject: Make options dialogs modal. Fixes ugly focus issues. git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@6431 17fca916-40b9-46aa-a4ea-0a15b648b75c --- src/modules/options/OptionsDialog.cpp | 4 ++-- src/modules/options/OptionsDialog.h | 5 +++-- src/modules/options/OptionsWidgetContainer.cpp | 2 +- src/modules/options/OptionsWidgetContainer.h | 4 ++-- src/modules/options/libkvioptions.cpp | 11 +++++++---- 5 files changed, 15 insertions(+), 11 deletions(-) (limited to 'src/modules') diff --git a/src/modules/options/OptionsDialog.cpp b/src/modules/options/OptionsDialog.cpp index 5806005f8..99fd32dec 100644 --- a/src/modules/options/OptionsDialog.cpp +++ b/src/modules/options/OptionsDialog.cpp @@ -60,7 +60,7 @@ extern KVIRC_API KviApplication * g_pApp; extern OptionsInstanceManager * g_pOptionsInstanceManager; OptionsDialogFrontWidget::OptionsDialogFrontWidget(QWidget *parent,const QString &szText) -:KviOptionsWidget(parent) + :KviOptionsWidget(parent) { setObjectName("general_options_front_widget"); createLayout(); @@ -100,7 +100,7 @@ OptionsDialogTreeWidgetItem::~OptionsDialogTreeWidgetItem() } OptionsDialog::OptionsDialog(QWidget * par,const QString &szGroup) -: QWidget(par) +: QDialog(par) { setObjectName("general_options_dialog"); diff --git a/src/modules/options/OptionsDialog.h b/src/modules/options/OptionsDialog.h index d667f0fec..d3f7b98bc 100644 --- a/src/modules/options/OptionsDialog.h +++ b/src/modules/options/OptionsDialog.h @@ -31,6 +31,7 @@ #include #include +#include #include #include #include @@ -59,7 +60,7 @@ public: KviOptionsWidget * m_pOptionsWidget; }; -class OptionsDialog : public QWidget +class OptionsDialog : public QDialog { Q_OBJECT public: @@ -69,7 +70,7 @@ private: QTreeWidget * m_pTreeWidget; QLabel * m_pCategoryLabel; QStackedWidget * m_pWidgetStack; - OptionsDialogFrontWidget * m_pFrontWidget; + OptionsDialogFrontWidget * m_pFrontWidget; QString m_szGroup; QLineEdit * m_pSearchLineEdit; QToolButton * m_pSearchButton; diff --git a/src/modules/options/OptionsWidgetContainer.cpp b/src/modules/options/OptionsWidgetContainer.cpp index 353811eae..9c39fbf84 100644 --- a/src/modules/options/OptionsWidgetContainer.cpp +++ b/src/modules/options/OptionsWidgetContainer.cpp @@ -43,7 +43,7 @@ extern OptionsInstanceManager * g_pOptionsInstanceManager; OptionsWidgetContainer::OptionsWidgetContainer(QWidget * par,bool bModal) -: QWidget(par) +: QDialog(par) { m_pLayout = new QGridLayout(this); diff --git a/src/modules/options/OptionsWidgetContainer.h b/src/modules/options/OptionsWidgetContainer.h index ae5b2dcc3..7b222a02e 100644 --- a/src/modules/options/OptionsWidgetContainer.h +++ b/src/modules/options/OptionsWidgetContainer.h @@ -26,12 +26,12 @@ #include "KviOptionsWidget.h" -#include +#include class QPushButton; class QGridLayout; -class OptionsWidgetContainer : public QWidget +class OptionsWidgetContainer : public QDialog { Q_OBJECT public: diff --git a/src/modules/options/libkvioptions.cpp b/src/modules/options/libkvioptions.cpp index 8205591f8..a3d15a060 100644 --- a/src/modules/options/libkvioptions.cpp +++ b/src/modules/options/libkvioptions.cpp @@ -128,6 +128,7 @@ static bool options_kvs_cmd_dialog(KviKvsModuleCommandCall * c) } g_pOptionsDialogDict->insert(szGroup,d); } + d->setModal(true); d->raise(); d->show(); d->setFocus(); @@ -181,7 +182,7 @@ static bool options_kvs_cmd_pages(KviKvsModuleCommandCall * c) @type: command @title: - options.edit [-m] + options.edit [-n] @short: Shows a single options page @syntax: @@ -189,8 +190,7 @@ static bool options_kvs_cmd_pages(KviKvsModuleCommandCall * c) @description: Shows an options page as toplevel dialog. The available option pages can be listed by using [cmd]options.pages[/cmd]. - If the -m switch is used, the dialog will appear as modal, blocking input - to the main frame until it's closed. + If the -n switch is used then dialog will appear as NON modal (will not block input). @seealso: */ @@ -200,6 +200,7 @@ static bool options_kvs_cmd_edit(KviKvsModuleCommandCall * c) KVSM_PARAMETERS_BEGIN(c) KVSM_PARAMETER("option",KVS_PT_STRING,0,szOption) KVSM_PARAMETERS_END(c) + OptionsWidgetInstanceEntry * e = g_pOptionsInstanceManager->findInstanceEntry(szOption.toUtf8().data()); if(!e) { @@ -217,11 +218,13 @@ static bool options_kvs_cmd_edit(KviKvsModuleCommandCall * c) OptionsWidgetContainer * wc = new OptionsWidgetContainer( 0, - c->hasSwitch('m',"modal") + !c->hasSwitch('n',"non-modal") ); wc->setup(g_pOptionsInstanceManager->getInstance(e,wc)); + //wc->setModal(true); + // a trick for the dialog covering the splash screen before the time (this is prolly a WM or Qt bug) if(g_pSplashScreen) { -- cgit v1.3.1-10-gc9f91