diff options
author | pohlinkzei <pohlinkzei@gmx-topmail.de> | 2017-02-28 15:34:14 +0100 |
---|---|---|
committer | pohlinkzei <pohlinkzei@gmx-topmail.de> | 2017-02-28 15:34:14 +0100 |
commit | 98702c661f58978f56b1e6d10defb322f7ad4252 (patch) | |
tree | 15ce560bd3497299f20515d4d4d369408cbbc818 | |
parent | 24f47e9dbade0fedd47d949ace52879ff72cb02a (diff) | |
download | navit-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.h | 2 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal.c | 6 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_priv.h | 2 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_search.c | 16 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_widget.c | 36 |
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 ) { |