OSDN Git Service

kconfig: qconf: fix support for the split view mode
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 2 Apr 2020 09:28:01 +0000 (11:28 +0200)
committerMasahiro Yamada <masahiroy@kernel.org>
Wed, 8 Apr 2020 15:13:45 +0000 (00:13 +0900)
At least on my tests (building against Qt5.13), it seems to
me that, since Kernel 3.14, the split view mode is broken.

Maybe it was not a top priority during the conversion time.

Anyway, this patch changes the logic in order to properly
support the split view mode and the single view mode.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
scripts/kconfig/qconf.cc
scripts/kconfig/qconf.h

index 3f7bee7..4f9c695 100644 (file)
@@ -742,7 +742,10 @@ void ConfigList::keyPressEvent(QKeyEvent* ev)
                type = menu->prompt ? menu->prompt->type : P_UNKNOWN;
                if (type == P_MENU && rootEntry != menu &&
                    mode != fullMode && mode != menuMode) {
-                       emit menuSelected(menu);
+                       if (mode == menuMode)
+                               emit menuSelected(menu);
+                       else
+                               emit itemSelected(menu);
                        break;
                }
        case Qt::Key_Space:
@@ -849,9 +852,12 @@ void ConfigList::mouseDoubleClickEvent(QMouseEvent* e)
        if (!menu)
                goto skip;
        ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
-       if (ptype == P_MENU && (mode == singleMode || mode == symbolMode))
-               emit menuSelected(menu);
-       else if (menu->sym)
+       if (ptype == P_MENU) {
+               if (mode == singleMode)
+                       emit itemSelected(menu);
+               else if (mode == symbolMode)
+                       emit menuSelected(menu);
+       } else if (menu->sym)
                changeValue(item);
 
 skip:
@@ -1503,6 +1509,8 @@ ConfigMainWindow::ConfigMainWindow(void)
                helpText, SLOT(setInfo(struct menu *)));
        connect(configList, SIGNAL(menuSelected(struct menu *)),
                SLOT(changeMenu(struct menu *)));
+       connect(configList, SIGNAL(itemSelected(struct menu *)),
+               SLOT(changeItens(struct menu *)));
        connect(configList, SIGNAL(parentSelected()),
                SLOT(goBack()));
        connect(menuList, SIGNAL(menuChanged(struct menu *)),
@@ -1599,15 +1607,26 @@ void ConfigMainWindow::searchConfig(void)
        searchWindow->show();
 }
 
-void ConfigMainWindow::changeMenu(struct menu *menu)
+void ConfigMainWindow::changeItens(struct menu *menu)
 {
        configList->setRootMenu(menu);
+
        if (configList->rootEntry->parent == &rootmenu)
                backAction->setEnabled(false);
        else
                backAction->setEnabled(true);
 }
 
+void ConfigMainWindow::changeMenu(struct menu *menu)
+{
+       menuList->setRootMenu(menu);
+
+       if (menuList->rootEntry->parent == &rootmenu)
+               backAction->setEnabled(false);
+       else
+               backAction->setEnabled(true);
+}
+
 void ConfigMainWindow::setMenuLink(struct menu *menu)
 {
        struct menu *parent;
@@ -1717,14 +1736,14 @@ void ConfigMainWindow::showSplitView(void)
        fullViewAction->setEnabled(true);
        fullViewAction->setChecked(false);
 
-       configList->mode = symbolMode;
+       configList->mode = menuMode;
        if (configList->rootEntry == &rootmenu)
                configList->updateListAll();
        else
                configList->setRootMenu(&rootmenu);
        configList->setAllOpen(true);
        configApp->processEvents();
-       menuList->mode = menuMode;
+       menuList->mode = symbolMode;
        menuList->setRootMenu(&rootmenu);
        menuList->setAllOpen(true);
        menuView->show();
index 45bfe9b..c879d79 100644 (file)
@@ -71,6 +71,7 @@ public slots:
 signals:
        void menuChanged(struct menu *menu);
        void menuSelected(struct menu *menu);
+       void itemSelected(struct menu *menu);
        void parentSelected(void);
        void gotFocus(struct menu *);
 
@@ -298,6 +299,7 @@ public:
        ConfigMainWindow(void);
 public slots:
        void changeMenu(struct menu *);
+       void changeItens(struct menu *);
        void setMenuLink(struct menu *);
        void listFocusChanged(void);
        void goBack(void);