forked from luck/tmp_suning_uos_patched
Kbuild fixes for v5.8 (2nd)
- fix various bugs in xconfig - fix some issues in cross-compilation using Clang - fix documentation -----BEGIN PGP SIGNATURE----- iQJJBAABCgAzFiEEbmPs18K1szRHjPqEPYsBB53g2wYFAl8B7PAVHG1hc2FoaXJv eUBrZXJuZWwub3JnAAoJED2LAQed4NsGKnwP/2lAwlPJYRjBv0cLZ8HI1F8xbVFl P+/JPkF0me/4mXU0ZJzP+zeLq9rfjL9298FwkVtPoTybPCSsONVEuoIMZ5gCXYxc IJ6o7pwmSF7T7VNtI6lx+l4BKmULYnPpTnZsqutKKLjAO+o2SiHju3ZSgfWUXVuc NyQIFSBQzoI1KkbNHpuAryWc0WXm6Gfeg3//Sqqk/pPmXkNcQAIzM274HvrSnCvq /RLUd0SDTXP7XlbleZQhms1FJp3IXkSXAGdA0HsF8sH8oCz+4wWcXk72k4j9INXi aPACxZvO/hM4N9LJliL4eJjjHfmbnDppczr+Kb5KYCb9dEV9vVkbYWyz98YA+/Y/ 1EgynxLxHrU534M7tAhRAb0k/xVGodhRj0KEMPGRgzeWGtXaxKSe0Z5NBqs0nj5Z dMtJuzEMG1ey56jhRj2408IUUmOmHEh+IDsM8HQ/tcjrI5fpKP505RT6gvLBWX6M IPPYo2cC9wHfyEC1dPjJ+aaOeqnSJ9+7ui7iv5vJQ1M6PyOkHeXaU1jCeOGg5qLe zfjn2U11uK3BLgedzahB/lEBXfblDlFuG0b7XyXnyyhkICt1CT7aPvznrGxSUlEw EuZLrIMHqRwMyrs7PTo41m2hf3hqh+juhPuxiEngi5NqH/GKBnvLJQDGFkbupqim ZFGZnMVeZR7Prulc =0BKC -----END PGP SIGNATURE----- Merge tag 'kbuild-fixes-v5.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild Pull Kbuild fixes frin Masahiro Yamada: - fix various bugs in xconfig - fix some issues in cross-compilation using Clang - fix documentation * tag 'kbuild-fixes-v5.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: .gitignore: Do not track `defconfig` from `make savedefconfig` kbuild: make Clang build userprogs for target architecture kbuild: fix CONFIG_CC_CAN_LINK(_STATIC) for cross-compilation with Clang kconfig: qconf: parse newer types at debug info kconfig: qconf: navigate menus on hyperlinks kconfig: qconf: don't show goback button on splitMode kconfig: qconf: simplify the goBack() logic kconfig: qconf: re-implement setSelected() kconfig: qconf: make debug links work again kconfig: qconf: make search fully work again on split mode kconfig: qconf: cleanup includes docs: kbuild: fix ReST formatting gcc-plugins: fix gcc-plugins directory path in documentation
This commit is contained in:
commit
4bc927367d
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -143,6 +143,9 @@ x509.genkey
|
|||
/allrandom.config
|
||||
/allyes.config
|
||||
|
||||
# Kconfig savedefconfig output
|
||||
/defconfig
|
||||
|
||||
# Kdevelop4
|
||||
*.kdev4
|
||||
|
||||
|
|
|
@ -182,7 +182,8 @@ module 8123.ko, which is built from the following files::
|
|||
8123_pci.c
|
||||
8123_bin.o_shipped <= Binary blob
|
||||
|
||||
--- 3.1 Shared Makefile
|
||||
3.1 Shared Makefile
|
||||
-------------------
|
||||
|
||||
An external module always includes a wrapper makefile that
|
||||
supports building the module using "make" with no arguments.
|
||||
|
@ -470,9 +471,9 @@ build.
|
|||
|
||||
The syntax of the Module.symvers file is::
|
||||
|
||||
<CRC> <Symbol> <Module> <Export Type> <Namespace>
|
||||
<CRC> <Symbol> <Module> <Export Type> <Namespace>
|
||||
|
||||
0xe1cc2a05 usb_stor_suspend drivers/usb/storage/usb-storage EXPORT_SYMBOL_GPL USB_STORAGE
|
||||
0xe1cc2a05 usb_stor_suspend drivers/usb/storage/usb-storage EXPORT_SYMBOL_GPL USB_STORAGE
|
||||
|
||||
The fields are separated by tabs and values may be empty (e.g.
|
||||
if no namespace is defined for an exported symbol).
|
||||
|
|
|
@ -101,7 +101,7 @@ Structure randomisation
|
|||
|
||||
If you enable ``CONFIG_GCC_PLUGIN_RANDSTRUCT``, you will need to
|
||||
pre-generate the random seed in
|
||||
``scripts/gcc-plgins/randomize_layout_seed.h`` so the same value
|
||||
``scripts/gcc-plugins/randomize_layout_seed.h`` so the same value
|
||||
is used in rebuilds.
|
||||
|
||||
Debug info conflicts
|
||||
|
|
4
Makefile
4
Makefile
|
@ -970,8 +970,8 @@ LDFLAGS_vmlinux += --pack-dyn-relocs=relr
|
|||
endif
|
||||
|
||||
# Align the bit size of userspace programs with the kernel
|
||||
KBUILD_USERCFLAGS += $(filter -m32 -m64, $(KBUILD_CFLAGS))
|
||||
KBUILD_USERLDFLAGS += $(filter -m32 -m64, $(KBUILD_CFLAGS))
|
||||
KBUILD_USERCFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CFLAGS))
|
||||
KBUILD_USERLDFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CFLAGS))
|
||||
|
||||
# make the checker run with the right architecture
|
||||
CHECKFLAGS += --arch=$(ARCH)
|
||||
|
|
|
@ -49,13 +49,13 @@ config CLANG_VERSION
|
|||
|
||||
config CC_CAN_LINK
|
||||
bool
|
||||
default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(m64-flag)) if 64BIT
|
||||
default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(m32-flag))
|
||||
default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m64-flag)) if 64BIT
|
||||
default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m32-flag))
|
||||
|
||||
config CC_CAN_LINK_STATIC
|
||||
bool
|
||||
default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) -static $(m64-flag)) if 64BIT
|
||||
default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) -static $(m32-flag))
|
||||
default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m64-flag) -static) if 64BIT
|
||||
default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m32-flag) -static)
|
||||
|
||||
config CC_HAS_ASM_GOTO
|
||||
def_bool $(success,$(srctree)/scripts/gcc-goto.sh $(CC))
|
||||
|
|
|
@ -78,7 +78,7 @@ config GCC_PLUGIN_RANDSTRUCT
|
|||
source tree isn't cleaned after kernel installation).
|
||||
|
||||
The seed used for compilation is located at
|
||||
scripts/gcc-plgins/randomize_layout_seed.h. It remains after
|
||||
scripts/gcc-plugins/randomize_layout_seed.h. It remains after
|
||||
a make clean to allow for external modules to be compiled with
|
||||
the existing seed and will be removed by a make mrproper or
|
||||
make distclean.
|
||||
|
|
|
@ -4,27 +4,19 @@
|
|||
* Copyright (C) 2015 Boris Barbulovski <bbarbulovski@gmail.com>
|
||||
*/
|
||||
|
||||
#include <qglobal.h>
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QList>
|
||||
#include <qtextbrowser.h>
|
||||
#include <QAction>
|
||||
#include <QApplication>
|
||||
#include <QCloseEvent>
|
||||
#include <QDebug>
|
||||
#include <QDesktopWidget>
|
||||
#include <QFileDialog>
|
||||
#include <QLabel>
|
||||
#include <QLayout>
|
||||
#include <QList>
|
||||
#include <QMenu>
|
||||
|
||||
#include <qapplication.h>
|
||||
#include <qdesktopwidget.h>
|
||||
#include <qtoolbar.h>
|
||||
#include <qlayout.h>
|
||||
#include <qsplitter.h>
|
||||
#include <qlineedit.h>
|
||||
#include <qlabel.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qmenubar.h>
|
||||
#include <qmessagebox.h>
|
||||
#include <qregexp.h>
|
||||
#include <qevent.h>
|
||||
#include <QMenuBar>
|
||||
#include <QMessageBox>
|
||||
#include <QToolBar>
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
|
@ -445,9 +437,10 @@ void ConfigList::updateList(ConfigItem* item)
|
|||
if (rootEntry != &rootmenu && (mode == singleMode ||
|
||||
(mode == symbolMode && rootEntry->parent != &rootmenu))) {
|
||||
item = (ConfigItem *)topLevelItem(0);
|
||||
if (!item)
|
||||
if (!item && mode != symbolMode) {
|
||||
item = new ConfigItem(this, 0, true);
|
||||
last = item;
|
||||
last = item;
|
||||
}
|
||||
}
|
||||
if ((mode == singleMode || (mode == symbolMode && !(rootEntry->flags & MENU_ROOT))) &&
|
||||
rootEntry->sym && rootEntry->prompt) {
|
||||
|
@ -545,7 +538,7 @@ void ConfigList::setRootMenu(struct menu *menu)
|
|||
rootEntry = menu;
|
||||
updateListAll();
|
||||
if (currentItem()) {
|
||||
currentItem()->setSelected(hasFocus());
|
||||
setSelected(currentItem(), hasFocus());
|
||||
scrollToItem(currentItem());
|
||||
}
|
||||
}
|
||||
|
@ -873,7 +866,7 @@ void ConfigList::focusInEvent(QFocusEvent *e)
|
|||
|
||||
ConfigItem* item = (ConfigItem *)currentItem();
|
||||
if (item) {
|
||||
item->setSelected(true);
|
||||
setSelected(item, true);
|
||||
menu = item->menu;
|
||||
}
|
||||
emit gotFocus(menu);
|
||||
|
@ -1021,7 +1014,7 @@ ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name)
|
|||
: Parent(parent), sym(0), _menu(0)
|
||||
{
|
||||
setObjectName(name);
|
||||
|
||||
setOpenLinks(false);
|
||||
|
||||
if (!objectName().isEmpty()) {
|
||||
configSettings->beginGroup(objectName());
|
||||
|
@ -1094,7 +1087,7 @@ void ConfigInfoView::menuInfo(void)
|
|||
if (sym->name) {
|
||||
head += " (";
|
||||
if (showDebug())
|
||||
head += QString().sprintf("<a href=\"s%p\">", sym);
|
||||
head += QString().sprintf("<a href=\"s%s\">", sym->name);
|
||||
head += print_filter(sym->name);
|
||||
if (showDebug())
|
||||
head += "</a>";
|
||||
|
@ -1103,7 +1096,7 @@ void ConfigInfoView::menuInfo(void)
|
|||
} else if (sym->name) {
|
||||
head += "<big><b>";
|
||||
if (showDebug())
|
||||
head += QString().sprintf("<a href=\"s%p\">", sym);
|
||||
head += QString().sprintf("<a href=\"s%s\">", sym->name);
|
||||
head += print_filter(sym->name);
|
||||
if (showDebug())
|
||||
head += "</a>";
|
||||
|
@ -1154,13 +1147,16 @@ QString ConfigInfoView::debug_info(struct symbol *sym)
|
|||
switch (prop->type) {
|
||||
case P_PROMPT:
|
||||
case P_MENU:
|
||||
debug += QString().sprintf("prompt: <a href=\"m%p\">", prop->menu);
|
||||
debug += QString().sprintf("prompt: <a href=\"m%s\">", sym->name);
|
||||
debug += print_filter(prop->text);
|
||||
debug += "</a><br>";
|
||||
break;
|
||||
case P_DEFAULT:
|
||||
case P_SELECT:
|
||||
case P_RANGE:
|
||||
case P_COMMENT:
|
||||
case P_IMPLY:
|
||||
case P_SYMBOL:
|
||||
debug += prop_get_type_name(prop->type);
|
||||
debug += ": ";
|
||||
expr_print(prop->expr, expr_print_help, &debug, E_NONE);
|
||||
|
@ -1226,13 +1222,62 @@ void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char
|
|||
QString str2 = print_filter(str);
|
||||
|
||||
if (sym && sym->name && !(sym->flags & SYMBOL_CONST)) {
|
||||
*text += QString().sprintf("<a href=\"s%p\">", sym);
|
||||
*text += QString().sprintf("<a href=\"s%s\">", sym->name);
|
||||
*text += str2;
|
||||
*text += "</a>";
|
||||
} else
|
||||
*text += str2;
|
||||
}
|
||||
|
||||
void ConfigInfoView::clicked(const QUrl &url)
|
||||
{
|
||||
QByteArray str = url.toEncoded();
|
||||
const std::size_t count = str.size();
|
||||
char *data = new char[count + 1];
|
||||
struct symbol **result;
|
||||
struct menu *m = NULL;
|
||||
|
||||
if (count < 1) {
|
||||
qInfo() << "Clicked link is empty";
|
||||
delete data;
|
||||
return;
|
||||
}
|
||||
|
||||
memcpy(data, str.constData(), count);
|
||||
data[count] = '\0';
|
||||
|
||||
/* Seek for exact match */
|
||||
data[0] = '^';
|
||||
strcat(data, "$");
|
||||
result = sym_re_search(data);
|
||||
if (!result) {
|
||||
qInfo() << "Clicked symbol is invalid:" << data;
|
||||
delete data;
|
||||
return;
|
||||
}
|
||||
|
||||
sym = *result;
|
||||
|
||||
/* 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;
|
||||
m = prop->menu;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!m) {
|
||||
/* Symbol is not visible as a menu */
|
||||
symbolInfo();
|
||||
emit showDebugChanged(true);
|
||||
} else {
|
||||
emit menuSelected(m);
|
||||
}
|
||||
|
||||
free(result);
|
||||
delete data;
|
||||
}
|
||||
|
||||
QMenu* ConfigInfoView::createStandardContextMenu(const QPoint & pos)
|
||||
{
|
||||
QMenu* popup = Parent::createStandardContextMenu(pos);
|
||||
|
@ -1402,18 +1447,22 @@ ConfigMainWindow::ConfigMainWindow(void)
|
|||
addToolBar(toolBar);
|
||||
|
||||
backAction = new QAction(QPixmap(xpm_back), "Back", this);
|
||||
connect(backAction, SIGNAL(triggered(bool)), SLOT(goBack()));
|
||||
backAction->setEnabled(false);
|
||||
connect(backAction, SIGNAL(triggered(bool)), SLOT(goBack()));
|
||||
|
||||
QAction *quitAction = new QAction("&Quit", this);
|
||||
quitAction->setShortcut(Qt::CTRL + Qt::Key_Q);
|
||||
connect(quitAction, SIGNAL(triggered(bool)), SLOT(close()));
|
||||
connect(quitAction, SIGNAL(triggered(bool)), SLOT(close()));
|
||||
|
||||
QAction *loadAction = new QAction(QPixmap(xpm_load), "&Load", this);
|
||||
loadAction->setShortcut(Qt::CTRL + Qt::Key_L);
|
||||
connect(loadAction, SIGNAL(triggered(bool)), SLOT(loadConfig()));
|
||||
connect(loadAction, SIGNAL(triggered(bool)), SLOT(loadConfig()));
|
||||
|
||||
saveAction = new QAction(QPixmap(xpm_save), "&Save", this);
|
||||
saveAction->setShortcut(Qt::CTRL + Qt::Key_S);
|
||||
connect(saveAction, SIGNAL(triggered(bool)), SLOT(saveConfig()));
|
||||
connect(saveAction, SIGNAL(triggered(bool)), SLOT(saveConfig()));
|
||||
|
||||
conf_set_changed_callback(conf_changed);
|
||||
|
||||
// Set saveAction's initial state
|
||||
conf_changed();
|
||||
configname = xstrdup(conf_get_configname());
|
||||
|
@ -1506,6 +1555,9 @@ ConfigMainWindow::ConfigMainWindow(void)
|
|||
helpMenu->addAction(showIntroAction);
|
||||
helpMenu->addAction(showAboutAction);
|
||||
|
||||
connect (helpText, SIGNAL (anchorClicked (const QUrl &)),
|
||||
helpText, SLOT (clicked (const QUrl &)) );
|
||||
|
||||
connect(configList, SIGNAL(menuChanged(struct menu *)),
|
||||
helpText, SLOT(setInfo(struct menu *)));
|
||||
connect(configList, SIGNAL(menuSelected(struct menu *)),
|
||||
|
@ -1611,21 +1663,11 @@ void ConfigMainWindow::searchConfig(void)
|
|||
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)
|
||||
|
@ -1645,22 +1687,26 @@ 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);
|
||||
|
||||
/* Select the config view */
|
||||
item = configList->findConfigItem(parent);
|
||||
if (item) {
|
||||
item->setSelected(true);
|
||||
menuList->scrollToItem(item);
|
||||
configList->setSelected(item, true);
|
||||
configList->scrollToItem(item);
|
||||
}
|
||||
list->setRootMenu(parent);
|
||||
|
||||
menuList->setRootMenu(parent);
|
||||
menuList->clearSelection();
|
||||
list = menuList;
|
||||
}
|
||||
break;
|
||||
case fullMode:
|
||||
|
@ -1673,9 +1719,10 @@ void ConfigMainWindow::setMenuLink(struct menu *menu)
|
|||
if (list) {
|
||||
item = list->findConfigItem(menu);
|
||||
if (item) {
|
||||
item->setSelected(true);
|
||||
list->setSelected(item, true);
|
||||
list->scrollToItem(item);
|
||||
list->setFocus();
|
||||
helpText->setInfo(menu);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1688,25 +1735,11 @@ void ConfigMainWindow::listFocusChanged(void)
|
|||
|
||||
void ConfigMainWindow::goBack(void)
|
||||
{
|
||||
ConfigItem* item, *oldSelection;
|
||||
|
||||
configList->setParentMenu();
|
||||
qInfo() << __FUNCTION__;
|
||||
if (configList->rootEntry == &rootmenu)
|
||||
backAction->setEnabled(false);
|
||||
|
||||
if (menuList->selectedItems().count() == 0)
|
||||
return;
|
||||
|
||||
item = (ConfigItem*)menuList->selectedItems().first();
|
||||
oldSelection = item;
|
||||
while (item) {
|
||||
if (item->menu == configList->rootEntry) {
|
||||
oldSelection->setSelected(false);
|
||||
item->setSelected(true);
|
||||
break;
|
||||
}
|
||||
item = (ConfigItem*)item->parent();
|
||||
}
|
||||
configList->setParentMenu();
|
||||
}
|
||||
|
||||
void ConfigMainWindow::showSingleView(void)
|
||||
|
@ -1718,6 +1751,8 @@ void ConfigMainWindow::showSingleView(void)
|
|||
fullViewAction->setEnabled(true);
|
||||
fullViewAction->setChecked(false);
|
||||
|
||||
backAction->setEnabled(true);
|
||||
|
||||
menuView->hide();
|
||||
menuList->setRootMenu(0);
|
||||
configList->mode = singleMode;
|
||||
|
@ -1737,6 +1772,8 @@ void ConfigMainWindow::showSplitView(void)
|
|||
fullViewAction->setEnabled(true);
|
||||
fullViewAction->setChecked(false);
|
||||
|
||||
backAction->setEnabled(false);
|
||||
|
||||
configList->mode = menuMode;
|
||||
if (configList->rootEntry == &rootmenu)
|
||||
configList->updateListAll();
|
||||
|
@ -1760,6 +1797,8 @@ void ConfigMainWindow::showFullView(void)
|
|||
fullViewAction->setEnabled(false);
|
||||
fullViewAction->setChecked(true);
|
||||
|
||||
backAction->setEnabled(false);
|
||||
|
||||
menuView->hide();
|
||||
menuList->setRootMenu(0);
|
||||
configList->mode = fullMode;
|
||||
|
|
|
@ -3,17 +3,17 @@
|
|||
* Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
|
||||
*/
|
||||
|
||||
#include <QTextBrowser>
|
||||
#include <QTreeWidget>
|
||||
#include <QMainWindow>
|
||||
#include <QHeaderView>
|
||||
#include <qsettings.h>
|
||||
#include <QPushButton>
|
||||
#include <QSettings>
|
||||
#include <QLineEdit>
|
||||
#include <QSplitter>
|
||||
#include <QCheckBox>
|
||||
#include <QDialog>
|
||||
#include <QHeaderView>
|
||||
#include <QLineEdit>
|
||||
#include <QMainWindow>
|
||||
#include <QPushButton>
|
||||
#include <QSettings>
|
||||
#include <QSplitter>
|
||||
#include <QTextBrowser>
|
||||
#include <QTreeWidget>
|
||||
|
||||
#include "expr.h"
|
||||
|
||||
class ConfigView;
|
||||
|
@ -45,11 +45,17 @@ class ConfigList : public QTreeWidget {
|
|||
public:
|
||||
ConfigList(ConfigView* p, const char *name = 0);
|
||||
void reinit(void);
|
||||
ConfigItem* findConfigItem(struct menu *);
|
||||
ConfigView* parent(void) const
|
||||
{
|
||||
return (ConfigView*)Parent::parent();
|
||||
}
|
||||
ConfigItem* findConfigItem(struct menu *);
|
||||
void setSelected(QTreeWidgetItem *item, bool enable) {
|
||||
for (int i = 0; i < selectedItems().size(); i++)
|
||||
selectedItems().at(i)->setSelected(false);
|
||||
|
||||
item->setSelected(enable);
|
||||
}
|
||||
|
||||
protected:
|
||||
void keyPressEvent(QKeyEvent *e);
|
||||
|
@ -250,6 +256,7 @@ public slots:
|
|||
void setInfo(struct menu *menu);
|
||||
void saveSettings(void);
|
||||
void setShowDebug(bool);
|
||||
void clicked (const QUrl &url);
|
||||
|
||||
signals:
|
||||
void showDebugChanged(bool);
|
||||
|
|
Loading…
Reference in New Issue
Block a user