mirror of https://github.com/fltk/fltk
Android: Widgets can now request the on-screen keyboard when they get focus. This may fail if visible_focus is disabled.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12804 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
20ed92fca4
commit
e8818e968c
|
@ -23,6 +23,7 @@
|
||||||
#define Fl_Widget_H
|
#define Fl_Widget_H
|
||||||
|
|
||||||
#include "Enumerations.H"
|
#include "Enumerations.H"
|
||||||
|
#include "Fl.H"
|
||||||
|
|
||||||
class Fl_Widget;
|
class Fl_Widget;
|
||||||
class Fl_Window;
|
class Fl_Window;
|
||||||
|
@ -70,6 +71,7 @@ struct FL_EXPORT Fl_Label {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** Fl_Widget is the base class for all widgets in FLTK.
|
/** Fl_Widget is the base class for all widgets in FLTK.
|
||||||
|
|
||||||
You can't create one of these because the constructor is not public.
|
You can't create one of these because the constructor is not public.
|
||||||
|
@ -84,6 +86,7 @@ struct FL_EXPORT Fl_Label {
|
||||||
*/
|
*/
|
||||||
class FL_EXPORT Fl_Widget {
|
class FL_EXPORT Fl_Widget {
|
||||||
friend class Fl_Group;
|
friend class Fl_Group;
|
||||||
|
friend void Fl::focus(Fl_Widget*);
|
||||||
|
|
||||||
Fl_Group* parent_;
|
Fl_Group* parent_;
|
||||||
Fl_Callback* callback_;
|
Fl_Callback* callback_;
|
||||||
|
@ -158,6 +161,8 @@ protected:
|
||||||
FULLSCREEN = 1<<18, ///< a fullscreen window (Fl_Window)
|
FULLSCREEN = 1<<18, ///< a fullscreen window (Fl_Window)
|
||||||
MAC_USE_ACCENTS_MENU = 1<<19, ///< On the Mac OS platform, pressing and holding a key on the keyboard opens an accented-character menu window (Fl_Input_, Fl_Text_Editor)
|
MAC_USE_ACCENTS_MENU = 1<<19, ///< On the Mac OS platform, pressing and holding a key on the keyboard opens an accented-character menu window (Fl_Input_, Fl_Text_Editor)
|
||||||
// (space for more flags)
|
// (space for more flags)
|
||||||
|
NEEDS_KEYBOARD = 1<<20, ///< set this on touch screen devices if a widget needs a keyboard when it gets Focus. @see Fl_Screen_Driver::request_keyboard()
|
||||||
|
// a tiny bit more space for new flags...
|
||||||
USERFLAG3 = 1<<29, ///< reserved for 3rd party extensions
|
USERFLAG3 = 1<<29, ///< reserved for 3rd party extensions
|
||||||
USERFLAG2 = 1<<30, ///< reserved for 3rd party extensions
|
USERFLAG2 = 1<<30, ///< reserved for 3rd party extensions
|
||||||
USERFLAG1 = 1<<31 ///< reserved for 3rd party extensions
|
USERFLAG1 = 1<<31 ///< reserved for 3rd party extensions
|
||||||
|
|
13
src/Fl.cxx
13
src/Fl.cxx
|
@ -863,9 +863,18 @@ Fl_Widget* fl_oldfocus; // kludge for Fl_Group...
|
||||||
|
|
||||||
\see Fl_Widget::take_focus()
|
\see Fl_Widget::take_focus()
|
||||||
*/
|
*/
|
||||||
void Fl::focus(Fl_Widget *o) {
|
void Fl::focus(Fl_Widget *o)
|
||||||
if (o && !o->visible_focus()) return;
|
{
|
||||||
if (grab()) return; // don't do anything while grab is on
|
if (grab()) return; // don't do anything while grab is on
|
||||||
|
|
||||||
|
// request an on-screen keyboard on touch screen devices if needed
|
||||||
|
Fl_Widget *prevFocus = Fl::focus();
|
||||||
|
if ( prevFocus && (prevFocus->flags()&Fl_Widget::NEEDS_KEYBOARD) )
|
||||||
|
Fl::screen_driver()->release_keyboard();
|
||||||
|
if (o && (o->flags()&Fl_Widget::NEEDS_KEYBOARD))
|
||||||
|
Fl::screen_driver()->request_keyboard( /*o->type()*/ );
|
||||||
|
|
||||||
|
if (o && !o->visible_focus()) return;
|
||||||
Fl_Widget *p = focus_;
|
Fl_Widget *p = focus_;
|
||||||
if (o != p) {
|
if (o != p) {
|
||||||
Fl::compose_reset();
|
Fl::compose_reset();
|
||||||
|
|
|
@ -1128,6 +1128,7 @@ Fl_Input_::Fl_Input_(int X, int Y, int W, int H, const char* l)
|
||||||
shortcut_ = 0;
|
shortcut_ = 0;
|
||||||
set_flag(SHORTCUT_LABEL);
|
set_flag(SHORTCUT_LABEL);
|
||||||
set_flag(MAC_USE_ACCENTS_MENU);
|
set_flag(MAC_USE_ACCENTS_MENU);
|
||||||
|
set_flag(NEEDS_KEYBOARD);
|
||||||
tab_nav(1);
|
tab_nav(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,6 +75,7 @@ Fl_Text_Editor::Fl_Text_Editor(int X, int Y, int W, int H, const char* l)
|
||||||
insert_mode_ = 1;
|
insert_mode_ = 1;
|
||||||
key_bindings = 0;
|
key_bindings = 0;
|
||||||
set_flag(MAC_USE_ACCENTS_MENU);
|
set_flag(MAC_USE_ACCENTS_MENU);
|
||||||
|
set_flag(NEEDS_KEYBOARD);
|
||||||
|
|
||||||
// handle the default key bindings
|
// handle the default key bindings
|
||||||
add_default_key_bindings(&key_bindings);
|
add_default_key_bindings(&key_bindings);
|
||||||
|
|
Loading…
Reference in New Issue