forked from enlightenment/terminology
add configuration on whether to activate links
- on email - on file paths - on URLs - from escape codes (called hyper links in the code) Closes T6339
This commit is contained in:
parent
a78c653b60
commit
2e34b8e962
|
@ -7,7 +7,7 @@
|
||||||
#include "col.h"
|
#include "col.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
#define CONF_VER 19
|
#define CONF_VER 20
|
||||||
|
|
||||||
#define LIM(v, min, max) {if (v >= max) v = max; else if (v <= min) v = min;}
|
#define LIM(v, min, max) {if (v >= max) v = max; else if (v <= min) v = min;}
|
||||||
|
|
||||||
|
@ -122,8 +122,16 @@ config_init(void)
|
||||||
(edd_base, Config, "cursor_shape", cursor_shape, EET_T_INT);
|
(edd_base, Config, "cursor_shape", cursor_shape, EET_T_INT);
|
||||||
EET_DATA_DESCRIPTOR_ADD_BASIC
|
EET_DATA_DESCRIPTOR_ADD_BASIC
|
||||||
(edd_base, Config, "disable_visual_bell", disable_visual_bell, EET_T_UCHAR);
|
(edd_base, Config, "disable_visual_bell", disable_visual_bell, EET_T_UCHAR);
|
||||||
EET_DATA_DESCRIPTOR_ADD_BASIC
|
EET_DATA_DESCRIPTOR_ADD_BASIC /* DEPRECATED */
|
||||||
(edd_base, Config, "active_links", active_links, EET_T_UCHAR);
|
(edd_base, Config, "active_links", active_links, EET_T_UCHAR);
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_BASIC
|
||||||
|
(edd_base, Config, "active_links_email", active_links_email, EET_T_UCHAR);
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_BASIC
|
||||||
|
(edd_base, Config, "active_links_file", active_links_file, EET_T_UCHAR);
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_BASIC
|
||||||
|
(edd_base, Config, "active_links_url", active_links_url, EET_T_UCHAR);
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_BASIC
|
||||||
|
(edd_base, Config, "active_links_escape", active_links_escape, EET_T_UCHAR);
|
||||||
EET_DATA_DESCRIPTOR_ADD_BASIC
|
EET_DATA_DESCRIPTOR_ADD_BASIC
|
||||||
(edd_base, Config, "translucent", translucent, EET_T_UCHAR);
|
(edd_base, Config, "translucent", translucent, EET_T_UCHAR);
|
||||||
EET_DATA_DESCRIPTOR_ADD_BASIC
|
EET_DATA_DESCRIPTOR_ADD_BASIC
|
||||||
|
@ -258,7 +266,10 @@ config_sync(const Config *config_src, Config *config)
|
||||||
config->cursor_shape = config_src->cursor_shape;
|
config->cursor_shape = config_src->cursor_shape;
|
||||||
config->disable_visual_bell = config_src->disable_visual_bell;
|
config->disable_visual_bell = config_src->disable_visual_bell;
|
||||||
config->bell_rings = config_src->bell_rings;
|
config->bell_rings = config_src->bell_rings;
|
||||||
config->active_links = config_src->active_links;
|
config->active_links_email = config_src->active_links_email;
|
||||||
|
config->active_links_file = config_src->active_links_file;
|
||||||
|
config->active_links_url = config_src->active_links_url;
|
||||||
|
config->active_links_escape = config_src->active_links_escape;
|
||||||
config->mute = config_src->mute;
|
config->mute = config_src->mute;
|
||||||
config->visualize = config_src->visualize;
|
config->visualize = config_src->visualize;
|
||||||
config->urg_bell = config_src->urg_bell;
|
config->urg_bell = config_src->urg_bell;
|
||||||
|
@ -519,7 +530,10 @@ config_new(void)
|
||||||
config->cursor_shape = CURSOR_SHAPE_BLOCK;
|
config->cursor_shape = CURSOR_SHAPE_BLOCK;
|
||||||
config->disable_visual_bell = EINA_FALSE;
|
config->disable_visual_bell = EINA_FALSE;
|
||||||
config->bell_rings = EINA_TRUE;
|
config->bell_rings = EINA_TRUE;
|
||||||
config->active_links = EINA_TRUE;
|
config->active_links_email = EINA_TRUE;
|
||||||
|
config->active_links_file = EINA_TRUE;
|
||||||
|
config->active_links_url = EINA_TRUE;
|
||||||
|
config->active_links_escape = EINA_TRUE;
|
||||||
config->translucent = EINA_FALSE;
|
config->translucent = EINA_FALSE;
|
||||||
config->mute = EINA_FALSE;
|
config->mute = EINA_FALSE;
|
||||||
config->visualize = EINA_TRUE;
|
config->visualize = EINA_TRUE;
|
||||||
|
@ -670,7 +684,14 @@ config_load(const char *key)
|
||||||
config->cursor_shape = CURSOR_SHAPE_BLOCK;
|
config->cursor_shape = CURSOR_SHAPE_BLOCK;
|
||||||
EINA_FALLTHROUGH;
|
EINA_FALLTHROUGH;
|
||||||
/*pass through*/
|
/*pass through*/
|
||||||
case CONF_VER: /* 19 */
|
case 19:
|
||||||
|
config->active_links_email = config->active_links;
|
||||||
|
config->active_links_file = config->active_links;
|
||||||
|
config->active_links_url = config->active_links;
|
||||||
|
config->active_links_escape = config->active_links;
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
/*pass through*/
|
||||||
|
case CONF_VER: /* 20 */
|
||||||
config->version = CONF_VER;
|
config->version = CONF_VER;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -745,7 +766,10 @@ config_fork(const Config *config)
|
||||||
CPY(cursor_shape);
|
CPY(cursor_shape);
|
||||||
CPY(disable_visual_bell);
|
CPY(disable_visual_bell);
|
||||||
CPY(bell_rings);
|
CPY(bell_rings);
|
||||||
CPY(active_links);
|
CPY(active_links_email);
|
||||||
|
CPY(active_links_file);
|
||||||
|
CPY(active_links_url);
|
||||||
|
CPY(active_links_escape);
|
||||||
CPY(translucent);
|
CPY(translucent);
|
||||||
CPY(opacity);
|
CPY(opacity);
|
||||||
CPY(mute);
|
CPY(mute);
|
||||||
|
|
|
@ -69,7 +69,11 @@ struct _Config
|
||||||
int cursor_shape;
|
int cursor_shape;
|
||||||
Eina_Bool disable_visual_bell;
|
Eina_Bool disable_visual_bell;
|
||||||
Eina_Bool bell_rings;
|
Eina_Bool bell_rings;
|
||||||
Eina_Bool active_links;
|
Eina_Bool active_links; /* DEPRECATED */
|
||||||
|
Eina_Bool active_links_email;
|
||||||
|
Eina_Bool active_links_file;
|
||||||
|
Eina_Bool active_links_url;
|
||||||
|
Eina_Bool active_links_escape;
|
||||||
Eina_Bool translucent;
|
Eina_Bool translucent;
|
||||||
Eina_Bool mute;
|
Eina_Bool mute;
|
||||||
Eina_Bool visualize;
|
Eina_Bool visualize;
|
||||||
|
|
|
@ -745,6 +745,10 @@ elm_main(int argc, char **argv)
|
||||||
if (active_links != 0xff)
|
if (active_links != 0xff)
|
||||||
{
|
{
|
||||||
config->active_links = !!active_links;
|
config->active_links = !!active_links;
|
||||||
|
config->active_links_email = config->active_links;
|
||||||
|
config->active_links_file = config->active_links;
|
||||||
|
config->active_links_url = config->active_links;
|
||||||
|
config->active_links_escape = config->active_links;
|
||||||
config->temporary = EINA_TRUE;
|
config->temporary = EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,10 @@ CB(disable_visual_bell, 1);
|
||||||
CB(bell_rings, 0);
|
CB(bell_rings, 0);
|
||||||
CB(flicker_on_key, 0);
|
CB(flicker_on_key, 0);
|
||||||
CB(urg_bell, 0);
|
CB(urg_bell, 0);
|
||||||
CB(active_links, 0);
|
CB(active_links_email, 0);
|
||||||
|
CB(active_links_file, 0);
|
||||||
|
CB(active_links_url, 0);
|
||||||
|
CB(active_links_escape, 0);
|
||||||
CB(multi_instance, 0);
|
CB(multi_instance, 0);
|
||||||
CB(xterm_256color, 0);
|
CB(xterm_256color, 0);
|
||||||
CB(erase_is_del, 0);
|
CB(erase_is_del, 0);
|
||||||
|
@ -204,14 +207,7 @@ static void
|
||||||
_add_cursors_option(Evas_Object *bx,
|
_add_cursors_option(Evas_Object *bx,
|
||||||
Behavior_Ctx *ctx)
|
Behavior_Ctx *ctx)
|
||||||
{
|
{
|
||||||
Evas_Object *o, *lbl, *rd, *rdg, *layout, *oe;
|
Evas_Object *lbl, *rd, *rdg, *layout, *oe;
|
||||||
|
|
||||||
o = elm_separator_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_separator_horizontal_set(o, EINA_TRUE);
|
|
||||||
elm_box_pack_end(bx, o);
|
|
||||||
evas_object_show(o);
|
|
||||||
|
|
||||||
lbl = elm_label_add(bx);
|
lbl = elm_label_add(bx);
|
||||||
evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0);
|
evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
@ -340,13 +336,6 @@ _add_cursors_option(Evas_Object *bx,
|
||||||
edje_object_signal_emit(oe, "focus,in,noblink", "terminology");
|
edje_object_signal_emit(oe, "focus,in,noblink", "terminology");
|
||||||
evas_object_smart_callback_add(rd, "changed", _cursors_changed_cb, ctx);
|
evas_object_smart_callback_add(rd, "changed", _cursors_changed_cb, ctx);
|
||||||
|
|
||||||
o = elm_separator_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_separator_horizontal_set(o, EINA_TRUE);
|
|
||||||
elm_box_pack_end(bx, o);
|
|
||||||
evas_object_show(o);
|
|
||||||
|
|
||||||
elm_radio_value_set(rdg,
|
elm_radio_value_set(rdg,
|
||||||
1 + 2 * ctx->config->cursor_shape + (ctx->config->disable_cursor_blink ? 1 : 0));
|
1 + 2 * ctx->config->cursor_shape + (ctx->config->disable_cursor_blink ? 1 : 0));
|
||||||
}
|
}
|
||||||
|
@ -355,7 +344,7 @@ void
|
||||||
options_behavior(Evas_Object *opbox, Evas_Object *term)
|
options_behavior(Evas_Object *opbox, Evas_Object *term)
|
||||||
{
|
{
|
||||||
Config *config = termio_config_get(term);
|
Config *config = termio_config_get(term);
|
||||||
Evas_Object *o, *bx, *sc, *frame;
|
Evas_Object *o, *bx, *sc, *frame, *lbl;
|
||||||
int w, h;
|
int w, h;
|
||||||
const char *tooltip;
|
const char *tooltip;
|
||||||
Behavior_Ctx *ctx;
|
Behavior_Ctx *ctx;
|
||||||
|
@ -391,7 +380,18 @@ options_behavior(Evas_Object *opbox, Evas_Object *term)
|
||||||
elm_object_content_set(sc, o);
|
elm_object_content_set(sc, o);
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
|
|
||||||
|
#define SEPARATOR \
|
||||||
|
do { \
|
||||||
|
o = elm_separator_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_separator_horizontal_set(o, EINA_TRUE); \
|
||||||
|
elm_box_pack_end(bx, o); \
|
||||||
|
evas_object_show(o); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
#define CX(_lbl, _cfg_name, _inv) \
|
#define CX(_lbl, _cfg_name, _inv) \
|
||||||
|
do { \
|
||||||
o = elm_check_add(bx); \
|
o = elm_check_add(bx); \
|
||||||
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); \
|
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); \
|
||||||
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5); \
|
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5); \
|
||||||
|
@ -400,18 +400,35 @@ options_behavior(Evas_Object *opbox, Evas_Object *term)
|
||||||
elm_box_pack_end(bx, o); \
|
elm_box_pack_end(bx, o); \
|
||||||
evas_object_show(o); \
|
evas_object_show(o); \
|
||||||
evas_object_smart_callback_add(o, "changed", \
|
evas_object_smart_callback_add(o, "changed", \
|
||||||
_cb_op_behavior_##_cfg_name, ctx)
|
_cb_op_behavior_##_cfg_name, ctx); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
CX(_("Scroll to bottom on new content"), jump_on_change, 0);
|
CX(_("Scroll to bottom on new content"), jump_on_change, 0);
|
||||||
CX(_("Scroll to bottom when a key is pressed"), jump_on_keypress, 0);
|
CX(_("Scroll to bottom when a key is pressed"), jump_on_keypress, 0);
|
||||||
|
|
||||||
|
SEPARATOR;
|
||||||
|
|
||||||
_add_cursors_option(bx, ctx);
|
_add_cursors_option(bx, ctx);
|
||||||
|
|
||||||
|
SEPARATOR;
|
||||||
|
|
||||||
|
lbl = elm_label_add(bx);
|
||||||
|
evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_size_hint_align_set(lbl, 0.0, 0.0);
|
||||||
|
elm_layout_text_set(lbl, NULL, _("Active Links:"));
|
||||||
|
elm_box_pack_end(bx, lbl);
|
||||||
|
evas_object_show(lbl);
|
||||||
|
|
||||||
|
CX(_("On emails"), active_links_email, 0);
|
||||||
|
CX(_("On file paths"), active_links_file, 0);
|
||||||
|
CX(_("On URLs"), active_links_url, 0);
|
||||||
|
CX(_("Based on escape codes"), active_links_escape, 0);
|
||||||
|
|
||||||
|
SEPARATOR;
|
||||||
|
|
||||||
CX(_("React to key presses"), flicker_on_key, 0);
|
CX(_("React to key presses"), flicker_on_key, 0);
|
||||||
if (!multisense_available)
|
if (!multisense_available)
|
||||||
{
|
{
|
||||||
Evas_Object *lbl;
|
|
||||||
|
|
||||||
lbl = elm_label_add(bx);
|
lbl = elm_label_add(bx);
|
||||||
evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0);
|
evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0);
|
||||||
evas_object_size_hint_align_set(lbl, 0.0, 0.5);
|
evas_object_size_hint_align_set(lbl, 0.0, 0.5);
|
||||||
|
@ -422,7 +439,6 @@ options_behavior(Evas_Object *opbox, Evas_Object *term)
|
||||||
CX(_("Visual Bell"), disable_visual_bell, 1);
|
CX(_("Visual Bell"), disable_visual_bell, 1);
|
||||||
CX(_("Bell rings"), bell_rings, 0);
|
CX(_("Bell rings"), bell_rings, 0);
|
||||||
CX(_("Urgent Bell"), urg_bell, 0);
|
CX(_("Urgent Bell"), urg_bell, 0);
|
||||||
CX(_("Active Links"), active_links, 0);
|
|
||||||
CX(_("Multiple instances, one process"), multi_instance, 0);
|
CX(_("Multiple instances, one process"), multi_instance, 0);
|
||||||
CX(_("Set TERM to xterm-256color"), xterm_256color, 0);
|
CX(_("Set TERM to xterm-256color"), xterm_256color, 0);
|
||||||
CX(_("BackArrow sends Del (instead of BackSpace)"), erase_is_del, 0);
|
CX(_("BackArrow sends Del (instead of BackSpace)"), erase_is_del, 0);
|
||||||
|
@ -438,6 +454,7 @@ options_behavior(Evas_Object *opbox, Evas_Object *term)
|
||||||
|
|
||||||
#undef CX
|
#undef CX
|
||||||
|
|
||||||
|
SEPARATOR;
|
||||||
|
|
||||||
o = elm_check_add(bx);
|
o = elm_check_add(bx);
|
||||||
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0);
|
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
@ -504,12 +521,7 @@ options_behavior(Evas_Object *opbox, Evas_Object *term)
|
||||||
evas_object_smart_callback_add(o, "changed",
|
evas_object_smart_callback_add(o, "changed",
|
||||||
_cb_op_behavior_cg_height, ctx);
|
_cb_op_behavior_cg_height, ctx);
|
||||||
|
|
||||||
o = elm_separator_add(bx);
|
SEPARATOR;
|
||||||
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_separator_horizontal_set(o, EINA_TRUE);
|
|
||||||
elm_box_pack_end(bx, o);
|
|
||||||
evas_object_show(o);
|
|
||||||
|
|
||||||
o = elm_label_add(bx);
|
o = elm_label_add(bx);
|
||||||
evas_object_size_hint_weight_set(o, 0.0, 0.0);
|
evas_object_size_hint_weight_set(o, 0.0, 0.0);
|
||||||
|
@ -572,4 +584,5 @@ options_behavior(Evas_Object *opbox, Evas_Object *term)
|
||||||
evas_object_size_hint_weight_set(opbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_weight_set(opbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
evas_object_size_hint_align_set(opbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
evas_object_size_hint_align_set(opbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
|
#undef SEPARATOR
|
||||||
}
|
}
|
||||||
|
|
|
@ -821,7 +821,8 @@ _should_inline(const Evas_Object *obj)
|
||||||
|
|
||||||
/* Need to be freed */
|
/* Need to be freed */
|
||||||
const char *
|
const char *
|
||||||
termio_link_get(const Evas_Object *obj)
|
termio_link_get(const Evas_Object *obj,
|
||||||
|
Eina_Bool *from_escape_code)
|
||||||
{
|
{
|
||||||
Termio *sd = evas_object_smart_data_get(obj);
|
Termio *sd = evas_object_smart_data_get(obj);
|
||||||
EINA_SAFETY_ON_NULL_RETURN_VAL(sd, NULL);
|
EINA_SAFETY_ON_NULL_RETURN_VAL(sd, NULL);
|
||||||
|
@ -829,6 +830,9 @@ termio_link_get(const Evas_Object *obj)
|
||||||
|
|
||||||
if (!sd->link.string && !sd->link.id)
|
if (!sd->link.string && !sd->link.id)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
if (from_escape_code)
|
||||||
|
*from_escape_code = EINA_FALSE;
|
||||||
link = sd->link.string;
|
link = sd->link.string;
|
||||||
if (sd->link.id)
|
if (sd->link.id)
|
||||||
{
|
{
|
||||||
|
@ -836,6 +840,8 @@ termio_link_get(const Evas_Object *obj)
|
||||||
if (!hl->url)
|
if (!hl->url)
|
||||||
return NULL;
|
return NULL;
|
||||||
link = hl->url;
|
link = hl->url;
|
||||||
|
if (from_escape_code)
|
||||||
|
*from_escape_code = EINA_TRUE;
|
||||||
}
|
}
|
||||||
if (link_is_url(link))
|
if (link_is_url(link))
|
||||||
{
|
{
|
||||||
|
@ -863,28 +869,47 @@ _activate_link(Evas_Object *obj, Eina_Bool may_inline)
|
||||||
char buf[PATH_MAX], *s, *escaped;
|
char buf[PATH_MAX], *s, *escaped;
|
||||||
const char *path = NULL, *cmd = NULL;
|
const char *path = NULL, *cmd = NULL;
|
||||||
const char *link = NULL;
|
const char *link = NULL;
|
||||||
|
Eina_Bool from_escape_code = EINA_FALSE;
|
||||||
Eina_Bool url = EINA_FALSE, email = EINA_FALSE, handled = EINA_FALSE;
|
Eina_Bool url = EINA_FALSE, email = EINA_FALSE, handled = EINA_FALSE;
|
||||||
|
|
||||||
EINA_SAFETY_ON_NULL_RETURN(sd);
|
EINA_SAFETY_ON_NULL_RETURN(sd);
|
||||||
config = sd->config;
|
config = sd->config;
|
||||||
if (!config) return;
|
if (!config)
|
||||||
if (!config->active_links) return;
|
return;
|
||||||
|
|
||||||
link = termio_link_get(obj);
|
link = termio_link_get(obj, &from_escape_code);
|
||||||
if (!link)
|
if (!link)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (link_is_url(link))
|
if (from_escape_code && !config->active_links_escape)
|
||||||
url = EINA_TRUE;
|
return;
|
||||||
else if (link[0] == '/')
|
|
||||||
path = link;
|
|
||||||
else if (link_is_email(link))
|
|
||||||
email = EINA_TRUE;
|
|
||||||
|
|
||||||
if (url && casestartswith(link, "mailto:"))
|
if (link_is_url(link))
|
||||||
|
{
|
||||||
|
if (casestartswith(link, "mailto:"))
|
||||||
|
{
|
||||||
|
email = EINA_TRUE;
|
||||||
|
if (!config->active_links_email)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
url = EINA_TRUE;
|
||||||
|
if (!config->active_links_url)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (link[0] == '/')
|
||||||
|
{
|
||||||
|
path = link;
|
||||||
|
if (!config->active_links_file)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (link_is_email(link))
|
||||||
{
|
{
|
||||||
email = EINA_TRUE;
|
email = EINA_TRUE;
|
||||||
url = EINA_FALSE;
|
if (!config->active_links_email)
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
s = eina_str_escape(link);
|
s = eina_str_escape(link);
|
||||||
|
@ -3778,8 +3803,6 @@ _smart_mouseover_apply(Evas_Object *obj)
|
||||||
|
|
||||||
EINA_SAFETY_ON_NULL_RETURN(sd);
|
EINA_SAFETY_ON_NULL_RETURN(sd);
|
||||||
config = sd->config;
|
config = sd->config;
|
||||||
if (!config->active_links)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if ((sd->mouse.cx < 0) || (sd->mouse.cy < 0) ||
|
if ((sd->mouse.cx < 0) || (sd->mouse.cy < 0) ||
|
||||||
(sd->link.suspend) || (!evas_object_focus_get(obj)))
|
(sd->link.suspend) || (!evas_object_focus_get(obj)))
|
||||||
|
@ -3796,7 +3819,8 @@ _smart_mouseover_apply(Evas_Object *obj)
|
||||||
|
|
||||||
if (cell->att.link_id)
|
if (cell->att.link_id)
|
||||||
{
|
{
|
||||||
_hyperlink_mouseover(obj, sd, cell->att.link_id);
|
if (config->active_links_escape)
|
||||||
|
_hyperlink_mouseover(obj, sd, cell->att.link_id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3808,6 +3832,30 @@ _smart_mouseover_apply(Evas_Object *obj)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (link_is_url(s))
|
||||||
|
{
|
||||||
|
if (casestartswith(s, "mailto:"))
|
||||||
|
{
|
||||||
|
if (!config->active_links_email)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!config->active_links_url)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (s[0] == '/')
|
||||||
|
{
|
||||||
|
if (!config->active_links_file)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (link_is_email(s))
|
||||||
|
{
|
||||||
|
if (!config->active_links_email)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (sd->link.string)
|
if (sd->link.string)
|
||||||
eina_stringshare_del(sd->link.string);
|
eina_stringshare_del(sd->link.string);
|
||||||
sd->link.string = eina_stringshare_add(s);
|
sd->link.string = eina_stringshare_add(s);
|
||||||
|
|
|
@ -27,7 +27,8 @@ void termio_font_update(Evas_Object *obj);
|
||||||
Config *termio_config_get(const Evas_Object *obj);
|
Config *termio_config_get(const Evas_Object *obj);
|
||||||
Eina_Bool termio_take_selection(Evas_Object *obj, Elm_Sel_Type);
|
Eina_Bool termio_take_selection(Evas_Object *obj, Elm_Sel_Type);
|
||||||
void termio_paste_selection(Evas_Object *obj, Elm_Sel_Type);
|
void termio_paste_selection(Evas_Object *obj, Elm_Sel_Type);
|
||||||
const char *termio_link_get(const Evas_Object *obj);
|
const char *termio_link_get(const Evas_Object *obj,
|
||||||
|
Eina_Bool *from_escape_code);
|
||||||
void termio_mouseover_suspend_pushpop(Evas_Object *obj, int dir);
|
void termio_mouseover_suspend_pushpop(Evas_Object *obj, int dir);
|
||||||
void termio_event_feed_mouse_in(Evas_Object *obj);
|
void termio_event_feed_mouse_in(Evas_Object *obj);
|
||||||
void termio_size_get(const Evas_Object *obj, int *w, int *h);
|
void termio_size_get(const Evas_Object *obj, int *w, int *h);
|
||||||
|
|
|
@ -4452,7 +4452,7 @@ _cb_popup(void *data,
|
||||||
{
|
{
|
||||||
/* Popup a link, there was user interaction on it. */
|
/* Popup a link, there was user interaction on it. */
|
||||||
from_user_interaction = EINA_TRUE;
|
from_user_interaction = EINA_TRUE;
|
||||||
src = termio_link_get(term->termio);
|
src = termio_link_get(term->termio, NULL);
|
||||||
}
|
}
|
||||||
if (!src)
|
if (!src)
|
||||||
return;
|
return;
|
||||||
|
@ -4473,7 +4473,7 @@ _cb_popup_queue(void *data,
|
||||||
if (!src)
|
if (!src)
|
||||||
{
|
{
|
||||||
from_user_interaction = EINA_TRUE;
|
from_user_interaction = EINA_TRUE;
|
||||||
src = termio_link_get(term->termio);
|
src = termio_link_get(term->termio, NULL);
|
||||||
}
|
}
|
||||||
if (!src)
|
if (!src)
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue