billiob pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=3716c7ec51d25d93b70a5197bfbef4eb2f7b9e68

commit 3716c7ec51d25d93b70a5197bfbef4eb2f7b9e68
Author: Boris Faure <bill...@gmail.com>
Date:   Thu Aug 6 21:26:43 2015 +0200

    apply zoom level/font size to all terms in a window
---
 src/bin/termcmd.c | 27 ++++++++++++++++-----------
 src/bin/termio.c  | 20 ++++++++++----------
 src/bin/win.c     | 34 ++++++++++++++++++++++++++++++++++
 src/bin/win.h     |  8 ++++++++
 4 files changed, 68 insertions(+), 21 deletions(-)

diff --git a/src/bin/termcmd.c b/src/bin/termcmd.c
index cf5792f..cbe0073 100644
--- a/src/bin/termcmd.c
+++ b/src/bin/termcmd.c
@@ -23,12 +23,17 @@ _termcmd_search(Evas_Object *obj EINA_UNUSED, Evas_Object 
*win EINA_UNUSED, Evas
 }
 
 static Eina_Bool
-_termcmd_font_size(Evas_Object *obj, Evas_Object *win EINA_UNUSED, Evas_Object 
*bg EINA_UNUSED, const char *cmd)
+_termcmd_font_size(Evas_Object *obj, Evas_Object *win EINA_UNUSED,
+                   Evas_Object *bg EINA_UNUSED, const char *cmd)
 {
    Config *config = termio_config_get(obj);
 
    if (config)
      {
+        Term *term = termio_term_get(obj);
+        Win *wn = term_win_get(term);
+        int new_size;
+
         if (cmd[0] == 0) // back to default
           {
              config->font.bitmap = config->font.orig_bitmap;
@@ -37,8 +42,7 @@ _termcmd_font_size(Evas_Object *obj, Evas_Object *win 
EINA_UNUSED, Evas_Object *
                   eina_stringshare_del(config->font.name);
                   config->font.name = 
eina_stringshare_add(config->font.orig_name);
                }
-             termio_font_size_set(obj, config->font.orig_size);
-             return EINA_TRUE;
+             new_size = config->font.orig_size;
           }
         else if (cmd[0] == 'b') // big font size
           {
@@ -47,23 +51,24 @@ _termcmd_font_size(Evas_Object *obj, Evas_Object *win 
EINA_UNUSED, Evas_Object *
                   config->font.bitmap = 1;
                   eina_stringshare_del(config->font.name);
                   config->font.name = eina_stringshare_add("10x20.pcf");
-                  termio_font_size_set(obj, 20);
-               }
-             else
-               {
-                  termio_font_size_set(obj, 20);
                }
+             new_size = 20;
           }
         else if (cmd[0] == '+') // size up
           {
-             termio_font_size_set(obj, config->font.size + 1);
+             new_size = config->font.size + 1;
           }
         else if (cmd[0] == '-') // size down
           {
-             termio_font_size_set(obj, config->font.size - 1);
+             new_size = config->font.size - 1;
           }
         else
-          ERR(_("Unknown font command: %s"), cmd);
+          {
+             ERR(_("Unknown font command: %s"), cmd);
+             return EINA_TRUE;
+          }
+
+        win_font_size_set(wn, new_size);
      }
    return EINA_TRUE;
 }
diff --git a/src/bin/termio.c b/src/bin/termio.c
index 39cec99..d8f319a 100644
--- a/src/bin/termio.c
+++ b/src/bin/termio.c
@@ -4422,11 +4422,10 @@ _smart_cb_gest_zoom_start(void *data, void *event)
    config = sd->config;
    if (config)
      {
-        int sz;
-
+        int sz = (double)config->font.size * p->zoom;
         sd->zoom_fontsize_start = config->font.size;
-        sz = (double)sd->zoom_fontsize_start * p->zoom;
-        if (sz != config->font.size) _font_size_set(data, sz);
+        if (sz != config->font.size)
+          win_font_size_set(term_win_get(sd->term), sz);
      }
    sd->didclick = EINA_TRUE;
    return EVAS_EVENT_FLAG_ON_HOLD;
@@ -4443,8 +4442,9 @@ _smart_cb_gest_zoom_move(void *data, void *event)
    config = sd->config;
    if (config)
      {
-        int sz = (double)sd->zoom_fontsize_start * p->zoom;
-        if (sz != config->font.size) _font_size_set(data, sz);
+        int sz = (double)config->font.size * p->zoom;
+        if (sz != config->font.size)
+          win_font_size_set(term_win_get(sd->term), sz);
      }
    sd->didclick = EINA_TRUE;
    return EVAS_EVENT_FLAG_ON_HOLD;
@@ -4461,8 +4461,9 @@ _smart_cb_gest_zoom_end(void *data, void *event)
    config = sd->config;
    if (config)
      {
-        int sz = (double)sd->zoom_fontsize_start * p->zoom;
-        if (sz != config->font.size) _font_size_set(data, sz);
+        int sz = (double)config->font.size * p->zoom;
+        if (sz != config->font.size)
+          win_font_size_set(term_win_get(sd->term), sz);
      }
    sd->didclick = EINA_TRUE;
    return EVAS_EVENT_FLAG_ON_HOLD;
@@ -4471,7 +4472,6 @@ _smart_cb_gest_zoom_end(void *data, void *event)
 static Evas_Event_Flags
 _smart_cb_gest_zoom_abort(void *data, void *event EINA_UNUSED)
 {
-//   Elm_Gesture_Zoom_Info *p = event;
    Termio *sd = evas_object_smart_data_get(data);
    Config *config;
 
@@ -4480,7 +4480,7 @@ _smart_cb_gest_zoom_abort(void *data, void *event 
EINA_UNUSED)
    if (config)
      {
         if (sd->zoom_fontsize_start != config->font.size)
-          _font_size_set(data, sd->zoom_fontsize_start);
+          win_font_size_set(term_win_get(sd->term), sd->zoom_fontsize_start);
      }
    sd->didclick = EINA_TRUE;
    return EVAS_EVENT_FLAG_ON_HOLD;
diff --git a/src/bin/win.c b/src/bin/win.c
index 9293f5b..3a91d90 100644
--- a/src/bin/win.c
+++ b/src/bin/win.c
@@ -4117,6 +4117,24 @@ term_new(Win *wn, Config *config, const char *cmd,
 
 /* }}} */
 
+
+
+static Eina_Bool
+_font_size_set(Term *term, void *data)
+{
+   int fontsize = (intptr_t) data;
+
+   termio_font_size_set(term->termio, fontsize);
+
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+void
+win_font_size_set(Win *wn, int new_size)
+{
+   for_each_term_do(wn, &_font_size_set, (void*)(intptr_t)new_size);
+}
+
 void
 windows_free(void)
 {
@@ -4146,3 +4164,19 @@ windows_update(void)
         tc->update(tc);
      }
 }
+
+Eina_Bool
+for_each_term_do(Win *wn, For_Each_Term cb, void *data)
+{
+   Eina_List *l;
+   Term *term;
+   Eina_Bool res = ECORE_CALLBACK_DONE;
+
+   EINA_LIST_FOREACH(wn->terms, l, term)
+     {
+        res = cb(term, data);
+        if (res == ECORE_CALLBACK_CANCEL)
+          return res;
+     }
+   return res;
+}
diff --git a/src/bin/win.h b/src/bin/win.h
index 0b414d8..fda7b44 100644
--- a/src/bin/win.h
+++ b/src/bin/win.h
@@ -52,10 +52,18 @@ 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);
 
 Eina_Bool
 term_has_popmedia(const Term *term);
 void
 term_popmedia_close(Term *term);
 
+typedef Eina_Bool (*For_Each_Term)(Term *term, void *data);
+
+Eina_Bool
+for_each_term_do(Win *wn, For_Each_Term cb, void *data);
+
+
 #endif

-- 


Reply via email to