summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpohlinkzei <pohlinkzei@gmx-topmail.de>2017-02-28 15:34:14 +0100
committerpohlinkzei <pohlinkzei@gmx-topmail.de>2017-02-28 15:34:14 +0100
commit98702c661f58978f56b1e6d10defb322f7ad4252 (patch)
tree15ce560bd3497299f20515d4d4d369408cbbc818
parent24f47e9dbade0fedd47d949ace52879ff72cb02a (diff)
downloadnavit-98702c661f58978f56b1e6d10defb322f7ad4252.tar.gz
Add a switch attr for gui internal to decide to use hide_keys or the old highlight key behaviour
usage: add the attr 'hide_next_possible_keys="1"' to <gui type="internal" [...] />
-rw-r--r--navit/attr_def.h2
-rw-r--r--navit/gui/internal/gui_internal.c6
-rw-r--r--navit/gui/internal/gui_internal_priv.h2
-rw-r--r--navit/gui/internal/gui_internal_search.c16
-rw-r--r--navit/gui/internal/gui_internal_widget.c36
5 files changed, 46 insertions, 16 deletions
diff --git a/navit/attr_def.h b/navit/attr_def.h
index b3f77163b..264365c2e 100644
--- a/navit/attr_def.h
+++ b/navit/attr_def.h
@@ -188,7 +188,7 @@ ATTR_UNUSED
ATTR_UNUSED
ATTR_UNUSED
ATTR_UNUSED
-ATTR_UNUSED
+ATTR(hide_possible_next_keys)
ATTR(turn_around_count)
ATTR(turn_around_penalty)
ATTR(turn_around_penalty2)
diff --git a/navit/gui/internal/gui_internal.c b/navit/gui/internal/gui_internal.c
index fd450b57c..add7451fe 100644
--- a/navit/gui/internal/gui_internal.c
+++ b/navit/gui/internal/gui_internal.c
@@ -3437,6 +3437,12 @@ static struct gui_priv * gui_internal_new(struct navit *nav, struct gui_methods
this->radius=10;
if( (attr=attr_search(attrs,NULL,attr_font)))
this->font_name=g_strdup(attr->u.str);
+
+ if((attr=attr_search(attrs, NULL, attr_hide_possible_next_keys)))
+ this->hide_keys = attr->u.num;
+ else
+ this->hide_keys = 0;
+
this->data.priv=this;
this->data.gui=&gui_internal_methods_ext;
this->data.widget=&gui_internal_widget_methods;
diff --git a/navit/gui/internal/gui_internal_priv.h b/navit/gui/internal/gui_internal_priv.h
index 0dee59db2..37b09d62a 100644
--- a/navit/gui/internal/gui_internal_priv.h
+++ b/navit/gui/internal/gui_internal_priv.h
@@ -144,7 +144,7 @@ struct gui_priv {
} gesture_ring[GESTURE_RINGSIZE];
int gesture_ring_last, gesture_ring_first;
-
+ int hide_keys; //Flag to set the keyboard mode 1: hide impossible keys on search; 0: highlight them.
int results_map_population;
};
diff --git a/navit/gui/internal/gui_internal_search.c b/navit/gui/internal/gui_internal_search.c
index c4f08ceb0..ceeeb7438 100644
--- a/navit/gui/internal/gui_internal_search.c
+++ b/navit/gui/internal/gui_internal_search.c
@@ -240,16 +240,24 @@ gui_internal_highlight_possible_keys(struct gui_priv *this, char *possible_keys)
if (child_->data && strcmp("\b", child_->data) && child_->data_free) {
if ( (strlen(possible_keys) == 0) ||
(g_strrstr(possible_keys, child_->data)!=NULL ) ) {
- child_->state|= STATE_SENSITIVE|STATE_CLEAR ;
- child_->state&= ~(STATE_INVISIBLE);
+ if(this->hide_keys){
+ child_->state|= STATE_SENSITIVE|STATE_CLEAR ;
+ child_->state&= ~(STATE_INVISIBLE);
+ }else{
+ child_->state|= STATE_SENSITIVE|STATE_CLEAR|STATE_HIGHLIGHTED ;
+ }
// Select and highlight the first possible button.
if (!first_available_key_found) {
gui_internal_highlight_do(this, child_);
first_available_key_found=1;
}
} else {
- child_->state&= ~(STATE_SELECTED|STATE_SENSITIVE) ;
- child_->state|= STATE_INVISIBLE;
+ if(this->hide_keys){
+ child_->state&= ~(STATE_SELECTED|STATE_SENSITIVE) ;
+ child_->state|= STATE_INVISIBLE;
+ }else{
+ child_->state&= ~(STATE_HIGHLIGHTED);
+ }
}
gui_internal_widget_render(this,child_);
}
diff --git a/navit/gui/internal/gui_internal_widget.c b/navit/gui/internal/gui_internal_widget.c
index 6767889d2..3e1993025 100644
--- a/navit/gui/internal/gui_internal_widget.c
+++ b/navit/gui/internal/gui_internal_widget.c
@@ -820,10 +820,12 @@ gui_internal_scroll_buttons_init(struct gui_priv *this, struct widget *widget, s
sb->button_box=gui_internal_box_new(this, gravity_center|orientation_horizontal);
sb->button_box->background=this->background;
+ if(this->hide_keys){
+ sb->prev_button->state |= STATE_INVISIBLE;
+ sb->next_button->state |= STATE_INVISIBLE;
+ }
sb->prev_button->state &= ~STATE_SENSITIVE;
- sb->prev_button->state |= STATE_INVISIBLE;
sb->next_button->state &= ~STATE_SENSITIVE;
- sb->next_button->state |= STATE_INVISIBLE;
gui_internal_widget_append(sb->button_box, sb->prev_button);
gui_internal_widget_append(sb->button_box, sb->next_button);
@@ -1266,8 +1268,12 @@ gui_internal_table_render(struct gui_priv * this, struct widget * w)
cur_column=g_list_next(cur_column))
{
struct widget * cur_widget = (struct widget*) cur_column->data;
- cur_widget->state |= STATE_INVISIBLE;
- cur_widget->state &= ~STATE_SENSITIVE;
+ if(this->hide_keys){
+ cur_widget->state |= STATE_INVISIBLE;
+ cur_widget->state &= ~STATE_SENSITIVE;
+ }else{
+ cur_widget->state |= STATE_OFFSCREEN;
+ }
}
row = g_list_next(row);
}
@@ -1311,8 +1317,12 @@ gui_internal_table_render(struct gui_priv * this, struct widget * w)
/* We pack the widget before rendering to ensure that the x and y
* coordinates get pushed down.
*/
- cur_widget->state &= ~STATE_INVISIBLE;
- cur_widget->state |= STATE_SENSITIVE;
+ if(this->hide_keys){
+ cur_widget->state &= ~STATE_INVISIBLE;
+ cur_widget->state |= STATE_SENSITIVE;
+ }else{
+ cur_widget->state &= ~STATE_OFFSCREEN;
+ }
gui_internal_widget_pack(this,cur_widget);
gui_internal_widget_render(this,cur_widget);
@@ -1322,8 +1332,12 @@ gui_internal_table_render(struct gui_priv * this, struct widget * w)
}
} else {
/* Deactivate contents that we don't have space for. */
- cur_widget->state |= STATE_INVISIBLE;
- cur_widget->state &= ~STATE_SENSITIVE;
+ if(this->hide_keys){
+ cur_widget->state |= STATE_INVISIBLE;
+ cur_widget->state &= ~STATE_SENSITIVE;
+ }else{
+ cur_widget->state |= STATE_OFFSCREEN;
+ }
}
}
@@ -1342,10 +1356,12 @@ gui_internal_table_render(struct gui_priv * this, struct widget * w)
}
/* By default, hide all scroll buttons. */
+ if(this->hide_keys){
+ table_data->scroll_buttons.next_button->state|= STATE_INVISIBLE;
+ table_data->scroll_buttons.prev_button->state|= STATE_INVISIBLE;
+ }
table_data->scroll_buttons.next_button->state&= ~STATE_SENSITIVE;
- table_data->scroll_buttons.next_button->state|= STATE_INVISIBLE;
table_data->scroll_buttons.prev_button->state&= ~STATE_SENSITIVE;
- table_data->scroll_buttons.prev_button->state|= STATE_INVISIBLE;
if(table_data->scroll_buttons.button_box && (!drawing_space_left || !is_first_page) && !table_data->scroll_buttons.button_box_hide )
{