diff --git a/ui/qt/funnel_statistics.cpp b/ui/qt/funnel_statistics.cpp index 6066f15498..752858e862 100644 --- a/ui/qt/funnel_statistics.cpp +++ b/ui/qt/funnel_statistics.cpp @@ -106,6 +106,7 @@ private: static QHash > funnel_actions_; const QString FunnelStatistics::action_name_ = "FunnelStatisticsAction"; +static gboolean menus_registered = FALSE; struct _funnel_ops_id_t { FunnelStatistics *funnel_statistics; @@ -347,6 +348,8 @@ void progress_window_destroy(progdlg *progress_dialog) { extern "C" { +void register_tap_listener_qt_funnel(void); + static void register_menu_cb(const char *name, register_stat_group_t group, funnel_menu_callback callback, @@ -354,8 +357,11 @@ static void register_menu_cb(const char *name, gboolean retap) { FunnelAction *funnel_action = new FunnelAction(name, callback, callback_data, retap, mainApp); - mainApp->addDynamicMenuGroupItem(group, funnel_action); - + if (menus_registered) { + mainApp->appendDynamicMenuGroupItem(group, funnel_action); + } else { + mainApp->addDynamicMenuGroupItem(group, funnel_action); + } if (!funnel_actions_.contains(group)) { funnel_actions_[group] = QList(); } @@ -380,6 +386,13 @@ static void deregister_menu_cb(funnel_menu_callback callback) } } +void +register_tap_listener_qt_funnel(void) +{ + funnel_register_all_menus(register_menu_cb); + menus_registered = TRUE; +} + void funnel_statistics_reload_menus(void) { diff --git a/ui/qt/main_application.cpp b/ui/qt/main_application.cpp index 2763b0b258..0a42fd5b7c 100644 --- a/ui/qt/main_application.cpp +++ b/ui/qt/main_application.cpp @@ -879,6 +879,15 @@ void MainApplication::addDynamicMenuGroupItem(int group, QAction *sg_action) dynamic_menu_groups_[group] << sg_action; } +void MainApplication::appendDynamicMenuGroupItem(int group, QAction *sg_action) +{ + if (!added_menu_groups_.contains(group)) { + added_menu_groups_[group] = QList(); + } + added_menu_groups_[group] << sg_action; + addDynamicMenuGroupItem(group, sg_action); +} + void MainApplication::removeDynamicMenuGroupItem(int group, QAction *sg_action) { if (!removed_menu_groups_.contains(group)) { diff --git a/ui/qt/main_application.h b/ui/qt/main_application.h index 786c01dc97..f4c70d7b06 100644 --- a/ui/qt/main_application.h +++ b/ui/qt/main_application.h @@ -92,6 +92,7 @@ public: void emitStatCommandSignal(const QString &menu_path, const char *arg, void *userdata); void emitTapParameterSignal(const QString cfg_abbr, const QString arg, void *userdata); void addDynamicMenuGroupItem(int group, QAction *sg_action); + void appendDynamicMenuGroupItem(int group, QAction *sg_action); void removeDynamicMenuGroupItem(int group, QAction *sg_action); QList dynamicMenuGroupItems(int group); QList addedMenuGroupItems(int group);