From b668d0a9d54cbd81c3ffe1391a9a54c541c39bf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stig=20Bj=C3=B8rlykke?= Date: Fri, 30 Oct 2020 13:52:54 +0000 Subject: [PATCH] Qt: Support ampersand in funnel menu and button An ampersand in the menu item or a button is used as shortcut, so use "&&" to get a real ampersand. (cherry picked from commit c84681aca2fb1144df94880d9997a5800006c2e0) --- ui/qt/funnel_statistics.cpp | 5 ++++- ui/qt/funnel_text_dialog.cpp | 5 ++++- ui/qt/funnel_text_dialog.h | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ui/qt/funnel_statistics.cpp b/ui/qt/funnel_statistics.cpp index c7f67e600a..f3fbc69145 100644 --- a/ui/qt/funnel_statistics.cpp +++ b/ui/qt/funnel_statistics.cpp @@ -58,13 +58,16 @@ static void progress_window_destroy(struct progdlg *progress_dialog); class FunnelAction : public QAction { public: - FunnelAction(const QString title, funnel_menu_callback callback, gpointer callback_data, gboolean retap, QObject *parent = nullptr) : + FunnelAction(QString title, funnel_menu_callback callback, gpointer callback_data, gboolean retap, QObject *parent = nullptr) : QAction(parent), title_(title), callback_(callback), callback_data_(callback_data), retap_(retap) { + // Use "&&" to get a real ampersand in the menu item. + title.replace('&', "&&"); + setText(title); setObjectName(FunnelStatistics::actionName()); } diff --git a/ui/qt/funnel_text_dialog.cpp b/ui/qt/funnel_text_dialog.cpp index e1a5e11f85..c4d8265e0b 100644 --- a/ui/qt/funnel_text_dialog.cpp +++ b/ui/qt/funnel_text_dialog.cpp @@ -118,8 +118,11 @@ void FunnelTextDialog::setTextEditable(gboolean editable) ui->textEdit->setReadOnly(!editable); } -void FunnelTextDialog::addButton(funnel_bt_t *funnel_button, const QString label) +void FunnelTextDialog::addButton(funnel_bt_t *funnel_button, QString label) { + // Use "&&" to get a real ampersand in the button. + label.replace('&', "&&"); + QPushButton *button = new QPushButton(label); ui->buttonBox->addButton(button, QDialogButtonBox::ActionRole); text_button_to_funnel_button_[button] = funnel_button; diff --git a/ui/qt/funnel_text_dialog.h b/ui/qt/funnel_text_dialog.h index d9076961de..64948a57c1 100644 --- a/ui/qt/funnel_text_dialog.h +++ b/ui/qt/funnel_text_dialog.h @@ -45,7 +45,7 @@ public: const char *getText(); void setCloseCallback(text_win_close_cb_t close_cb, void* close_cb_data); void setTextEditable(gboolean editable); - void addButton(funnel_bt_t *button_cb, const QString label); + void addButton(funnel_bt_t *button_cb, QString label); private slots: void buttonClicked();