diff --git a/src/bin/options_behavior.c b/src/bin/options_behavior.c index b398dab6..c2bb2e8e 100644 --- a/src/bin/options_behavior.c +++ b/src/bin/options_behavior.c @@ -26,13 +26,29 @@ _cb_op_behavior_trans_chg(void *data, Evas_Object *obj, void *event) static void _cb_op_behavior_wsep_chg(void *data, Evas_Object *obj, void *event) { - // XXX: do + char *txt; + + if (config->wordsep) + { + eina_stringshare_del(config->wordsep); + config->wordsep = NULL; + } + txt = elm_entry_markup_to_utf8(elm_object_text_get(obj)); + if (txt) + { + config->wordsep = eina_stringshare_add(txt); + free(txt); + } + termio_config_update(data); + config_save(); } static void _cb_op_behavior_sback_chg(void *data, Evas_Object *obj, void *event) { - // XXX: do + config->scrollback = elm_slider_value_get(obj) + 0.5; + termio_config_update(data); + config_save(); } void @@ -105,5 +121,7 @@ options_behavior(Evas_Object *opbox, Evas_Object *term) _cb_op_behavior_sback_chg, term); elm_box_pack_end(opbox, o); + evas_object_size_hint_weight_set(opbox, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(opbox, EVAS_HINT_FILL, 0.0); evas_object_show(o); } diff --git a/src/bin/options_font.c b/src/bin/options_font.c index 314016f4..71ece3a3 100644 --- a/src/bin/options_font.c +++ b/src/bin/options_font.c @@ -305,5 +305,7 @@ options_font(Evas_Object *opbox, Evas_Object *term) elm_genlist_item_class_free(it_group); elm_box_pack_end(opbox, o); + evas_object_size_hint_weight_set(opbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(opbox, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_show(o); } diff --git a/src/bin/termio.c b/src/bin/termio.c index 4dc27110..76d94356 100644 --- a/src/bin/termio.c +++ b/src/bin/termio.c @@ -1072,6 +1072,11 @@ termio_config_update(Evas_Object *obj) sd->font.name = eina_stringshare_add(config->font.name); sd->font.size = config->font.size; + sd->jump_on_change = config->jump_on_change; + + termpty_backscroll_set(sd->pty, config->scrollback); + sd->scroll = 0; + evas_object_textgrid_font_set(sd->grid.obj, sd->font.name, sd->font.size); evas_object_textgrid_cell_size_get(sd->grid.obj, &w, &h); if (w < 1) w = 1; diff --git a/src/bin/termpty.c b/src/bin/termpty.c index d5668c32..943cb957 100644 --- a/src/bin/termpty.c +++ b/src/bin/termpty.c @@ -1572,3 +1572,25 @@ termpty_resize(Termpty *ty, int w, int h) _pty_size(ty); } + +void +termpty_backscroll_set(Termpty *ty, int size) +{ + int i; + Termsave *tso; + + if (ty->backmax == size) return; + + if (ty->back) + { + for (i = 0; i < ty->backmax; i++) + { + if (ty->back[i]) free(ty->back[i]); + } + free(ty->back); + } + ty->back = calloc(1, sizeof(Termsave *) * ty->backmax); + ty->backscroll_num = 0; + ty->backpos = 0; + ty->backmax = size; +} diff --git a/src/bin/termpty.h b/src/bin/termpty.h index 680d2d1b..7196dc73 100644 --- a/src/bin/termpty.h +++ b/src/bin/termpty.h @@ -103,4 +103,4 @@ void termpty_free(Termpty *ty); Termcell *termpty_cellrow_get(Termpty *ty, int y, int *wret); void termpty_write(Termpty *ty, const char *input, int len); void termpty_resize(Termpty *ty, int w, int h); - +void termpty_backscroll_set(Termpty *ty, int size);