diff --git a/modules/twainui/hg_settingdialog.cpp b/modules/twainui/hg_settingdialog.cpp index 61e9a557..98bfac73 100644 --- a/modules/twainui/hg_settingdialog.cpp +++ b/modules/twainui/hg_settingdialog.cpp @@ -1,5 +1,4 @@ #include "hg_settingdialog.h" - #include #include #include "cutpapertool.h" @@ -13,7 +12,7 @@ #include #include "device_menu.h" #include "dialog_device_scan.h" - +hg_settingdialog * hg_setting_ui_ =NULL; std::string hg_settingdialog::property_combox_data_type_ = "combox_value_type"; hg_settingdialog::hg_settingdialog(SANE_Handle handle, const SANEAPI* saneApi, bool showScan, const char* devName, @@ -93,7 +92,7 @@ hg_settingdialog::hg_settingdialog(SANE_Handle handle, const SANEAPI* saneApi, b m_gammaData.table[i] = i & 0x0ff; memcpy(&m_saneAPI, saneApi, sizeof(SANEAPI)); - m_closeButton = closeButtonCancel; + m_closeButton = closeButtonNormal; initUi(); on_current_scheme_changed(); @@ -108,6 +107,7 @@ hg_settingdialog::~hg_settingdialog() cur_scheme_->release(); cur_cfg_->release(); + hg_setting_ui_ = NULL; } void hg_settingdialog::initUi() @@ -1469,7 +1469,7 @@ void hg_settingdialog::slot_buttonOkClicked() void hg_settingdialog::slot_buttonCancelClicked() { m_closeButton = closeButtonCancel; - m_callback(UI_RESULT_CLOSE_CANCEL); + m_callback(UI_RESULT_CLOSE_NORMAL); close(); } @@ -1544,6 +1544,11 @@ void hg_settingdialog::closeEvent(QCloseEvent* e) cancel_setting(); } + if (closeButtonNormal == m_closeButton) + { + m_callback(UI_RESULT_CLOSE_NORMAL); + } + e->accept(); } diff --git a/modules/twainui/hg_settingdialog.h b/modules/twainui/hg_settingdialog.h index 3e2b40de..56f8c557 100644 --- a/modules/twainui/hg_settingdialog.h +++ b/modules/twainui/hg_settingdialog.h @@ -67,6 +67,7 @@ public: { closeButtonOk = 0, closeButtonCancel, + closeButtonNormal, closeButtonScan, }; diff --git a/modules/twainui/twainui.cpp b/modules/twainui/twainui.cpp index 8f30b6db..b4be61f3 100644 --- a/modules/twainui/twainui.cpp +++ b/modules/twainui/twainui.cpp @@ -11,7 +11,7 @@ extern HINSTANCE g_hInst; extern bool g_ownApplication; #endif - +extern hg_settingdialog * hg_setting_ui_; int choose_scanner(const std::vector &devs) { QWidget* qParent = nullptr; @@ -84,7 +84,6 @@ void twain_ui_free(void *buf) } } -hg_settingdialog *hg_setting_ui = nullptr; int show_setting_ui(SANE_Handle device, HWND parent, LPSANEAPI api, const char *devName, bool with_scan, std::function callback) { if (nullptr == api || nullptr == device) @@ -104,9 +103,9 @@ int show_setting_ui(SANE_Handle device, HWND parent, LPSANEAPI api, const char * qParent = parent; #endif - hg_setting_ui = new hg_settingdialog(device, api, with_scan, devName, callback, qParent); - hg_setting_ui->show(); - + hg_setting_ui_ = new hg_settingdialog(device, api, with_scan, devName, callback, qParent); + hg_setting_ui_->setModal(true); + hg_setting_ui_->show(); return 0; } @@ -127,12 +126,13 @@ int show_progress_ui(HWND parent, std::function callback, std: #endif - if(nullptr != hg_setting_ui) + if(nullptr != hg_setting_ui_) { - qParent = hg_setting_ui; + qParent = hg_setting_ui_; } Dialog_progress_ui *dlg = new Dialog_progress_ui(callback, notify, qParent); + dlg->setModal(true); dlg->show(); return 0;