diff --git a/src/bin/controls.c b/src/bin/controls.c index 7df44fce..57818221 100644 --- a/src/bin/controls.c +++ b/src/bin/controls.c @@ -13,8 +13,7 @@ static Eina_Bool ct_out = EINA_FALSE; static Ecore_Timer *ct_del_timer = NULL; static Evas_Object *saved_win = NULL; static Evas_Object *saved_bg = NULL; - -static Evas_Object *ct_win, *ct_bg, *ct_term; +static Evas_Object *ct_win = NULL, *ct_bg = NULL, *ct_term = NULL; static Eina_Bool _cb_ct_del_delay(void *data __UNUSED__) @@ -80,7 +79,8 @@ _cb_ct_about(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event __U static void _cb_mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *ev __UNUSED__) { - controls_toggle(saved_win, saved_bg, data); + controls_toggle(ct_win, ct_bg, ct_term); + options_toggle(ct_win, ct_bg, ct_term); } static void @@ -240,6 +240,8 @@ controls_toggle(Evas_Object *win, Evas_Object *bg, Evas_Object *term) ct_win = win; ct_bg = bg; ct_term = term; + saved_win = win; + saved_bg = bg; edje_object_signal_emit(bg, "controls,show", "terminology"); ct_out = EINA_TRUE; elm_object_focus_set(ct_frame, EINA_TRUE); @@ -262,9 +264,9 @@ controls_toggle(Evas_Object *win, Evas_Object *bg, Evas_Object *term) elm_object_focus_set(ct_term, EINA_TRUE); if (ct_del_timer) ecore_timer_del(ct_del_timer); ct_del_timer = ecore_timer_add(10.0, _cb_ct_del_delay, NULL); - ct_term = NULL; - ct_bg = NULL; - ct_win = NULL; +// ct_term = NULL; +// ct_bg = NULL; +// ct_win = NULL; } if (saved_win) { @@ -274,8 +276,6 @@ controls_toggle(Evas_Object *win, Evas_Object *bg, Evas_Object *term) } if (ct_out) { - saved_win = win; - saved_bg = bg; evas_object_event_callback_add(saved_win, EVAS_CALLBACK_DEL, _cb_saved_del, NULL); evas_object_event_callback_add(saved_bg, EVAS_CALLBACK_DEL, _cb_saved_del, NULL); evas_object_event_callback_add(ct_term, EVAS_CALLBACK_DEL, _cb_saved_del, NULL); @@ -284,8 +284,8 @@ controls_toggle(Evas_Object *win, Evas_Object *bg, Evas_Object *term) { saved_win = NULL; saved_bg = NULL; - ct_term = NULL; - ct_bg = NULL; - ct_win = NULL; +// ct_term = NULL; +// ct_bg = NULL; +// ct_win = NULL; } } diff --git a/src/bin/main.c b/src/bin/main.c index 6e20bb62..9fd43e9d 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -642,9 +642,9 @@ _cb_bell(void *data, Evas_Object *obj __UNUSED__, void *event __UNUSED__) Term *term = data; Config *config = termio_config_get(term->term); + if (!config) return; if (!config->disable_visual_bell) edje_object_signal_emit(term->bg, "bell", "terminology"); - if (!config) return; if (config->urg_bell) { if (!term->wn->focused) elm_win_urgent_set(term->wn->win, EINA_TRUE); @@ -1006,6 +1006,7 @@ main_media_update(const Config *config) EINA_LIST_FOREACH(wn->terms, ll, term) { if (term->config != config) continue; + if (!config) continue; if ((config->background) && (config->background[0])) { Evas_Object *o; @@ -1205,6 +1206,8 @@ main_term_new(Win *wn, Config *config, const char *cmd, term = calloc(1, sizeof(Term)); if (!term) return NULL; + if (!config) abort(); + term->wn = wn; term->hold = hold; term->config = config; diff --git a/src/bin/options.c b/src/bin/options.c index 80b80197..e2f5fc67 100644 --- a/src/bin/options.c +++ b/src/bin/options.c @@ -127,14 +127,16 @@ options_toggle(Evas_Object *win, Evas_Object *bg, Evas_Object *term) { Evas_Object *o; - saved_win = win; - saved_bg = bg; mode = -1; if (!op_frame) { Elm_Object_Item *it_fn; Config *config = termio_config_get(term); - + + if (!config) return; + saved_win = win; + saved_bg = bg; + op_opbox = o = elm_box_add(win); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); @@ -195,7 +197,12 @@ options_toggle(Evas_Object *win, Evas_Object *bg, Evas_Object *term) evas_object_show(op_frame); } else if ((op_opbox) && (!op_out)) - edje_object_signal_emit(bg, "optdetails,show", "terminology"); + { + edje_object_part_swallow(bg, "terminology.optdetails", op_opbox); + edje_object_part_swallow(bg, "terminology.options", op_frame); + edje_object_signal_emit(bg, "optdetails,show", "terminology"); + edje_object_signal_emit(bg, "options,show", "terminology"); + } if (!op_out) {