billiob pushed a commit to branch master.

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

commit d9276909a4462a2c5d8d02b243216bac9aef002d
Author: Boris Faure <bill...@gmail.com>
Date:   Fri Mar 18 20:04:10 2016 +0100

    add option to enable bold/italic (on by default)
---
 src/bin/config.c       | 13 +++++++++++--
 src/bin/config.h       |  1 +
 src/bin/options.h      | 29 -----------------------------
 src/bin/options_font.c | 22 ++++++++++++++++++++++
 src/bin/termio.c       | 26 +++++++++++++++++++++++---
 5 files changed, 57 insertions(+), 34 deletions(-)

diff --git a/src/bin/config.c b/src/bin/config.c
index 581a6ea..1385751 100644
--- a/src/bin/config.c
+++ b/src/bin/config.c
@@ -7,7 +7,7 @@
 #include "col.h"
 #include "utils.h"
 
-#define CONF_VER 10
+#define CONF_VER 11
 
 #define LIM(v, min, max) {if (v >= max) v = max; else if (v <= min) v = min;}
 
@@ -83,6 +83,8 @@ config_init(void)
    EET_DATA_DESCRIPTOR_ADD_BASIC
      (edd_base, Config, "font.bitmap", font.bitmap, EET_T_UCHAR);
    EET_DATA_DESCRIPTOR_ADD_BASIC
+     (edd_base, Config, "font.bolditalic", font.bitmap, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC
      (edd_base, Config, "helper.email", helper.email, EET_T_STRING);
    EET_DATA_DESCRIPTOR_ADD_BASIC
      (edd_base, Config, "helper.url.general", helper.url.general, 
EET_T_STRING);
@@ -229,6 +231,7 @@ config_sync(const Config *config_src, Config *config)
    config->font.size = config_src->font.size;
    eina_stringshare_replace(&(config->font.name), config_src->font.name);
    config->font.bitmap = config_src->font.bitmap;
+   config->font.bolditalic = config_src->font.bolditalic;
    config->helper.inline_please = config_src->helper.inline_please;
    eina_stringshare_replace(&(config->helper.email), config_src->helper.email);
    eina_stringshare_replace(&(config->helper.url.general), 
config_src->helper.url.general);
@@ -448,6 +451,7 @@ config_default_font_set(Config *config, Evas *evas)
      {
         config->font.bitmap = EINA_FALSE;
         config->font.size = 12;
+        config->font.bolditalic = EINA_TRUE;
         eina_stringshare_del(fname);
      }
 #undef FONT_DEJAVU
@@ -469,6 +473,7 @@ config_new(void)
         config->font.bitmap = EINA_TRUE;
         config->font.name = eina_stringshare_add("nexus.pcf");
         config->font.size = 10;
+        config->font.bolditalic = EINA_TRUE;
         config->helper.email = eina_stringshare_add("xdg-email");;
         config->helper.url.general = eina_stringshare_add("xdg-open");
         config->helper.url.video = eina_stringshare_add("xdg-open");
@@ -589,7 +594,10 @@ config_load(const char *key)
                 case 9:
                   /* actually do nothing */
                   /*pass through*/
-                case CONF_VER: /* 10 */
+                case 10:
+                  config->font.bolditalic = EINA_TRUE;
+                  /*pass through*/
+                case CONF_VER: /* 11 */
                   config->version = CONF_VER;
                   break;
                 default:
@@ -643,6 +651,7 @@ config_fork(Config *config)
    SCPY(font.orig_name);
    CPY(font.orig_size);
    CPY(font.orig_bitmap);
+   CPY(font.bolditalic);
    SCPY(helper.email);
    SCPY(helper.url.general);
    SCPY(helper.url.video);
diff --git a/src/bin/config.h b/src/bin/config.h
index 05e75f0..db6db6e 100644
--- a/src/bin/config.h
+++ b/src/bin/config.h
@@ -36,6 +36,7 @@ struct _Config
       int            orig_size; /* not in EET */
       unsigned char  bitmap;
       unsigned char  orig_bitmap; /* not in EET */
+      unsigned char  bolditalic;
    } font;
    struct {
       const char    *email;
diff --git a/src/bin/options.h b/src/bin/options.h
index 3203be1..4076af3 100644
--- a/src/bin/options.h
+++ b/src/bin/options.h
@@ -5,34 +5,5 @@ void options_toggle(Evas_Object *win, Evas_Object *bg, 
Evas_Object *term,
                     void (*donecb) (void *data), void *donedata);
 Eina_Bool options_active_get(void);
 
-#define OPTIONS_CB(_cfg_name, _inv)                             \
-static void                                                     \
-_cb_op_behavior_##_cfg_name(void *data, Evas_Object *obj,       \
-                            void *event EINA_UNUSED)            \
-{                                                               \
-   Evas_Object *term = data;                                    \
-   Config *config = termio_config_get(term);                    \
-   if (_inv)                                                    \
-     config->_cfg_name = !elm_check_state_get(obj);             \
-   else                                                         \
-     config->_cfg_name = elm_check_state_get(obj);              \
-   termio_config_update(term);                                  \
-   windows_update();                                            \
-   config_save(config, NULL);                                   \
-}
-
-#define OPTIONS_CX(_bx, _lbl, _cfg_name, _inv)                            \
-   do {                                                                   \
-   o = elm_check_add(_bx);                                                \
-   evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0);            \
-   evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5);               \
-   elm_object_text_set(o, _lbl);                                          \
-   elm_check_state_set(o, _inv ? !config->_cfg_name : config->_cfg_name); \
-   elm_box_pack_end(_bx, o);                                              \
-   evas_object_show(o);                                                   \
-   evas_object_smart_callback_add(o, "changed",                           \
-                                  _cb_op_behavior_##_cfg_name, term)      \
-   } while (0)
-
 
 #endif
diff --git a/src/bin/options_font.c b/src/bin/options_font.c
index 1455bbf..c7abe28 100644
--- a/src/bin/options_font.c
+++ b/src/bin/options_font.c
@@ -342,6 +342,18 @@ options_font_clear(void)
      }
 }
 
+static void
+_cb_font_bolditalic(void *data, Evas_Object *obj,
+                            void *event EINA_UNUSED)
+{
+   Evas_Object *term = data;
+   Config *config = termio_config_get(term);
+
+   config->font.bolditalic = elm_check_state_get(obj);
+   termio_config_update(term);
+   config_save(config, NULL);
+}
+
 void
 options_font(Evas_Object *opbox, Evas_Object *term)
 {
@@ -522,6 +534,16 @@ options_font(Evas_Object *opbox, Evas_Object *term)
    evas_object_size_hint_align_set(opbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
    evas_object_show(o);
 
+   o = elm_check_add(bx0);
+   evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0);
+   evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5);
+   elm_object_text_set(o, _("Display bold and italic in the terminal"));
+   elm_check_state_set(o, config->font.bolditalic);
+   elm_box_pack_end(bx0, o);
+   evas_object_show(o);
+   evas_object_smart_callback_add(o, "changed",
+                                  _cb_font_bolditalic, term);
+
    expecting_resize = 0;
    evas_object_geometry_get(term, NULL, NULL, &tsize_w, &tsize_h);
    evas_object_event_callback_add(term, EVAS_CALLBACK_RESIZE,
diff --git a/src/bin/termio.c b/src/bin/termio.c
index 6e07224..f6434a4 100644
--- a/src/bin/termio.c
+++ b/src/bin/termio.c
@@ -4778,7 +4778,7 @@ _smart_apply(Evas_Object *obj)
                     }
                   else
                     {
-                       int fg, bg, fgext, bgext, codepoint;
+                       int fg, bg, fgext, bgext, codepoint, bold, italic;
 
                        // colors
                        fg = cells[x].att.fg;
@@ -4786,6 +4786,16 @@ _smart_apply(Evas_Object *obj)
                        fgext = cells[x].att.fg256;
                        bgext = cells[x].att.bg256;
                        codepoint = cells[x].codepoint;
+                       if (sd->config->font.bolditalic)
+                         {
+                            bold = cells[x].att.bold;
+                            italic = cells[x].att.italic;
+                         }
+                       else
+                         {
+                            bold = 0;
+                            italic = 0;
+                         }
 
                        if ((fg == COL_DEF) && (cells[x].att.inverse ^ inv))
                          fg = COL_INVERSEBG;
@@ -4807,6 +4817,8 @@ _smart_apply(Evas_Object *obj)
                        if ((cells[x].att.bold) && (!fgext)) fg += 12;
                        if ((cells[x].att.faint) && (!fgext)) fg += 24;
                        if ((tc[x].codepoint != codepoint) ||
+                           (tc[x].bold != bold) ||
+                           (tc[x].italic != italic) ||
                            (tc[x].fg != fg) ||
                            (tc[x].bg != bg) ||
                            (tc[x].fg_extended != fgext) ||
@@ -4821,8 +4833,16 @@ _smart_apply(Evas_Object *obj)
                        tc[x].bg_extended = bgext;
                        tc[x].underline = cells[x].att.underline;
                        tc[x].strikethrough = cells[x].att.strike;
-                       tc[x].bold = cells[x].att.bold;
-                       tc[x].italic = cells[x].att.italic;
+                       if (sd->config->font.bolditalic)
+                         {
+                            tc[x].bold = cells[x].att.bold;
+                            tc[x].italic = cells[x].att.italic;
+                         }
+                       else
+                         {
+                            tc[x].bold = 0;
+                            tc[x].italic = 0;
+                         }
                        tc[x].double_width = cells[x].att.dblwidth;
                        tc[x].fg = fg;
                        tc[x].bg = bg;

-- 


Reply via email to