kconfig: qconf: allow to edit "int", "hex", "string" menus in-place
authorMasahiro Yamada <masahiroy@kernel.org>
Sat, 29 Aug 2020 08:14:12 +0000 (17:14 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Thu, 24 Sep 2020 15:37:13 +0000 (00:37 +0900)
commit37162a68bf517b6f870d63bbbcc65a81f99bd968
tree82b4a1da75c4cefa243d9436e12c008ab5d81ae0
parent669a1ee46a0e2ccad769ceca70b08ee57772be94
kconfig: qconf: allow to edit "int", "hex", "string" menus in-place

Previously, when you double-clicked the "int", "hex", or "string" menus,
a line-edit gadget showed up to allow you to input the value, which
looked clumsy.

Also, it was buggy; the editor opened even if the config option was not
editable. For example, just try to double-click CC_VERSION_TEXT, which
has no prompt.

This commit sub-classes QStyleItemDelegate to allow users to edit
"int", "hex", "string" menus in-place. Just double-click (or press
the F2 key) in the data column. Then, an editor widget is placed on
top of the item view.

The two methods are overridden:

 createEditor - process only when the data column is being accessed
 and the menu is visible. Otherwise, return nullptr to disallow editing.

 setModelData - take the new data from the editor, and set it to the
 addressed symbol. If it was successful, update all the list windows.
 Otherwise, (the reason for the failure is possibly the input data was
 out of range), set the old value back to the editor.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
scripts/kconfig/qconf.cc
scripts/kconfig/qconf.h