mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 11:16:55 +00:00
Fix for bug #8939: Don't just close if the user enters a shortcut
that is already assigned. From new contributor Roy Xia.
This commit is contained in:
parent
a818ed0aab
commit
717d19d3c3
@ -1907,6 +1907,14 @@ contributors = [
|
|||||||
"3 March 2014",
|
"3 March 2014",
|
||||||
u"Chinese (traditional) translations"),
|
u"Chinese (traditional) translations"),
|
||||||
|
|
||||||
|
contributor(u"Roy Xia",
|
||||||
|
"royxia062 () gmail ! com",
|
||||||
|
"GPL",
|
||||||
|
"GPL Statement",
|
||||||
|
"m=139434481324689",
|
||||||
|
"9 March 2014",
|
||||||
|
u"Bugfixing"),
|
||||||
|
|
||||||
contributor(u"Yihui Xie",
|
contributor(u"Yihui Xie",
|
||||||
"xie () yihui ! name",
|
"xie () yihui ! name",
|
||||||
"GPL",
|
"GPL",
|
||||||
|
@ -3182,8 +3182,6 @@ void PrefShortcuts::shortcutOkPressed()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
shortcut_->accept();
|
|
||||||
|
|
||||||
// check to see if there's been any change
|
// check to see if there's been any change
|
||||||
FuncRequest oldBinding = system_bind_.getBinding(k);
|
FuncRequest oldBinding = system_bind_.getBinding(k);
|
||||||
if (oldBinding.action() == LFUN_UNKNOWN_ACTION)
|
if (oldBinding.action() == LFUN_UNKNOWN_ACTION)
|
||||||
@ -3192,20 +3190,40 @@ void PrefShortcuts::shortcutOkPressed()
|
|||||||
// nothing has changed
|
// nothing has changed
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// make sure this key isn't already bound---and, if so, not unbound
|
// make sure this key isn't already bound---and, if so, prompt user
|
||||||
FuncCode const unbind = user_unbind_.getBinding(k).action();
|
FuncCode const unbind = user_unbind_.getBinding(k).action();
|
||||||
docstring const action_string = makeCmdString(oldBinding);
|
docstring const action_string = makeCmdString(oldBinding);
|
||||||
if (oldBinding.action() > LFUN_NOACTION && unbind == LFUN_UNKNOWN_ACTION
|
if (oldBinding.action() > LFUN_NOACTION && unbind == LFUN_UNKNOWN_ACTION
|
||||||
&& save_lfun_ != toqstr(action_string)) {
|
&& save_lfun_ != toqstr(action_string)) {
|
||||||
// FIXME Perhaps we should offer to over-write the old shortcut?
|
docstring const new_action_string = makeCmdString(func);
|
||||||
// If so, we'll need to remove it from our list, etc.
|
docstring const text = bformat(_("Shortcut `%1$s' is already bound to "
|
||||||
Alert::error(_("Failed to create shortcut"),
|
"%2$s.\n"
|
||||||
bformat(_("Shortcut `%1$s' is already bound to:\n%2$s\n"
|
"Are you sure you want to unbind the "
|
||||||
"You need to remove that binding before creating a new one."),
|
"current shortcut and bind it to %3$s?"),
|
||||||
k.print(KeySequence::ForGui), action_string));
|
k.print(KeySequence::ForGui), action_string,
|
||||||
return;
|
new_action_string);
|
||||||
|
int ret = Alert::prompt(_("Redefine shortcut?"),
|
||||||
|
text, 0, 1, _("&Redefine"), _("&Cancel"));
|
||||||
|
if (ret != 0)
|
||||||
|
return;
|
||||||
|
QString const sequence_text = toqstr(k.print(KeySequence::ForGui));
|
||||||
|
QList<QTreeWidgetItem*> items = shortcutsTW->findItems(sequence_text,
|
||||||
|
Qt::MatchFlags(Qt::MatchExactly | Qt::MatchRecursive), 1);
|
||||||
|
if (items.size() > 0) {
|
||||||
|
// should always happen
|
||||||
|
bool expanded = items[0]->parent()->isExpanded();
|
||||||
|
shortcutsTW->setCurrentItem(items[0]);
|
||||||
|
removeShortcut();
|
||||||
|
shortcutsTW->setCurrentItem(0);
|
||||||
|
// make sure user doesn't see tree expansion if
|
||||||
|
// old binding wasn't in an expanded tree
|
||||||
|
if (!expanded)
|
||||||
|
items[0]->parent()->setExpanded(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shortcut_->accept();
|
||||||
|
|
||||||
if (!save_lfun_.isEmpty())
|
if (!save_lfun_.isEmpty())
|
||||||
// real modification of the lfun's shortcut,
|
// real modification of the lfun's shortcut,
|
||||||
// so remove the previous one
|
// so remove the previous one
|
||||||
|
Loading…
Reference in New Issue
Block a user