Blob Blame History Raw
diff -up terminology-1.0.0/src/bin/options_font.c.fontfix terminology-1.0.0/src/bin/options_font.c
--- terminology-1.0.0/src/bin/options_font.c.fontfix	2017-07-14 16:57:49.437949097 -0400
+++ terminology-1.0.0/src/bin/options_font.c	2017-07-14 16:57:55.337806236 -0400
@@ -134,6 +134,8 @@ _cb_op_font_sel(void *data,
 {
    Font *f = data;
    Config *config = termio_config_get(f->term);
+   Term *term = termio_term_get(f->term);
+
    if ((config->font.name) && (!strcmp(f->full_name, config->font.name)))
      return;
    if (config->font.name) eina_stringshare_del(config->font.name);
@@ -144,6 +146,7 @@ _cb_op_font_sel(void *data,
    elm_object_disabled_set(op_fontslider, f->bitmap);
    elm_object_disabled_set(op_fbig, f->bitmap);
    config_save(config, NULL);
+   win_font_update(term);
 }
 
 static void
@@ -151,15 +154,17 @@ _cb_op_fontsize_sel(void *data,
                     Evas_Object *obj,
                     void *_event EINA_UNUSED)
 {
-   Evas_Object *term = data;
-   Config *config = termio_config_get(term);
+   Evas_Object *termio_obj = data;
+   Config *config = termio_config_get(termio_obj);
+   Term *term = termio_term_get(termio_obj);
    int size = elm_slider_value_get(obj) + 0.5;
 
    if (config->font.size == size) return;
    config->font.size = size;
-   _update_sizing(term);
+   _update_sizing(termio_obj);
    elm_genlist_realized_items_update(op_fontlist);
    config_save(config, NULL);
+   win_font_update(term);
 }
 
 static int
diff -up terminology-1.0.0/src/bin/termio.c.fontfix terminology-1.0.0/src/bin/termio.c
--- terminology-1.0.0/src/bin/termio.c.fontfix	2017-07-14 16:48:20.816754952 -0400
+++ terminology-1.0.0/src/bin/termio.c	2017-07-14 16:50:38.290389000 -0400
@@ -464,13 +464,31 @@ _font_size_set(Evas_Object *obj, int siz
 
    if (size < 5) size = 5;
    else if (size > 100) size = 100;
-   if (config && config->font.size != size)
+   if (config)
      {
         config->temporary = EINA_TRUE;
         config->font.size = size;
         sd->noreqsize = 1;
         termio_config_update(obj);
         sd->noreqsize = 0;
+        evas_object_data_del(obj, "sizedone");
+     }
+}
+
+void
+termio_font_update(Evas_Object *obj)
+{
+   Termio *sd = evas_object_smart_data_get(obj);
+   Config *config;
+   EINA_SAFETY_ON_NULL_RETURN(sd);
+
+   config = sd->config;
+
+   if (config)
+     {
+        sd->noreqsize = 1;
+        termio_config_update(obj);
+        sd->noreqsize = 0;
         evas_object_data_del(obj, "sizedone");
      }
 }
diff -up terminology-1.0.0/src/bin/termio.h.fontfix terminology-1.0.0/src/bin/termio.h
--- terminology-1.0.0/src/bin/termio.h.fontfix	2017-07-14 16:51:00.749845162 -0400
+++ terminology-1.0.0/src/bin/termio.h	2017-07-14 16:51:36.316983932 -0400
@@ -21,6 +21,7 @@ void termio_scroll(Evas_Object *obj, int
 void termio_content_change(Evas_Object *obj, Evas_Coord x, Evas_Coord y, int n);
 
 void         termio_config_update(Evas_Object *obj);
+void         termio_font_update(Evas_Object *obj);
 Config      *termio_config_get(const Evas_Object *obj);
 Eina_Bool    termio_take_selection(Evas_Object *obj, Elm_Sel_Type);
 void         termio_paste_selection(Evas_Object *obj, Elm_Sel_Type);
diff -up terminology-1.0.0/src/bin/win.c.fontfix terminology-1.0.0/src/bin/win.c
--- terminology-1.0.0/src/bin/win.c.fontfix	2017-07-14 16:51:44.710780682 -0400
+++ terminology-1.0.0/src/bin/win.c	2017-07-14 16:53:59.322521163 -0400
@@ -4368,6 +4368,21 @@ win_font_size_set(Win *wn, int new_size)
    for_each_term_do(wn, &_font_size_set, (void*)(intptr_t)new_size);
 }
 
+static Eina_Bool
+_font_update(Term *term, void *_data EINA_UNUSED)
+{
+   termio_font_update(term->termio);
+
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+void
+win_font_update(Term *term)
+{
+   Win *wn = term->wn;
+   for_each_term_do(wn, &_font_update, NULL);
+}
+
 void
 windows_free(void)
 {
diff -up terminology-1.0.0/src/bin/win.h.fontfix terminology-1.0.0/src/bin/win.h
--- terminology-1.0.0/src/bin/win.h.fontfix	2017-07-14 16:54:29.983778725 -0400
+++ terminology-1.0.0/src/bin/win.h	2017-07-14 16:55:08.117855337 -0400
@@ -54,8 +54,8 @@ void term_next(Term *term);
 void term_prev(Term *term);
 Win * term_win_get(Term *term);
 
-void
-win_font_size_set(Win *wn, int new_size);
+void win_font_size_set(Win *wn, int new_size);
+void win_font_update(Term *term);
 
 Eina_Bool
 term_has_popmedia(const Term *term);