apply zoom level/font size to all terms in a window

This commit is contained in:
Boris Faure 2015-08-06 21:26:43 +02:00
parent fc79e38575
commit 3716c7ec51
4 changed files with 68 additions and 21 deletions

View File

@ -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;
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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