Re: Search function in xconfig is partially broken after recent changes

From: Mauro Carvalho Chehab
Date: Thu Jun 25 2020 - 09:42:32 EST


Em Thu, 25 Jun 2020 12:59:15 +0200
Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> escreveu:

> Hi Maxim,
>
> Em Thu, 25 Jun 2020 12:25:10 +0300
> Maxim Levitsky <mlevitsk@xxxxxxxxxx> escreveu:
>
> > Hi!
> >
> > I noticed that on recent kernels the search function in xconfig is partially broken.
> > This means that when you select a found entry, it is not selected in the main window,
> > something that I often do to find some entry near the area I would like to modify,
> > and then use main window to navigate/explore that area.
> >
> > Reverting these commits helps restore the original behavier:
> >
> > b311142fcfd37b58dfec72e040ed04949eb1ac86 - kconfig: qconf: fix support for the split view mode
> > cce1faba82645fee899ccef5b7d3050fed3a3d10 - kconfig: qconf: fix the content of the main widget
> >
> > I have Qt5 5.13.2 from fedora 31 (5.13.2-1.fc31)
> >
> > Could you explain what these commits are supposed to fix?
> > I mostly use the split view mode too and it does appear to work for me with these commits reverted as well.

Btw, I did a quick hack that makes it partially work: it updates the
main window, but if you seek for two items at the same window, it doesn't
do the right thing. It is also not updating the split window yet.

I'll try to polish and fix it if I have more time.

Thanks,
Mauro


diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc
index c0ac8f7b5f1a..700731bf04b0 100644
--- a/scripts/kconfig/qconf.cc
+++ b/scripts/kconfig/qconf.cc
@@ -1645,12 +1645,15 @@ void ConfigMainWindow::setMenuLink(struct menu *menu)
return;
list->setRootMenu(parent);
break;
+ case menuMode:
case symbolMode:
- if (menu->flags & MENU_ROOT) {
+ if (!(menu->flags & MENU_ROOT)) {
+printf("Set root!\n");
configList->setRootMenu(menu);
configList->clearSelection();
list = menuList;
} else {
+printf("config list!\n");
list = configList;
parent = menu_get_parent_menu(menu->parent);
if (!parent)
@@ -1659,6 +1662,7 @@ void ConfigMainWindow::setMenuLink(struct menu *menu)
if (item) {
item->setSelected(true);
menuList->scrollToItem(item);
+ menuList->setFocus();
}
list->setRootMenu(parent);
}
@@ -1671,6 +1675,7 @@ void ConfigMainWindow::setMenuLink(struct menu *menu)
}

if (list) {
+printf("findConfigItem on list mode\n");
item = list->findConfigItem(menu);
if (item) {
item->setSelected(true);