David PHAM-VAN

Fix print dialog crash on Linux

1 # Changelog 1 # Changelog
2 2
  3 +## 5.6.8
  4 +
  5 +- Fix print dialog crash on Linux
  6 +
3 ## 5.6.7 7 ## 5.6.7
4 8
5 - Fix imports for Dart 2.15 9 - Fix imports for Dart 2.15
@@ -105,6 +105,9 @@ static void job_completed(GtkPrintJob* gtk_print_job, @@ -105,6 +105,9 @@ static void job_completed(GtkPrintJob* gtk_print_job,
105 gpointer user_data, 105 gpointer user_data,
106 const GError* error) { 106 const GError* error) {
107 auto job = static_cast<print_job*>(user_data); 107 auto job = static_cast<print_job*>(user_data);
  108 + if (job->dialog) {
  109 + gtk_widget_destroy(GTK_WIDGET(job->dialog));
  110 + }
108 on_completed(job, error == nullptr, 111 on_completed(job, error == nullptr,
109 error != nullptr ? error->message : nullptr); 112 error != nullptr ? error->message : nullptr);
110 } 113 }
@@ -135,8 +138,7 @@ bool print_job::print_pdf(const gchar* name, @@ -135,8 +138,7 @@ bool print_job::print_pdf(const gchar* name,
135 setup = gtk_page_setup_new(); 138 setup = gtk_page_setup_new();
136 139
137 } else { 140 } else {
138 - auto dialog =  
139 - GTK_PRINT_UNIX_DIALOG(gtk_print_unix_dialog_new(name, nullptr)); 141 + dialog = GTK_PRINT_UNIX_DIALOG(gtk_print_unix_dialog_new(name, nullptr));
140 gtk_print_unix_dialog_set_manual_capabilities( 142 gtk_print_unix_dialog_set_manual_capabilities(
141 dialog, (GtkPrintCapabilities)(GTK_PRINT_CAPABILITY_GENERATE_PDF)); 143 dialog, (GtkPrintCapabilities)(GTK_PRINT_CAPABILITY_GENERATE_PDF));
142 gtk_print_unix_dialog_set_embed_page_setup(dialog, true); 144 gtk_print_unix_dialog_set_embed_page_setup(dialog, true);
@@ -157,7 +159,7 @@ bool print_job::print_pdf(const gchar* name, @@ -157,7 +159,7 @@ bool print_job::print_pdf(const gchar* name,
157 gtk_print_unix_dialog_get_settings(GTK_PRINT_UNIX_DIALOG(dialog)); 159 gtk_print_unix_dialog_get_settings(GTK_PRINT_UNIX_DIALOG(dialog));
158 setup = gtk_print_unix_dialog_get_page_setup( 160 setup = gtk_print_unix_dialog_get_page_setup(
159 GTK_PRINT_UNIX_DIALOG(dialog)); 161 GTK_PRINT_UNIX_DIALOG(dialog));
160 - gtk_widget_destroy(GTK_WIDGET(dialog)); 162 + gtk_widget_hide(GTK_WIDGET(dialog));
161 loop = false; 163 loop = false;
162 } break; 164 } break;
163 case GTK_RESPONSE_APPLY: // Preview 165 case GTK_RESPONSE_APPLY: // Preview
@@ -31,6 +31,8 @@ class print_job { @@ -31,6 +31,8 @@ class print_job {
31 GtkPrintJob* printJob; 31 GtkPrintJob* printJob;
32 32
33 public: 33 public:
  34 + GtkPrintUnixDialog* dialog = nullptr;
  35 +
34 print_job(int index); 36 print_job(int index);
35 37
36 ~print_job(); 38 ~print_job();
@@ -6,7 +6,7 @@ description: > @@ -6,7 +6,7 @@ description: >
6 homepage: https://github.com/DavBfr/dart_pdf/tree/master/printing 6 homepage: https://github.com/DavBfr/dart_pdf/tree/master/printing
7 repository: https://github.com/DavBfr/dart_pdf 7 repository: https://github.com/DavBfr/dart_pdf
8 issue_tracker: https://github.com/DavBfr/dart_pdf/issues 8 issue_tracker: https://github.com/DavBfr/dart_pdf/issues
9 -version: 5.6.7 9 +version: 5.6.8
10 10
11 environment: 11 environment:
12 sdk: ">=2.12.0 <3.0.0" 12 sdk: ">=2.12.0 <3.0.0"