From 64465395c30ad5ae37211f33850acd2dcc9db4c5 Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Wed, 8 Mar 2023 17:29:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=93=E5=89=8D=E9=85=8D=E7=BD=AE=E6=9B=B4?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=8A=A8=E5=91=BD?= =?UTF-8?q?=E5=90=8D=EF=BC=9Bfix=20BUG-363?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sane/DlgPage.cpp | 4 ++-- sane/DlgSaveScheme.cpp | 4 ++-- sane/DlgSaveScheme.h | 2 +- sane/DlgSetting.cpp | 6 ++++-- sane/gb_json.cpp | 7 ++++--- sane/gb_json.h | 2 +- 6 files changed, 14 insertions(+), 11 deletions(-) diff --git a/sane/DlgPage.cpp b/sane/DlgPage.cpp index 52ce592..2498f48 100644 --- a/sane/DlgPage.cpp +++ b/sane/DlgPage.cpp @@ -1042,8 +1042,8 @@ void dlg_page::handle_command(WORD code, WORD id, HANDLE ctrl) wchar_t cls[128] = { 0 }; GetClassNameW((HWND)ctrl, cls, _countof(cls) - 1); - if (IS_EDIT(cls) && code != EN_CHANGE || - IS_COMBOX(cls) && code != CBN_SELCHANGE) + if ((IS_EDIT(cls) && code != EN_KILLFOCUS) || // for BUG-363 + (IS_COMBOX(cls) && code != CBN_SELCHANGE)) { return; } diff --git a/sane/DlgSaveScheme.cpp b/sane/DlgSaveScheme.cpp index 87f4899..553031d 100644 --- a/sane/DlgSaveScheme.cpp +++ b/sane/DlgSaveScheme.cpp @@ -177,13 +177,13 @@ void dlg_save_scheme::check_radio(UINT id, bool check) } -void dlg_save_scheme::set_info(const wchar_t* name, std::vector& existing, int mask) +void dlg_save_scheme::set_info(const wchar_t* name, std::vector& existing, int mask, const wchar_t* new_name) { bool set_method = false; name_ = name; existing_ = existing; - set_item_text(IDC_NAME, name); + set_item_text(IDC_NAME, new_name ? new_name : name); { std::wstring schem(local_trans::lang_trans_between_hz936(CONST_STRING_SAVE_OVERWRITE)); diff --git a/sane/DlgSaveScheme.h b/sane/DlgSaveScheme.h index 320c325..e3a3129 100644 --- a/sane/DlgSaveScheme.h +++ b/sane/DlgSaveScheme.h @@ -41,7 +41,7 @@ public: ~dlg_save_scheme(); public: - void set_info(const wchar_t* name, std::vector& existing, int mask); + void set_info(const wchar_t* name, std::vector& existing, int mask, const wchar_t* new_name = nullptr); save_method get_dispose(void); std::wstring get_name(void); }; diff --git a/sane/DlgSetting.cpp b/sane/DlgSetting.cpp index 23ceadd..a670633 100644 --- a/sane/DlgSetting.cpp +++ b/sane/DlgSetting.cpp @@ -577,9 +577,11 @@ void dlg_setting::save_changes_to_cur_scheme(int reason) else { dlg_save_scheme dlg(hwnd()); - std::wstring name(local_trans::a2u(schm->get_scheme_name().c_str(), CP_UTF8)); + std::wstring name(local_trans::a2u(schm->get_scheme_name().c_str(), CP_UTF8)), + suggest(local_trans::a2u(schm->auto_gen_scheme_name(local_trans::lang_trans_between_hz936, nullptr, false).c_str(), CP_UTF8)); - dlg.set_info(name.c_str(), now, SAVE_METHOD_MASK(SAVE_DISCARD) | SAVE_METHOD_MASK(SAVE_OVERWRITE) | SAVE_METHOD_MASK(SAVE_NEW)); + dlg.set_info(name.c_str(), now, SAVE_METHOD_MASK(SAVE_DISCARD) | SAVE_METHOD_MASK(SAVE_OVERWRITE) | SAVE_METHOD_MASK(SAVE_NEW) + , suggest.c_str()); dlg.do_modal(hwnd()); int dispose = dlg.get_dispose(); diff --git a/sane/gb_json.cpp b/sane/gb_json.cpp index 3aebefa..967b387 100644 --- a/sane/gb_json.cpp +++ b/sane/gb_json.cpp @@ -1645,9 +1645,9 @@ namespace gb scheme_name_ = name ? name : ""; } - std::string sane_config_schm::auto_gen_scheme_name(const char* (__stdcall* lang_trans)(const char*, bool/*true - default language to cur language*/, void*), void* param) + std::string sane_config_schm::auto_gen_scheme_name(const char* (__stdcall* lang_trans)(const char*, bool/*true - default language to cur language*/, void*), void* param, bool replace_name) { - std::string name(""), old(std::move(scheme_name_)), key(""), val(""), add(""); + std::string name(""), key(""), val(""), add(""); int cnt = 0; if (first_config(key, val)) @@ -1681,7 +1681,8 @@ namespace gb if (cnt) name += "(" + std::to_string(++cnt) + ")"; } - scheme_name_ = name; + if(replace_name) + scheme_name_ = name; return std::move(name); } diff --git a/sane/gb_json.h b/sane/gb_json.h index 6d6fc7b..e53787f 100644 --- a/sane/gb_json.h +++ b/sane/gb_json.h @@ -216,7 +216,7 @@ namespace gb std::string get_scheme_name(void); void set_scheme_name(const char* name); - std::string auto_gen_scheme_name(const char* (__stdcall* lang_trans)(const char*, bool/*true - default language to cur language*/, void*), void* param); + std::string auto_gen_scheme_name(const char* (__stdcall* lang_trans)(const char*, bool/*true - default language to cur language*/, void*), void* param, bool replace_name = true); }; class scanner_cfg : public refer