aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ui/logray/logray_main_window.cpp5
-rw-r--r--ui/logray/logray_main_window_slots.cpp9
-rw-r--r--ui/qt/main_application.cpp17
-rw-r--r--ui/qt/welcome_page.cpp1
-rw-r--r--ui/qt/wireshark_main_window.cpp5
-rw-r--r--ui/qt/wireshark_main_window_slots.cpp9
-rw-r--r--ui/recent.c2
-rw-r--r--ui/recent_utils.h13
8 files changed, 44 insertions, 17 deletions
diff --git a/ui/logray/logray_main_window.cpp b/ui/logray/logray_main_window.cpp
index 7cadc58d0a..d24f95baad 100644
--- a/ui/logray/logray_main_window.cpp
+++ b/ui/logray/logray_main_window.cpp
@@ -395,6 +395,7 @@ LograyMainWindow::LograyMainWindow(QWidget *parent) :
connect(mainApp, SIGNAL(preferencesChanged()), this, SLOT(updateTitlebar()));
connect(mainApp, SIGNAL(updateRecentCaptureStatus(const QString &, qint64, bool)), this, SLOT(updateRecentCaptures()));
+ connect(mainApp, SIGNAL(preferencesChanged()), this, SLOT(updateRecentCaptures()));
updateRecentCaptures();
#if defined(HAVE_SOFTWARE_UPDATE) && defined(Q_OS_WIN)
@@ -1500,7 +1501,7 @@ bool LograyMainWindow::saveAsCaptureFile(capture_file *cf, bool must_support_com
cf->unsaved_changes = false; //we just saved so we signal that we have no unsaved changes
updateForUnsavedChanges(); // we update the title bar to remove the *
/* Add this filename to the list of recent files in the "Recent Files" submenu */
- add_menu_recent_capture_file(qUtf8Printable(file_name));
+ add_menu_recent_capture_file(qUtf8Printable(file_name), false);
return true;
case CF_WRITE_ERROR:
@@ -1642,7 +1643,7 @@ void LograyMainWindow::exportSelectedPackets() {
if (discard_comments)
packet_list_->redrawVisiblePackets();
/* Add this filename to the list of recent files in the "Recent Files" submenu */
- add_menu_recent_capture_file(qUtf8Printable(file_name));
+ add_menu_recent_capture_file(qUtf8Printable(file_name), false);
goto cleanup;
case CF_WRITE_ERROR:
diff --git a/ui/logray/logray_main_window_slots.cpp b/ui/logray/logray_main_window_slots.cpp
index 143284ce3c..812f78720a 100644
--- a/ui/logray/logray_main_window_slots.cpp
+++ b/ui/logray/logray_main_window_slots.cpp
@@ -737,7 +737,7 @@ void LograyMainWindow::captureFileReadStarted(const QString &action) {
void LograyMainWindow::captureFileReadFinished() {
if (!capture_file_.capFile()->is_tempfile && capture_file_.capFile()->filename) {
/* Add this filename to the list of recent files in the "Recent Files" submenu */
- add_menu_recent_capture_file(capture_file_.capFile()->filename);
+ add_menu_recent_capture_file(capture_file_.capFile()->filename, false);
/* Remember folder for next Open dialog and save it in recent */
mainApp->setLastOpenDirFromFilename(capture_file_.capFile()->filename);
@@ -1024,6 +1024,13 @@ void LograyMainWindow::updateRecentCaptures() {
dock_menu_->insertAction(NULL, rda);
connect(rda, SIGNAL(triggered()), ra, SLOT(trigger()));
#endif
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+ if (recentMenu->actions().count() == static_cast<int>(prefs.gui_recent_files_count_max)) {
+#else
+ if (recentMenu->actions().count() == static_cast<qsizetype>(prefs.gui_recent_files_count_max)) {
+#endif
+ break;
+ }
}
if (recentMenu->actions().count() > 0) {
diff --git a/ui/qt/main_application.cpp b/ui/qt/main_application.cpp
index 265d5eb95f..ffd30f1e6b 100644
--- a/ui/qt/main_application.cpp
+++ b/ui/qt/main_application.cpp
@@ -162,7 +162,7 @@ topic_action(topic_action_e action)
* https://stackoverflow.com/questions/437212/how-do-you-register-a-most-recently-used-list-with-windows-in-preparation-for-win
*/
extern "C" void
-add_menu_recent_capture_file(const gchar *cf_name) {
+add_menu_recent_capture_file(const gchar *cf_name, bool force) {
QString normalized_cf_name = QString::fromUtf8(cf_name);
QDir cf_path;
@@ -197,7 +197,7 @@ add_menu_recent_capture_file(const gchar *cf_name) {
*/
ri->filename.compare(normalized_cf_name) == 0 ||
#endif
- cnt >= prefs.gui_recent_files_count_max) {
+ (!force && cnt >= prefs.gui_recent_files_count_max)) {
rii.remove();
delete(ri);
cnt--;
@@ -213,12 +213,15 @@ extern "C" void menu_recent_file_write_all(FILE *rf) {
/* we have to iterate backwards through the children's list,
* so we get the latest item last in the file.
*/
- QListIterator<recent_item_status *> rii(recent_captures_);
- rii.toBack();
- while (rii.hasPrevious()) {
- QString cf_name;
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+ int i = qMin(recent_captures_.size(), (int)(prefs.gui_recent_files_count_max)) - 1;
+#else
+ qsizetype i = qMin(recent_captures_.size(), (qsizetype)prefs.gui_recent_files_count_max) - 1;
+#endif
+ for (; i >= 0; i--) {
+ recent_item_status *ri = recent_captures_.at(i);
/* get capture filename from the menu item label */
- cf_name = rii.previous()->filename;
+ QString cf_name = ri->filename;
if (!cf_name.isNull()) {
fprintf (rf, RECENT_KEY_CAPTURE_FILE ": %s\n", qUtf8Printable(cf_name));
}
diff --git a/ui/qt/welcome_page.cpp b/ui/qt/welcome_page.cpp
index ac37a6d930..4572366fa3 100644
--- a/ui/qt/welcome_page.cpp
+++ b/ui/qt/welcome_page.cpp
@@ -76,6 +76,7 @@ WelcomePage::WelcomePage(QWidget *parent) :
this, SLOT(showRecentContextMenu(QPoint)));
connect(mainApp, SIGNAL(updateRecentCaptureStatus(const QString &, qint64, bool)), this, SLOT(updateRecentCaptures()));
+ connect(mainApp, SIGNAL(preferencesChanged()), this, SLOT(updateRecentCaptures()));
connect(mainApp, SIGNAL(appInitialized()), this, SLOT(appInitialized()));
connect(mainApp, SIGNAL(localInterfaceListChanged()), this, SLOT(interfaceListChanged()));
connect(welcome_ui_->interfaceFrame, SIGNAL(itemSelectionChanged()),
diff --git a/ui/qt/wireshark_main_window.cpp b/ui/qt/wireshark_main_window.cpp
index 64d3574bf1..83cb7e9e2d 100644
--- a/ui/qt/wireshark_main_window.cpp
+++ b/ui/qt/wireshark_main_window.cpp
@@ -419,6 +419,7 @@ WiresharkMainWindow::WiresharkMainWindow(QWidget *parent) :
connect(mainApp, SIGNAL(preferencesChanged()), this, SLOT(updateTitlebar()));
connect(mainApp, SIGNAL(updateRecentCaptureStatus(const QString &, qint64, bool)), this, SLOT(updateRecentCaptures()));
+ connect(mainApp, SIGNAL(preferencesChanged()), this, SLOT(updateRecentCaptures()));
updateRecentCaptures();
#if defined(HAVE_SOFTWARE_UPDATE) && defined(Q_OS_WIN)
@@ -1562,7 +1563,7 @@ bool WiresharkMainWindow::saveAsCaptureFile(capture_file *cf, bool must_support_
cf->unsaved_changes = false; //we just saved so we signal that we have no unsaved changes
updateForUnsavedChanges(); // we update the title bar to remove the *
/* Add this filename to the list of recent files in the "Recent Files" submenu */
- add_menu_recent_capture_file(qUtf8Printable(file_name));
+ add_menu_recent_capture_file(qUtf8Printable(file_name), false);
return true;
case CF_WRITE_ERROR:
@@ -1704,7 +1705,7 @@ void WiresharkMainWindow::exportSelectedPackets() {
if (discard_comments)
packet_list_->redrawVisiblePackets();
/* Add this filename to the list of recent files in the "Recent Files" submenu */
- add_menu_recent_capture_file(qUtf8Printable(file_name));
+ add_menu_recent_capture_file(qUtf8Printable(file_name), false);
goto cleanup;
case CF_WRITE_ERROR:
diff --git a/ui/qt/wireshark_main_window_slots.cpp b/ui/qt/wireshark_main_window_slots.cpp
index a81b1740b9..5a8458ce95 100644
--- a/ui/qt/wireshark_main_window_slots.cpp
+++ b/ui/qt/wireshark_main_window_slots.cpp
@@ -772,7 +772,7 @@ void WiresharkMainWindow::captureFileReadStarted(const QString &action) {
void WiresharkMainWindow::captureFileReadFinished() {
if (!capture_file_.capFile()->is_tempfile && capture_file_.capFile()->filename) {
/* Add this filename to the list of recent files in the "Recent Files" submenu */
- add_menu_recent_capture_file(capture_file_.capFile()->filename);
+ add_menu_recent_capture_file(capture_file_.capFile()->filename, false);
/* Remember folder for next Open dialog and save it in recent */
mainApp->setLastOpenDirFromFilename(capture_file_.capFile()->filename);
@@ -1087,6 +1087,13 @@ void WiresharkMainWindow::updateRecentCaptures() {
dock_menu_->insertAction(NULL, rda);
connect(rda, SIGNAL(triggered()), ra, SLOT(trigger()));
#endif
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+ if (recentMenu->actions().count() == static_cast<int>(prefs.gui_recent_files_count_max)) {
+#else
+ if (recentMenu->actions().count() == static_cast<qsizetype>(prefs.gui_recent_files_count_max)) {
+#endif
+ break;
+ }
}
if (recentMenu->actions().count() > 0) {
diff --git a/ui/recent.c b/ui/recent.c
index 116de9967e..d65ff8d59c 100644
--- a/ui/recent.c
+++ b/ui/recent.c
@@ -1358,7 +1358,7 @@ read_set_recent_pair_dynamic(gchar *key, const gchar *value,
return PREFS_SET_SYNTAX_ERR;
}
if (strcmp(key, RECENT_KEY_CAPTURE_FILE) == 0) {
- add_menu_recent_capture_file(value);
+ add_menu_recent_capture_file(value, true);
} else if (strcmp(key, RECENT_KEY_DISPLAY_FILTER) == 0) {
dfilter_combo_add_recent(value);
} else if (strcmp(key, RECENT_KEY_CAPTURE_FILTER) == 0) {
diff --git a/ui/recent_utils.h b/ui/recent_utils.h
index 711f80d1f1..466555e073 100644
--- a/ui/recent_utils.h
+++ b/ui/recent_utils.h
@@ -17,9 +17,16 @@
extern "C" {
#endif /* __cplusplus */
-/* Add a new recent capture filename to the "Recent Files" submenu
- (duplicates will be ignored) */
-extern void add_menu_recent_capture_file(const gchar *cf_name);
+/** Add a new recent capture filename to the "Recent Files" submenu
+ * (duplicates will be ignored)
+ *
+ * @param cf_name Capture filename to add
+ * @param force If true, then prefs.gui_recent_file_count_max will be
+ * ignored when adding the file. This is for startup, when the recent_common
+ * file is read before the prefs file. (It will be corrected later when
+ * prefs are read.)
+ */
+extern void add_menu_recent_capture_file(const gchar *cf_name, bool force);
/** Write all recent capture filenames to the user's recent file.
* @param rf recent file