Skip to content

Commit

Permalink
kconfig: qconf: make search fully work again on split mode
Browse files Browse the repository at this point in the history
When the search dialog box finds symbols/menus that match
the search criteria, it presents all results at the window.

Clicking on a search result should make qconf to navigate
to the selected item. This works on singleMode and on
fullMode, but on splitMode, the navigation is broken.

This was partially caused by an incomplete Qt5 conversion
and by the followup patches that restored the original
behavior.

When qconf is on split mode, it has to update both the
config and the menu views. Right now, such logic is broken,
as it is not seeking using the right structures.

On qconf, the screen is split into 3 parts:

	+------------+-------+
	|            |       |
	|   Config   | Menu  |
	|            |       |
	+------------+-------+
	|                    |
	|     ConfigInfo     |
	|                    |
	+--------------------+

On singleMode and on fullMode, the menuView is hidden, and search
updates only the configList (which controls the ConfigView).

On SplitMode, the search logic should detect if the variable is a
leaf or not. If it is a leaf, it should be presented at the menuView,
and both configList and menuList should be updated. Otherwise, just
the configList should be updated.

Link: https://lore.kernel.org/lkml/[email protected]/
Reported-by: Maxim Levitsky <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
Signed-off-by: Masahiro Yamada <[email protected]>
  • Loading branch information
mchehab authored and masahir0y committed Jul 1, 2020
1 parent cf81dfa commit c699eaa
Showing 1 changed file with 18 additions and 7 deletions.
25 changes: 18 additions & 7 deletions scripts/kconfig/qconf.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1636,22 +1636,33 @@ void ConfigMainWindow::setMenuLink(struct menu *menu)
return;
list->setRootMenu(parent);
break;
case symbolMode:
case menuMode:
if (menu->flags & MENU_ROOT) {
configList->setRootMenu(menu);
menuList->setRootMenu(menu);
configList->clearSelection();
list = menuList;
} else {
list = configList;
} else {
parent = menu_get_parent_menu(menu->parent);
if (!parent)
return;
item = menuList->findConfigItem(parent);

/* Clear an already-selected item */
if (!configList->selectedItems().isEmpty()) {
item = (ConfigItem*)configList->selectedItems().first();
if (item)
item->setSelected(false);
}

/* Select the config view */
item = configList->findConfigItem(parent);
if (item) {
item->setSelected(true);
menuList->scrollToItem(item);
configList->scrollToItem(item);
}
list->setRootMenu(parent);

menuList->setRootMenu(parent);
menuList->clearSelection();
list = menuList;
}
break;
case fullMode:
Expand Down

0 comments on commit c699eaa

Please sign in to comment.