From 8683ea2c810a3d689e436a8d13abbbba50efc4f5 Mon Sep 17 00:00:00 2001 From: Matthias Melcher Date: Wed, 23 Apr 2008 14:19:58 +0000 Subject: Adding keyboard shortcut to Fl_Value_Input and Fl_Text_Editor git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6111 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_Text_Display.cxx | 10 ++++++++++ src/Fl_Text_Editor.cxx | 7 +++++++ src/Fl_Value_Input.cxx | 3 +++ 3 files changed, 20 insertions(+) (limited to 'src') diff --git a/src/Fl_Text_Display.cxx b/src/Fl_Text_Display.cxx index 5ae5f6ff2..e0f26e01c 100644 --- a/src/Fl_Text_Display.cxx +++ b/src/Fl_Text_Display.cxx @@ -85,12 +85,14 @@ Fl_Text_Display::Fl_Text_Display(int X, int Y, int W, int H, const char* l) damage_range2_start = damage_range2_end = -1; dragPos = dragType = dragging = 0; display_insert_position_hint = 0; + shortcut_ = 0; color(FL_BACKGROUND2_COLOR, FL_SELECTION_COLOR); box(FL_DOWN_FRAME); textsize((uchar)FL_NORMAL_SIZE); textcolor(FL_FOREGROUND_COLOR); textfont(FL_HELVETICA); + set_flag(SHORTCUT_LABEL); text_area.x = 0; text_area.y = 0; @@ -3261,6 +3263,14 @@ int Fl_Text_Display::handle(int event) { if (mHScrollBar->handle(event)) return 1; break; + + case FL_SHORTCUT: + if (!(shortcut() ? Fl::test_shortcut(shortcut()) : test_shortcut())) + return 0; + if (Fl::visible_focus() && handle(FL_FOCUS)) + Fl::focus(this); + return 1; + } return 0; diff --git a/src/Fl_Text_Editor.cxx b/src/Fl_Text_Editor.cxx index c26532906..6cfc0240d 100644 --- a/src/Fl_Text_Editor.cxx +++ b/src/Fl_Text_Editor.cxx @@ -482,6 +482,13 @@ int Fl_Text_Editor::handle(int event) { return 1; } break; + + case FL_SHORTCUT: + if (!(shortcut() ? Fl::test_shortcut(shortcut()) : test_shortcut())) + return 0; + if (Fl::visible_focus() && handle(FL_FOCUS)) + Fl::focus(this); + return 1; } return Fl_Text_Display::handle(event); diff --git a/src/Fl_Value_Input.cxx b/src/Fl_Value_Input.cxx index d3f5c6e61..d6dc6ab22 100644 --- a/src/Fl_Value_Input.cxx +++ b/src/Fl_Value_Input.cxx @@ -106,6 +106,8 @@ int Fl_Value_Input::handle(int event) { return 1; case FL_FOCUS: return input.take_focus(); + case FL_SHORTCUT: + return input.handle(event); default: DEFAULT: input.type(((step() - floor(step()))>0.0 || step() == 0.0) ? FL_FLOAT_INPUT : FL_INT_INPUT); @@ -126,6 +128,7 @@ Fl_Value_Input::Fl_Value_Input(int X, int Y, int W, int H, const char* l) selection_color(input.selection_color()); align(FL_ALIGN_LEFT); value_damage(); + set_flag(SHORTCUT_LABEL); } // -- cgit v1.2.3