diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2018-06-21 17:24:21 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2018-06-21 17:24:21 +0000 |
| commit | 448cf7785524ac23edcee46f52e1b1bf4266a39c (patch) | |
| tree | 83bf3993870d924096ed7fc65ff46831e19e0498 | |
| parent | 333e718ae735411fec220334256360b8e3b4b1bb (diff) | |
Android: on-screen keyboard no longer pops up on text output widgets
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12959 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
| -rw-r--r-- | ide/AndroidStudio3/app/src/main/cpp/HelloAndroid.cxx | 163 | ||||
| -rw-r--r-- | src/Fl_Input.cxx | 4 | ||||
| -rw-r--r-- | src/Fl_Text_Display.cxx | 1 |
3 files changed, 66 insertions, 102 deletions
diff --git a/ide/AndroidStudio3/app/src/main/cpp/HelloAndroid.cxx b/ide/AndroidStudio3/app/src/main/cpp/HelloAndroid.cxx index 01acf4904..8901ca2ce 100644 --- a/ide/AndroidStudio3/app/src/main/cpp/HelloAndroid.cxx +++ b/ide/AndroidStudio3/app/src/main/cpp/HelloAndroid.cxx @@ -17,115 +17,78 @@ #if 1 -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - #include <FL/Fl.H> +#include <FL/Fl_Value_Input.H> // necessary for bug in mingw32? #include <FL/Fl_Double_Window.H> -#include <FL/Fl_Input.H> -#include <FL/Fl_Button.H> -#include <FL/Fl_Return_Button.H> #include <FL/Fl_Box.H> - -#include <FL/fl_ask.H> - -void update_input_text(Fl_Widget* o, const char *input) { - if (input) { - o->copy_label(input); - o->redraw(); - } -} - -void rename_me(Fl_Widget*o) { - const char *input = fl_input("Input:", o->label()); - update_input_text(o, input); +#include <FL/Fl_Hor_Value_Slider.H> +#include <FL/Fl_Toggle_Button.H> +#include <FL/Fl_Input.H> +#include <FL/fl_draw.H> +#include <FL/Fl_Output.H> +#include <FL/Fl_Multiline_Output.H> + +Fl_Output *text; +Fl_Multiline_Output *text2; +Fl_Input *input; +Fl_Value_Slider *fonts; +Fl_Value_Slider *sizes; +Fl_Double_Window *window; + +void font_cb(Fl_Widget *,void *) { + text->textfont(int(fonts->value())); + text->redraw(); + text2->textfont(int(fonts->value())); + text2->redraw(); } -void rename_me_pwd(Fl_Widget*o) { - const char *input = fl_password("Input PWD:", o->label()); - update_input_text(o, input); +void size_cb(Fl_Widget *,void *) { + text->textsize(int(sizes->value())); + text->redraw(); + text2->textsize(int(sizes->value())); + text2->redraw(); } -void window_callback(Fl_Widget*, void*) { - int hotspot = fl_message_hotspot(); - fl_message_hotspot(0); - fl_message_title("note: no hotspot set for this dialog"); - int rep = fl_choice("Are you sure you want to quit?", - "Cancel", "Quit", "Dunno"); - fl_message_hotspot(hotspot); - if (rep==1) - exit(0); - else if (rep==2) - fl_message("Well, maybe you should know before we quit."); +void input_cb(Fl_Widget *,void *) { + text->value(input->value()); + text2->value(input->value()); } -/* - This timer callback shows a message dialog (fl_choice) window - every 5 seconds to test "recursive" common dialogs. - - The timer can be stopped by clicking the button "Stop these funny popups" - or pressing the Enter key. As it is currently implemented, clicking the - "Close" button will reactivate the popups (only possible if "recursive" - dialogs are enabled, see below). - Note 1: This dialog box is blocked in FLTK 1.3.x if another common dialog - is already open because the window used is a static (i.e. permanently - allocated) Fl_Window instance. This should be fixed in FLTK 1.4.0. - See STR #334 (sic !) and also STR #2751 ("Limit input field characters"). -*/ -void timer_cb(void *) { - - static int stop = 0; - static const double delta = 5.0; - - Fl_Box *message_icon = (Fl_Box *)fl_message_icon(); - - Fl::repeat_timeout(delta, timer_cb); - - if (stop == 1) { - message_icon->color(FL_WHITE); - return; - } - - // Change the icon box color: - Fl_Color c = message_icon->color(); - c = (c+1) % 32; - if (c == message_icon->labelcolor()) c++; - message_icon->color((Fl_Color)c); - - // pop up a message: - stop = fl_choice("Timeout. Click the 'Close' button.\n" - "Note: this message was blocked in FLTK 1.3\n" - "if another message window is open.\n" - "This *should* be fixed in FLTK 1.4.0!\n" - "This message should pop up every 5 seconds.", - "Close", "Stop these funny popups", NULL); -} int main(int argc, char **argv) { - char buffer[128] = "Test text"; - char buffer2[128] = "MyPassword"; - - // This is a test to make sure automatic destructors work. Pop up - // the question dialog several times and make sure it doesn't crash. - - Fl_Double_Window window(200, 105); - Fl_Return_Button b(20, 10, 160, 35, buffer); - b.callback(rename_me); - Fl_Button b2(20, 50, 160, 35, buffer2); - b2.callback(rename_me_pwd); - window.end(); - window.resizable(&b); - window.show(argc, argv); - - // Also we test to see if the exit callback works: - window.callback(window_callback); - - // Test: set default message window title: - // fl_message_title_default("Default Window Title"); - - // Test: multiple (nested, aka "recursive") popups - Fl::add_timeout(5.0, timer_cb); - + window = new Fl_Double_Window(400,400); + + input = new Fl_Input(50,375,350,25); + input->static_value("The quick brown fox\njumped over\nthe lazy dog."); + input->when(FL_WHEN_CHANGED); + input->callback(input_cb); + + sizes = new Fl_Hor_Value_Slider(50,350,350,25,"Size"); + sizes->align(FL_ALIGN_LEFT); + sizes->bounds(1,64); + sizes->step(1); + sizes->value(14); + sizes->callback(size_cb); + + fonts = new Fl_Hor_Value_Slider(50,325,350,25,"Font"); + fonts->align(FL_ALIGN_LEFT); + fonts->bounds(0,15); + fonts->step(1); + fonts->value(0); + fonts->callback(font_cb); + + text2 = new Fl_Multiline_Output(100,150,200,100,"Fl_Multiline_Output"); + text2->value(input->value()); + text2->align(FL_ALIGN_BOTTOM); + text2->tooltip("This is an Fl_Multiline_Output widget."); + window->resizable(text2); + + text = new Fl_Output(100,90,200,30,"Fl_Output"); + text->value(input->value()); + text->align(FL_ALIGN_BOTTOM); + text->tooltip("This is an Fl_Output widget."); + + window->end(); + window->show(argc,argv); return Fl::run(); } @@ -279,7 +242,6 @@ test/blocks.cxx test/navigation.cxx test/offscreen.cxx test/browser.cxx -test/output.cxx test/overlay.cxx test/cairo_test.cxx test/pixmap.cxx @@ -337,6 +299,7 @@ test/utf8.cxx test/keyboard.cxx test/windowfocus.cxx + * test/output.cxx : + 'output' works * test/ask.cxx : + 'ask' works * test/button.cxx : + 'button' works, including beep * test/pack.cxx : + 'pack' works diff --git a/src/Fl_Input.cxx b/src/Fl_Input.cxx index f466e65d1..832c3bfd3 100644 --- a/src/Fl_Input.cxx +++ b/src/Fl_Input.cxx @@ -464,10 +464,8 @@ int Fl_Input::handle(int event) { this->mark( this->position() ); Fl::reset_marked_text(); } - Fl::screen_driver()->release_keyboard(); break; case FL_FOCUS: - Fl::screen_driver()->request_keyboard(); switch (Fl::event_key()) { case FL_Right: position(0); @@ -686,12 +684,14 @@ Fl_Multiline_Input::Fl_Multiline_Input(int X,int Y,int W,int H,const char *l) Fl_Output::Fl_Output(int X,int Y,int W,int H, const char *l) : Fl_Input(X, Y, W, H, l) { type(FL_NORMAL_OUTPUT); + clear_flag(NEEDS_KEYBOARD); } Fl_Multiline_Output::Fl_Multiline_Output(int X,int Y,int W,int H,const char *l) : Fl_Output(X,Y,W,H,l) { type(FL_MULTILINE_OUTPUT); + clear_flag(NEEDS_KEYBOARD); } diff --git a/src/Fl_Text_Display.cxx b/src/Fl_Text_Display.cxx index 0d89237b6..0091e892e 100644 --- a/src/Fl_Text_Display.cxx +++ b/src/Fl_Text_Display.cxx @@ -179,6 +179,7 @@ Fl_Text_Display::Fl_Text_Display(int X, int Y, int W, int H, const char* l) color(FL_BACKGROUND2_COLOR, FL_SELECTION_COLOR); box(FL_DOWN_FRAME); set_flag(SHORTCUT_LABEL); + clear_flag(NEEDS_KEYBOARD); end(); } |
