forked from mia/Aegisub
When adding new hotkeys, automatically select and start editing the new hotkey
Originally committed to SVN as r6420.
This commit is contained in:
parent
499a9b2869
commit
f0933ecb1a
3 changed files with 27 additions and 11 deletions
|
@ -145,10 +145,11 @@ public:
|
|||
{
|
||||
}
|
||||
|
||||
void AddChild(Combo const& combo) {
|
||||
wxDataViewItem AddChild(Combo const& combo) {
|
||||
children.push_back(HotkeyModelCombo(this, combo));
|
||||
visible_items.push_back(wxDataViewItem(&children.back()));
|
||||
model->ItemAdded(wxDataViewItem(this), wxDataViewItem(&children.back()));
|
||||
return wxDataViewItem(&children.back());
|
||||
}
|
||||
|
||||
void Delete(wxDataViewItem const& item) {
|
||||
|
@ -307,8 +308,8 @@ bool HotkeyDataViewModel::SetValue(wxVariant const& variant, wxDataViewItem cons
|
|||
return get(item)->SetValue(variant, col);
|
||||
}
|
||||
|
||||
void HotkeyDataViewModel::New(wxDataViewItem item) {
|
||||
if (!item.IsOk()) return;
|
||||
wxDataViewItem HotkeyDataViewModel::New(wxDataViewItem item) {
|
||||
if (!item.IsOk()) return wxDataViewItem();
|
||||
|
||||
if (!IsContainer(item))
|
||||
item = GetParent(item);
|
||||
|
@ -316,7 +317,7 @@ void HotkeyDataViewModel::New(wxDataViewItem item) {
|
|||
HotkeyModelCategory *ctx = static_cast<HotkeyModelCategory*>(item.GetID());
|
||||
wxVariant name;
|
||||
ctx->GetValue(name, 0);
|
||||
ctx->AddChild(Combo(STD_STR(name.GetString()), "", std::vector<std::string>()));
|
||||
return ctx->AddChild(Combo(STD_STR(name.GetString()), "", std::vector<std::string>()));
|
||||
}
|
||||
|
||||
void HotkeyDataViewModel::Delete(wxDataViewItem const& item) {
|
||||
|
|
|
@ -46,7 +46,9 @@ public:
|
|||
HotkeyDataViewModel(Preferences *parent);
|
||||
|
||||
/// Create a new hotkey in the current context
|
||||
void New(wxDataViewItem item);
|
||||
/// @param item A context or hotkey entry
|
||||
/// @return The new hotkey
|
||||
wxDataViewItem New(wxDataViewItem item);
|
||||
/// Delete the currently selected hotkey
|
||||
void Delete(wxDataViewItem const& item);
|
||||
/// Update the hotkeys with changes made to the model
|
||||
|
|
|
@ -417,16 +417,29 @@ Interface_Hotkeys::Interface_Hotkeys(wxTreebook *book, Preferences *parent)
|
|||
SetSizerAndFit(sizer);
|
||||
}
|
||||
|
||||
static void edit_item(wxDataViewCtrl *dvc, wxDataViewItem item) {
|
||||
#if wxCHECK_VERSION(2, 9, 4)
|
||||
dvc->EditItem(item, dvc->GetColumn(0));
|
||||
#else
|
||||
dvc->StartEditor(item, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
void Interface_Hotkeys::OnNewButton(wxCommandEvent&) {
|
||||
model->New(dvc->GetSelection());
|
||||
wxDataViewItem sel = dvc->GetSelection();
|
||||
dvc->ExpandAncestors(sel);
|
||||
dvc->Expand(sel);
|
||||
|
||||
wxDataViewItem new_item = model->New(sel);
|
||||
if (new_item.IsOk()) {
|
||||
dvc->Select(new_item);
|
||||
dvc->EnsureVisible(new_item);
|
||||
edit_item(dvc, new_item);
|
||||
}
|
||||
}
|
||||
|
||||
void Interface_Hotkeys::OnEditButton(wxCommandEvent&) {
|
||||
#if wxCHECK_VERSION(2, 9, 4)
|
||||
dvc->EditItem(dvc->GetSelection(), dvc->GetColumn(0));
|
||||
#else
|
||||
dvc->StartEditor(dvc->GetSelection(), 0);
|
||||
#endif
|
||||
edit_item(dvc, dvc->GetSelection());
|
||||
}
|
||||
|
||||
void Interface_Hotkeys::OnDeleteButton(wxCommandEvent&) {
|
||||
|
|
Loading…
Reference in a new issue