From 10b1f156dbf382849126cfc37802e238b8aabef6 Mon Sep 17 00:00:00 2001 From: Tom Yan Date: Tue, 4 Jan 2022 21:04:55 +0800 Subject: [PATCH] fix preview callback _updatePreviewCallback() was used for both previewCheckbox.signal_toggled() (indirectly) and signal_update_preview() (directly). However, the state of the widget was neither set or checked in the latter case. We should simply use one callback for both signals and always set state for the widget according to the state of the checkbox. --- src/ui/dialog/filedialogimpl-gtkmm.cpp | 23 ++++++++--------------- src/ui/dialog/filedialogimpl-gtkmm.h | 5 ----- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/src/ui/dialog/filedialogimpl-gtkmm.cpp b/src/ui/dialog/filedialogimpl-gtkmm.cpp index 4b96b8715a..c3aba062dd 100644 --- a/src/ui/dialog/filedialogimpl-gtkmm.cpp +++ b/src/ui/dialog/filedialogimpl-gtkmm.cpp @@ -124,7 +124,7 @@ void FileDialogBaseGtk::internalSetup() previewCheckbox.set_label(Glib::ustring(_("Enable preview"))); previewCheckbox.set_active(enablePreview); - previewCheckbox.signal_toggled().connect(sigc::mem_fun(*this, &FileDialogBaseGtk::_previewEnabledCB)); + previewCheckbox.signal_toggled().connect(sigc::mem_fun(*this, &FileDialogBaseGtk::_updatePreviewCallback)); svgexportCheckbox.set_label(Glib::ustring(_("Export as SVG 1.1 per settings in Preferences dialog"))); svgexportCheckbox.set_active(enableSVGExport); @@ -153,18 +153,6 @@ void FileDialogBaseGtk::cleanup(bool showConfirmed) } -void FileDialogBaseGtk::_previewEnabledCB() -{ - bool enabled = previewCheckbox.get_active(); - set_preview_widget_active(enabled); - if (enabled) { - _updatePreviewCallback(); - } else if (svgPreview.is_visible()) { - // Clears out any current preview image. - svgPreview.showNoPreview(); - } -} - void FileDialogBaseGtk::_svgexportEnabledCB() { bool enabled = svgexportCheckbox.get_active(); @@ -179,14 +167,19 @@ void FileDialogBaseGtk::_svgexportEnabledCB() */ void FileDialogBaseGtk::_updatePreviewCallback() { - Glib::ustring fileName = get_preview_filename(); bool enabled = previewCheckbox.get_active(); + set_preview_widget_active(enabled); + + if (!enabled) + return; + + Glib::ustring fileName = get_preview_filename(); if (fileName.empty()) { fileName = get_preview_uri(); } - if (enabled && !fileName.empty()) { + if (!fileName.empty()) { svgPreview.set(fileName, _dialogType); } else { svgPreview.showNoPreview(); diff --git a/src/ui/dialog/filedialogimpl-gtkmm.h b/src/ui/dialog/filedialogimpl-gtkmm.h index 26a358b08d..349271891c 100644 --- a/src/ui/dialog/filedialogimpl-gtkmm.h +++ b/src/ui/dialog/filedialogimpl-gtkmm.h @@ -132,11 +132,6 @@ protected: private: void internalSetup(); - /** - * Callback for user changing preview checkbox - */ - void _previewEnabledCB(); - /** * Callback for seeing if the preview needs to be drawn */ -- GitLab