diff options
-rw-r--r-- | navit/attr_def.h | 5 | ||||
-rw-r--r-- | navit/graphics.c | 4 | ||||
-rw-r--r-- | navit/graphics.h | 4 | ||||
-rw-r--r-- | navit/graphics/android/graphics_android.c | 9 | ||||
-rw-r--r-- | navit/gui.h | 8 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_keyboard.c | 3 |
6 files changed, 23 insertions, 10 deletions
diff --git a/navit/attr_def.h b/navit/attr_def.h index b3f77163b..df9ad7243 100644 --- a/navit/attr_def.h +++ b/navit/attr_def.h @@ -98,7 +98,10 @@ ATTR(checksum_ignore) ATTR(position_fix_type) ATTR(timeout) ATTR(orientation) -ATTR(keyboard) +ATTR(keyboard) /* 0 - gui won't show any keyboard, + * 1 - gui will draw own keyboard representation, + * 2 - gui will ask graphics module to show sw keyboard, falling back to own keyboard representation. + */ ATTR(position_sats_signal) ATTR(cps) ATTR_UNUSED diff --git a/navit/graphics.c b/navit/graphics.c index 5c6f9e5b3..04e071677 100644 --- a/navit/graphics.c +++ b/navit/graphics.c @@ -1116,7 +1116,7 @@ int graphics_show_native_keyboard (struct graphics *this_, struct graphics_keybo if (!this_->meth.show_native_keyboard) ret = -1; else - ret = this_->meth.show_native_keyboard(kbd); + ret = this_->meth.show_native_keyboard(this_->priv, kbd); dbg(lvl_debug, "return %d\n", ret); return ret; } @@ -1151,7 +1151,7 @@ int graphics_show_native_keyboard (struct graphics *this_, struct graphics_keybo int graphics_hide_native_keyboard (struct graphics *this_, struct graphics_keyboard *kbd) { if (!this_->meth.hide_native_keyboard) return 0; - this_->meth.hide_native_keyboard(kbd); + this_->meth.hide_native_keyboard(this_->priv, kbd); return 1; } diff --git a/navit/graphics.h b/navit/graphics.h index 2ffbd9ab0..bdac6d0d3 100644 --- a/navit/graphics.h +++ b/navit/graphics.h @@ -149,8 +149,8 @@ struct graphics_methods { void (*overlay_disable)(struct graphics_priv *gr, int disable); void (*overlay_resize)(struct graphics_priv *gr, struct point *p, int w, int h, int wraparound); int (*set_attr)(struct graphics_priv *gr, struct attr *attr); - int (*show_native_keyboard)(struct graphics_keyboard *kbd); - void (*hide_native_keyboard)(struct graphics_keyboard *kbd); + int (*show_native_keyboard)(struct graphics_priv *gr, struct graphics_keyboard *kbd); + void (*hide_native_keyboard)(struct graphics_priv *gr, struct graphics_keyboard *kbd); }; diff --git a/navit/graphics/android/graphics_android.c b/navit/graphics/android/graphics_android.c index 41f441c96..a25b3597e 100644 --- a/navit/graphics/android/graphics_android.c +++ b/navit/graphics/android/graphics_android.c @@ -486,9 +486,9 @@ set_attr(struct graphics_priv *gra, struct attr *attr) } -int show_native_keyboard (struct graphics_keyboard *kbd); +int show_native_keyboard (struct graphics_priv *gra, struct graphics_keyboard *kbd); -void hide_native_keyboard (struct graphics_keyboard *kbd); +void hide_native_keyboard (struct graphics_priv *gra, struct graphics_keyboard *kbd); static struct graphics_methods graphics_methods = { @@ -1163,7 +1163,7 @@ event_android_new(struct event_methods *meth) * * @return True if the input method is going to be displayed, false if not. */ -int show_native_keyboard (struct graphics_keyboard *kbd) { +int show_native_keyboard (struct graphics_priv *gra, struct graphics_keyboard *kbd) { kbd->w = -1; if (Navit_showNativeKeyboard == NULL) { dbg(lvl_error, "method Navit.showNativeKeyboard() not found, cannot display keyboard\n"); @@ -1184,13 +1184,14 @@ int show_native_keyboard (struct graphics_keyboard *kbd) { * {@link show_native_keyboard(struct graphics_keyboard *)}. The {@code gra_priv} member of the struct * will be freed by this function. */ -void hide_native_keyboard (struct graphics_keyboard *kbd) { +void hide_native_keyboard (struct graphics_priv *gra, struct graphics_keyboard *kbd) { if (Navit_hideNativeKeyboard == NULL) { dbg(lvl_error, "method Navit.hideNativeKeyboard() not found, cannot dismiss keyboard\n"); return; } (*jnienv)->CallVoidMethod(jnienv, android_activity, Navit_hideNativeKeyboard); g_free(kbd->gra_priv); + kbd->gra_priv=NULL; } diff --git a/navit/gui.h b/navit/gui.h index 5bb936938..38307901e 100644 --- a/navit/gui.h +++ b/navit/gui.h @@ -45,6 +45,14 @@ struct gui_methods { int (*set_attr)(struct gui_priv *priv, struct attr *attr); }; +/* + * Values for attr_keyboard when set on gui object + */ +enum gui_keyboard_types { + gui_keyboard_no=0, + gui_keyboard_own=1, + gui_keyboard_system_or_own=2 +}; /* prototypes */ enum attr_type; diff --git a/navit/gui/internal/gui_internal_keyboard.c b/navit/gui/internal/gui_internal_keyboard.c index 7946b545f..e40664e2b 100644 --- a/navit/gui/internal/gui_internal_keyboard.c +++ b/navit/gui/internal/gui_internal_keyboard.c @@ -6,6 +6,7 @@ #include "callback.h" #include "graphics.h" #include "debug.h" +#include "gui.h" #include "gui_internal.h" #include "gui_internal_widget.h" #include "gui_internal_priv.h" @@ -193,7 +194,7 @@ gui_internal_keyboard_do(struct gui_priv *this, struct widget *wkbdb, int mode, wkbd->cols=9; } - if (!(mode & VKBD_FLAG_MINIMIZED)) { + if ((this->keyboard==gui_keyboard_system_or_own) && !(mode & VKBD_FLAG_MINIMIZED) ) { int res; if(!this->kbd) this->kbd=g_new0(struct graphics_keyboard,1); |