summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2005-12-30 14:11:04 +0000
committerMatthias Melcher <fltk@matthiasm.com>2005-12-30 14:11:04 +0000
commit0ea6761db282d3354fd4a5465785c26071aad6a9 (patch)
treeecd97be87f1393e7f34600cf3c3cddba32a96289
parent5c4e1336ba5004897e3407599be803fc1fa8785e (diff)
- Fixed keyboard shortcut handling in FLUID and shortcut
labeling in FLTK (STR #1129) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@4727 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--CHANGES2
-rw-r--r--fluid/Fl_Menu_Type.cxx4
-rw-r--r--src/fl_shortcut.cxx14
3 files changed, 20 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index 16e82655f..067b11877 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,8 @@ CHANGES IN FLTK 1.1.7
- Documentation fixes (STR #571, STR #648, STR #692, STR
#730, STR #744, STR #745, STR #931, STR #942, STR #960,
STR #969)
+ - Fixed keyboard shortcut handling in FLUID and shortcut
+ labeling in FLTK (STR #1129)
- Fixed include path for CMake build (STR #1123)
- Fixed unnecessary delay in WIN32 event handling
(STR #1104)
diff --git a/fluid/Fl_Menu_Type.cxx b/fluid/Fl_Menu_Type.cxx
index a99187093..5d3295072 100644
--- a/fluid/Fl_Menu_Type.cxx
+++ b/fluid/Fl_Menu_Type.cxx
@@ -534,6 +534,10 @@ int Shortcut_Button::handle(int e) {
if (!value()) return 0;
int v = Fl::event_text()[0];
if (v > 32 && v < 0x7f || v > 0xa0 && v <= 0xff) {
+ if (isupper(v)) {
+ v = tolower(v);
+ v |= FL_SHIFT;
+ }
v = v | Fl::event_state()&(FL_META|FL_ALT|FL_CTRL);
} else {
v = Fl::event_state()&(FL_META|FL_ALT|FL_CTRL|FL_SHIFT) | Fl::event_key();
diff --git a/src/fl_shortcut.cxx b/src/fl_shortcut.cxx
index 31cbe7297..69e11ede5 100644
--- a/src/fl_shortcut.cxx
+++ b/src/fl_shortcut.cxx
@@ -54,6 +54,13 @@
int Fl::test_shortcut(int shortcut) {
if (!shortcut) return 0;
+ int v = shortcut & 0xffff;
+ if (v > 32 && v < 0x7f || v > 0xa0 && v <= 0xff) {
+ if (isupper(v)) {
+ shortcut |= FL_SHIFT;
+ }
+ }
+
int shift = Fl::event_state();
// see if any required shift flags are off:
if ((shortcut&shift) != (shortcut&0x7fff0000)) return 0;
@@ -118,6 +125,13 @@ const char * fl_shortcut_label(int shortcut) {
static char buf[20];
char *p = buf;
if (!shortcut) {*p = 0; return buf;}
+ // fix upper case shortcuts
+ int v = shortcut & 0xffff;
+ if (v > 32 && v < 0x7f || v > 0xa0 && v <= 0xff) {
+ if (isupper(v)) {
+ shortcut |= FL_SHIFT;
+ }
+ }
#ifdef __APPLE__
// \todo Mac : we might want to change the symbols for Mac users - consider drawing Apple Symbols... .
if (shortcut & FL_SHIFT) {strcpy(p,"Shift+"); p += 6;} //: Mac hollow up arrow