summaryrefslogtreecommitdiff
path: root/src/fl_shortcut.cxx
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2007-11-19 16:21:19 +0000
committerMatthias Melcher <fltk@matthiasm.com>2007-11-19 16:21:19 +0000
commitd2242d59ef11429f02b3c032d4bd786e4c3dafc9 (patch)
tree64a392bc1a1b756b5ec530c5482292c505928d92 /src/fl_shortcut.cxx
parentba396b3ea4fa6e2d7c488e0c0897eebd76f5bf21 (diff)
STR 1745: in fl_ask, if the rightmost button has a shortcut in its label, the default 'Escape' is overridden.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@5981 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/fl_shortcut.cxx')
-rw-r--r--src/fl_shortcut.cxx25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/fl_shortcut.cxx b/src/fl_shortcut.cxx
index 34c9d4dde..98c13ad59 100644
--- a/src/fl_shortcut.cxx
+++ b/src/fl_shortcut.cxx
@@ -207,19 +207,28 @@ int fl_old_shortcut(const char* s) {
// Tests for &x shortcuts in button labels:
-int Fl_Widget::test_shortcut(const char *l) {
- char c = Fl::event_text()[0];
- if (!c || !l) return 0;
+char Fl_Widget::label_shortcut(const char *t) {
+ if (!t) return 0;
for (;;) {
- if (!*l) return 0;
- if (*l++ == '&' && *l) {
- if (*l == '&') l++;
- else if (*l == c) return 1;
- else return 0;
+ if (*t==0) return 0;
+ if (*t=='&') {
+ char s = t[1];
+ if (s==0) return 0;
+ else if (s=='&') t++;
+ else return s;
}
+ t++;
}
}
+int Fl_Widget::test_shortcut(const char *t) {
+ char c = Fl::event_text()[0];
+ if (!c || !t) return 0;
+ if (c == label_shortcut(t))
+ return 1;
+ return 0;
+}
+
int Fl_Widget::test_shortcut() {
if (!(flags()&SHORTCUT_LABEL)) return 0;
return test_shortcut(label());