Message ID | 45fa5ad583de1766de6169366df1df5837c5dc7c.1593423060.git.mchehab+huawei@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix split view search and debug info navigation | expand |
On Mon, Jun 29, 2020 at 6:35 PM Mauro Carvalho Chehab <mchehab+huawei@kernel.org> wrote: > > Instead of just changing the helper window to show a > dependency, also navigate to it at the config and menu > widgets. > > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Thanks, I think this is a nice improvement. When I click a link, both the previous config and the new one are highlighted. Is this intentional behavior? For example, put the following simple Kconfig at the top-level. From the info window of FOO, click the 'select BAR' link, and then both FOO and BAR are highlighted. ------------>8--------------- config FOO bool "foo" select BAR default y config BAR bool "bar" default y ------------>8----------------- > --- > scripts/kconfig/qconf.cc | 24 +++++------------------- > 1 file changed, 5 insertions(+), 19 deletions(-) > > diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc > index 49f0688fceb8..d8870b15a178 100644 > --- a/scripts/kconfig/qconf.cc > +++ b/scripts/kconfig/qconf.cc > @@ -1232,7 +1232,6 @@ void ConfigInfoView::clicked(const QUrl &url) > char *data = new char[count + 1]; > struct symbol **result; > struct menu *m = NULL; > - char type; > > if (count < 1) { > qInfo() << "Clicked link is empty"; > @@ -1242,7 +1241,6 @@ void ConfigInfoView::clicked(const QUrl &url) > > memcpy(data, str.constData(), count); > data[count] = '\0'; > - type = data[0]; > > /* Seek for exact match */ > data[0] = '^'; > @@ -1255,15 +1253,8 @@ void ConfigInfoView::clicked(const QUrl &url) > } > > sym = *result; > - if (type == 's') { > - symbolInfo(); > - emit showDebugChanged(true); > - free(result); > - delete data; > - return; > - } > > - /* URL is a menu */ > + /* Seek for the menu which holds the symbol */ > for (struct property *prop = sym->prop; prop; prop = prop->next) { > if (prop->type != P_PROMPT && prop->type != P_MENU) > continue; > @@ -1271,17 +1262,11 @@ void ConfigInfoView::clicked(const QUrl &url) > break; > } > > - if (!m) { > + if (!m) > qInfo() << "Clicked menu is invalid:" << data; > - free(result); > - delete data; > - return; > - } > + else > + emit menuSelected(m); > > - _menu = m; > - menuInfo(); > - > - emit showDebugChanged(true); > free(result); > delete data; > } > @@ -1750,6 +1735,7 @@ void ConfigMainWindow::setMenuLink(struct menu *menu) > item->setSelected(true); > list->scrollToItem(item); > list->setFocus(); > + helpText->setInfo(menu); > } > } > } > -- > 2.26.2 > -- Best Regards Masahiro Yamada
On Mon, Jun 29, 2020 at 6:35 PM Mauro Carvalho Chehab <mchehab+huawei@kernel.org> wrote: > > Instead of just changing the helper window to show a > dependency, also navigate to it at the config and menu > widgets. > > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> > --- I noticed a regression. Visit "Networking support", and click "select: BPF" from the window at the bottom. Nothing happens except the following error message in the console: Clicked menu is invalid: ^BPF$ If I apply only 1-4 in this series, this works fine. > scripts/kconfig/qconf.cc | 24 +++++------------------- > 1 file changed, 5 insertions(+), 19 deletions(-) > > diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc > index 49f0688fceb8..d8870b15a178 100644 > --- a/scripts/kconfig/qconf.cc > +++ b/scripts/kconfig/qconf.cc > @@ -1232,7 +1232,6 @@ void ConfigInfoView::clicked(const QUrl &url) > char *data = new char[count + 1]; > struct symbol **result; > struct menu *m = NULL; > - char type; > > if (count < 1) { > qInfo() << "Clicked link is empty"; > @@ -1242,7 +1241,6 @@ void ConfigInfoView::clicked(const QUrl &url) > > memcpy(data, str.constData(), count); > data[count] = '\0'; > - type = data[0]; > > /* Seek for exact match */ > data[0] = '^'; > @@ -1255,15 +1253,8 @@ void ConfigInfoView::clicked(const QUrl &url) > } > > sym = *result; > - if (type == 's') { > - symbolInfo(); > - emit showDebugChanged(true); > - free(result); > - delete data; > - return; > - } > > - /* URL is a menu */ > + /* Seek for the menu which holds the symbol */ > for (struct property *prop = sym->prop; prop; prop = prop->next) { > if (prop->type != P_PROMPT && prop->type != P_MENU) > continue; > @@ -1271,17 +1262,11 @@ void ConfigInfoView::clicked(const QUrl &url) > break; > } > > - if (!m) { > + if (!m) > qInfo() << "Clicked menu is invalid:" << data; > - free(result); > - delete data; > - return; > - } > + else > + emit menuSelected(m); > > - _menu = m; > - menuInfo(); > - > - emit showDebugChanged(true); > free(result); > delete data; > } > @@ -1750,6 +1735,7 @@ void ConfigMainWindow::setMenuLink(struct menu *menu) > item->setSelected(true); > list->scrollToItem(item); > list->setFocus(); > + helpText->setInfo(menu); > } > } > } > -- > 2.26.2 >
Em Tue, 30 Jun 2020 12:36:27 +0900 Masahiro Yamada <masahiroy@kernel.org> escreveu: > On Mon, Jun 29, 2020 at 6:35 PM Mauro Carvalho Chehab > <mchehab+huawei@kernel.org> wrote: > > > > Instead of just changing the helper window to show a > > dependency, also navigate to it at the config and menu > > widgets. > > > > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> > > --- > > > I noticed a regression. > > Visit "Networking support", > and click "select: BPF" > from the window at the bottom. > > Nothing happens except the following error message > in the console: > > Clicked menu is invalid: ^BPF$ > > > If I apply only 1-4 in this series, > this works fine. Hmm... perhaps this is related to symbol visibility. If the clicked link is not visible, it won't be able to present the Kconfig option. I guess we can implement a mixed approach here: update just the configInfo data if it can't find the clicked item as a menu, like the enclosed patch. I'll send an updated version with this hybrid approach. Thanks, Mauro diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc index f49fbac91995..fd721c6c4c94 100644 --- a/scripts/kconfig/qconf.cc +++ b/scripts/kconfig/qconf.cc @@ -1263,10 +1263,13 @@ void ConfigInfoView::clicked(const QUrl &url) break; } - if (!m) - qInfo() << "Clicked menu is invalid:" << data; - else + if (!m) { + /* Symbol is not visible as a menu */ + symbolInfo(); + emit showDebugChanged(true); + } else { emit menuSelected(m); + } free(result); delete data;
diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc index 49f0688fceb8..d8870b15a178 100644 --- a/scripts/kconfig/qconf.cc +++ b/scripts/kconfig/qconf.cc @@ -1232,7 +1232,6 @@ void ConfigInfoView::clicked(const QUrl &url) char *data = new char[count + 1]; struct symbol **result; struct menu *m = NULL; - char type; if (count < 1) { qInfo() << "Clicked link is empty"; @@ -1242,7 +1241,6 @@ void ConfigInfoView::clicked(const QUrl &url) memcpy(data, str.constData(), count); data[count] = '\0'; - type = data[0]; /* Seek for exact match */ data[0] = '^'; @@ -1255,15 +1253,8 @@ void ConfigInfoView::clicked(const QUrl &url) } sym = *result; - if (type == 's') { - symbolInfo(); - emit showDebugChanged(true); - free(result); - delete data; - return; - } - /* URL is a menu */ + /* Seek for the menu which holds the symbol */ for (struct property *prop = sym->prop; prop; prop = prop->next) { if (prop->type != P_PROMPT && prop->type != P_MENU) continue; @@ -1271,17 +1262,11 @@ void ConfigInfoView::clicked(const QUrl &url) break; } - if (!m) { + if (!m) qInfo() << "Clicked menu is invalid:" << data; - free(result); - delete data; - return; - } + else + emit menuSelected(m); - _menu = m; - menuInfo(); - - emit showDebugChanged(true); free(result); delete data; } @@ -1750,6 +1735,7 @@ void ConfigMainWindow::setMenuLink(struct menu *menu) item->setSelected(true); list->scrollToItem(item); list->setFocus(); + helpText->setInfo(menu); } } }
Instead of just changing the helper window to show a dependency, also navigate to it at the config and menu widgets. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> --- scripts/kconfig/qconf.cc | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-)