diff options
author | Guy Harris <guy@alum.mit.edu> | 2016-02-29 18:52:52 -0800 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2016-03-01 02:53:44 +0000 |
commit | c73cf3cd00c1fb144e67ef79ea55be41993b79be (patch) | |
tree | 19a5343fab0b5abeb2832417f20cd7af78642dae /ui | |
parent | c0b29fcddd6eb9c7956ff63836a71a1d90169daa (diff) | |
download | wireshark-c73cf3cd00c1fb144e67ef79ea55be41993b79be.tar.gz |
Don't show a progress bar when previewing for the Qt print dialog.
We don't do much work to do that - we don't print anything before the
first selected page, and once we're finished generating that page, we
terminate the printing process - so it shouldn't need a progress bar.
(If it needs a progress bar, We Have A Problem, as that slows down the
drawing of the dialog box.)
This should prevent the problem seen in bug 12040.
Bug: 12040
Change-Id: I129191e06fff3e1eb59a9631c7395b9e7f650809
Reviewed-on: https://code.wireshark.org/review/14255
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'ui')
-rw-r--r-- | ui/gtk/print_dlg.c | 2 | ||||
-rw-r--r-- | ui/qt/export_dissection_dialog.cpp | 2 | ||||
-rw-r--r-- | ui/qt/print_dialog.cpp | 14 | ||||
-rw-r--r-- | ui/win32/file_dlg_win32.c | 4 |
4 files changed, 12 insertions, 10 deletions
diff --git a/ui/gtk/print_dlg.c b/ui/gtk/print_dlg.c index d3f9b5deb7..262e953695 100644 --- a/ui/gtk/print_dlg.c +++ b/ui/gtk/print_dlg.c @@ -1109,7 +1109,7 @@ print_ok_cb(GtkWidget *ok_bt, gpointer parent_w) g_assert_not_reached(); return; } - status = cf_print_packets(&cfile, args); + status = cf_print_packets(&cfile, args, TRUE); } switch (status) { diff --git a/ui/qt/export_dissection_dialog.cpp b/ui/qt/export_dissection_dialog.cpp index afd84243cc..53f6f869e1 100644 --- a/ui/qt/export_dissection_dialog.cpp +++ b/ui/qt/export_dissection_dialog.cpp @@ -168,7 +168,7 @@ int ExportDissectionDialog::exec() open_failure_alert_box(print_args_.file, errno, TRUE); return QDialog::Rejected; } - status = cf_print_packets(cap_file_, &print_args_); + status = cf_print_packets(cap_file_, &print_args_, TRUE); break; case export_type_csv: /* CSV */ status = cf_write_csv_packets(cap_file_, &print_args_); diff --git a/ui/qt/print_dialog.cpp b/ui/qt/print_dialog.cpp index 58f4cb0bba..07979b5306 100644 --- a/ui/qt/print_dialog.cpp +++ b/ui/qt/print_dialog.cpp @@ -145,6 +145,8 @@ gboolean PrintDialog::printHeader() if (page_pos_ > page_top) { if (in_preview_) { + // When generating a preview, only generate the first page; + // if we're past the first page, stop the printing process. return FALSE; } // Second and subsequent pages only @@ -178,6 +180,8 @@ gboolean PrintDialog::printLine(int indent, const char *line) if (cur_printer_->pageRect().height() < page_pos_ + out_rect.height()) { if (in_preview_) { + // When generating a preview, only generate the first page; + // if we're past the first page, stop the printing process. return FALSE; } if (*line == '\0') { // Separator @@ -257,12 +261,10 @@ void PrintDialog::printPackets(QPrinter *printer, bool in_preview) QMessageBox::Ok); close(); } - // cf_print_packets updates the progress bar which in turn calls - // WiresharkApplication::processEvents(), which can make the preview trip - // over itself. - preview_->setUpdatesEnabled(false); - cf_print_packets(cap_file_, &print_args_); - preview_->setUpdatesEnabled(true); + // Don't show a progress bar if we're previewing; if it takes a + // significant amount of time to generate a preview of the first + // page, We Have A Real Problem + cf_print_packets(cap_file_, &print_args_, in_preview ? FALSE : TRUE); cur_printer_ = NULL; cur_painter_ = NULL; painter.end(); diff --git a/ui/win32/file_dlg_win32.c b/ui/win32/file_dlg_win32.c index b7630dfd14..15eca21a30 100644 --- a/ui/win32/file_dlg_win32.c +++ b/ui/win32/file_dlg_win32.c @@ -697,7 +697,7 @@ win32_export_file(HWND h_wnd, capture_file *cf, export_type_e export_type) { g_free( (void *) ofn); return; } - status = cf_print_packets(cf, &print_args); + status = cf_print_packets(cf, &print_args, TRUE); break; case export_type_ps: /* PostScript (r) */ print_args.stream = print_stream_ps_new(TRUE, print_args.file); @@ -706,7 +706,7 @@ win32_export_file(HWND h_wnd, capture_file *cf, export_type_e export_type) { g_free( (void *) ofn); return; } - status = cf_print_packets(cf, &print_args); + status = cf_print_packets(cf, &print_args, TRUE); break; case export_type_csv: /* CSV */ status = cf_write_csv_packets(cf, &print_args); |