diff --git a/include/execp.cpp b/include/execp.cpp index 0d29b4556..3c14a5546 100755 --- a/include/execp.cpp +++ b/include/execp.cpp @@ -10,7 +10,6 @@ static bool is_outlook_menu_chain() const TFixed_string app(__argv[0]); if (app.match("*ba[0,1]*", true)) return false; - TConfig ini(CONFIG_GUI, "Colors"); return ini.get_int("TreeView") == 3; } diff --git a/include/mask.cpp b/include/mask.cpp index f15b996bf..8fcbe2415 100755 --- a/include/mask.cpp +++ b/include/mask.cpp @@ -718,7 +718,7 @@ bool TMask::stop_run( for (i = 0; i < last; i++) { const TMask_field& f = fld(i); - if (f.active()) + if (f.is_operable() && !f.is_editable() && f.active()) { if (f.is_kind_of(CLASS_BUTTON_FIELD)) { @@ -968,7 +968,7 @@ bool TMask::on_key( TMask_field& f = fld(fire); if (f.parent() != myparent) break; - if (f.is_kind_of(CLASS_SHEET_FIELD)) + if (f.is_sheet()) { TSheet_field& s = (TSheet_field&)f; const int newrow = s.append() ? -1 : ( _focus == fire ? s.selected() + 1: 0); @@ -994,10 +994,20 @@ bool TMask::on_key( for (int i = fields()-1; i >= 0; i--) { TMask_field& f = fld(i); - if (f.active() && f.is_kind_of(CLASS_BUTTON_FIELD)) + if (f.is_operable() && !f.is_editable() && f.active()) { - TButton_field& b = (TButton_field&)f; - if (b.virtual_key() == key) + KEY vk = 0; + if (f.is_kind_of(CLASS_BUTTON_FIELD)) + { + TButton_field& b = (TButton_field&)f; + vk = b.virtual_key(); + } else + if (f.is_kind_of(CLASS_BUTTON_TOOL)) + { + TButton_tool& t = (TButton_tool&)f; + vk = t.virtual_key(); + } + if (vk > 0 && vk == key) { f.on_key(K_SPACE); break; diff --git a/include/maskfld.cpp b/include/maskfld.cpp index 193cbe317..079e86c68 100755 --- a/include/maskfld.cpp +++ b/include/maskfld.cpp @@ -901,12 +901,12 @@ bool TOperable_field::do_message(int num) } } - if (cmd == 9) + if (cmd == 9) // EXIT { mask().stop_run(atoi(dlg)); continue; } else - if (cmd == 15) + if (cmd == 15) // RUN { run_app(mask(), msg); continue; @@ -1088,8 +1088,7 @@ bool TButton_field::parse_item(TScanner& scanner) void TButton_field::create(WINDOW parent) { - _exit_key = 0; - _virtual_key = 0; + _virtual_key = _exit_key = 0; switch (dlg()) { case DLG_OK: @@ -1169,7 +1168,7 @@ void TButton_field::create(WINDOW parent) if (_virtual_key == 0) { - char acc = ((TPushbutton_control*)_ctl)->mnemonic(); + const char acc = ((TPushbutton_control*)_ctl)->mnemonic(); _virtual_key = (acc > ' ') ? toupper(acc) : _exit_key; } } diff --git a/include/relapbar.h b/include/relapbar.h index 3c63d6fc5..671852ca6 100755 --- a/include/relapbar.h +++ b/include/relapbar.h @@ -1,20 +1,20 @@ BUTTON DLG_NEWREC 2 2 BEGIN - PROMPT 1 1 "Nuovo" + PROMPT 1 1 "~Nuovo" MESSAGE EXIT,K_INS PICTURE BMP_NEWREC END BUTTON DLG_SAVEREC 2 2 BEGIN - PROMPT 2 1 "Registra" + PROMPT 2 1 "~Registra" MESSAGE EXIT,K_SAVE PICTURE BMP_SAVEREC END BUTTON DLG_DELREC 2 2 BEGIN - PROMPT 3 1 "Elimina" + PROMPT 3 1 "~Elimina" MESSAGE EXIT,K_DEL PICTURE BMP_DELREC END @@ -35,7 +35,7 @@ END BUTTON DLG_FINDREC 2 2 BEGIN - PROMPT 6 1 "Ricerca" + PROMPT 6 1 "Ri~cerca" MESSAGE EXIT,K_F9 PICTURE 166 END diff --git a/include/toolfld.cpp b/include/toolfld.cpp index 7f4fd68c1..95992763c 100755 --- a/include/toolfld.cpp +++ b/include/toolfld.cpp @@ -79,7 +79,7 @@ void TButton_tool::set_exit_key(KEY k) void TButton_tool::create(WINDOW toolbar) { TTool_field::create(toolbar); - _exit_key = 0; + _virtual_key = _exit_key = 0; switch (dlg()) { case DLG_OK: @@ -92,20 +92,21 @@ void TButton_tool::create(WINDOW toolbar) case DLG_CANCEL: if (_ctl_data._prompt.empty()) _ctl_data._prompt = TR("Annulla"); + _virtual_key = K_ESC; set_exit_key(K_ESC); if (_ctl_data._bmp_up <= 0) _ctl_data._bmp_up = BMP_CANCEL; break; case DLG_DELREC: if (_ctl_data._prompt.empty()) - _ctl_data._prompt = TR("Elimina"); + _ctl_data._prompt = TR("~Elimina"); set_exit_key(K_DEL); if (_ctl_data._bmp_up <= 0) _ctl_data._bmp_up = BMP_DELREC; break; case DLG_PRINT: if (_ctl_data._prompt.empty()) - _ctl_data._prompt = TR("Stampa"); + _ctl_data._prompt = TR("~Stampa"); set_exit_key(K_ENTER); if (_ctl_data._bmp_up <= 0) _ctl_data._bmp_up = BMP_PRINT; @@ -120,6 +121,7 @@ void TButton_tool::create(WINDOW toolbar) case DLG_QUIT: if (_ctl_data._prompt.empty()) _ctl_data._prompt = TR("Fine"); + _virtual_key = K_F4; // Alt+F4 set_exit_key(K_QUIT); if (_ctl_data._bmp_up <= 0) _ctl_data._bmp_up = BMP_QUIT; @@ -146,8 +148,13 @@ void TButton_tool::create(WINDOW toolbar) default: break; } - - _ctl_data._prompt.strip("~&"); // Togli eventuali acceleratori antiestetici + + if (_virtual_key <= 0) + { + const char acc = _ctl_data._prompt.after("~")[0]; + if (acc >= 'A'&& acc <= 'z') + _virtual_key = toupper(acc); + } if (dlg() <= 0 || _ctl_data._bmp_up <= 0) xvt_toolbar_add_control(toolbar, -1, TOOL_SEPARATOR, "", 0, _ctl_data._width, -1); @@ -156,7 +163,7 @@ void TButton_tool::create(WINDOW toolbar) _ctl_data._bmp_up, _ctl_data._width, -1); TToken_string* mess = message(0); - if (mess) + if (mess != NULL) { TToken_string msg(mess->get(0), ','); const TFixed_string m = msg.get(0); diff --git a/include/toolfld.h b/include/toolfld.h index 89db427eb..fbefe6fb3 100755 --- a/include/toolfld.h +++ b/include/toolfld.h @@ -25,7 +25,7 @@ public: class TButton_tool : public TTool_field { - KEY _exit_key; + KEY _virtual_key, _exit_key; protected: virtual void parse_head(TScanner& scanner); @@ -37,6 +37,7 @@ public: virtual word class_id() const; virtual bool is_kind_of(word cid) const; void set_exit_key(KEY k); + KEY virtual_key() const { return _virtual_key; } KEY exit_key() const { return _exit_key; } TButton_tool(TMask* mask); };