, unbind_box (BUTTONBOX_END)
{
- can_bind = false;
- last_state = 0;
+ last_keyval = 0;
model = TreeStore::create(columns);
bool
KeyEditor::on_key_press_event (GdkEventKey* ev)
{
- can_bind = true;
- last_state = ev->state;
+ if (!ev->is_modifier) {
+ last_keyval = ev->keyval;
+ }
return false;
}
bool
KeyEditor::on_key_release_event (GdkEventKey* ev)
{
- if (ARDOUR::Profile->get_sae() || !can_bind || ev->state != last_state) {
+ if (ARDOUR::Profile->get_sae() || last_keyval == 0) {
return false;
}
goto out;
}
- Gtkmm2ext::possibly_translate_keyval_to_make_legal_accelerator (ev->keyval);
+ GdkModifierType mod = (GdkModifierType)(Keyboard::RelevantModifierKeyMask & ev->state);
+ Gtkmm2ext::possibly_translate_keyval_to_make_legal_accelerator (ev->keyval);
+ Gtkmm2ext::possibly_translate_mod_to_make_legal_accelerator (mod);
bool result = AccelMap::change_entry (path,
- ev->keyval,
- ModifierType (Keyboard::RelevantModifierKeyMask & ev->state),
+ last_keyval,
+ Gdk::ModifierType(mod),
true);
if (result) {
AccelKey key;
(*i)[columns.binding] = ActionManager::get_key_representation (path, key);
+ unbind_button.set_sensitive (true);
}
}
out:
- can_bind = false;
+ last_keyval = 0;
return true;
}
KeyEditor::reset ()
{
Keyboard::the_keyboard().reset_bindings ();
+ populate ();
+ view.get_selection()->unselect_all ();
+ populate ();
}