aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris Faure <billiob@gmail.com>2016-03-18 20:04:10 +0100
committerBoris Faure <billiob@gmail.com>2016-03-18 20:04:10 +0100
commitd9276909a4462a2c5d8d02b243216bac9aef002d (patch)
tree55b06ddd99d5324b391f81aa125004c66dafe0a7
parentadd a reset button to reset the key bindings (diff)
downloadterminology-d9276909a4462a2c5d8d02b243216bac9aef002d.tar.gz
add option to enable bold/italic (on by default)
-rw-r--r--src/bin/config.c13
-rw-r--r--src/bin/config.h1
-rw-r--r--src/bin/options.h29
-rw-r--r--src/bin/options_font.c22
-rw-r--r--src/bin/termio.c26
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;