From e80d25a9818c23aafc3932870cdc19f59f200735 Mon Sep 17 00:00:00 2001 From: Alastair Poole Date: Sat, 4 Aug 2018 12:17:03 +0100 Subject: [PATCH] tabs: let tabs with large filenames grow. This should ensure tabs grow when the filename is very long. --- src/bin/mainview/edi_mainview_panel.c | 29 +++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/bin/mainview/edi_mainview_panel.c b/src/bin/mainview/edi_mainview_panel.c index 1a03783..d860f0f 100644 --- a/src/bin/mainview/edi_mainview_panel.c +++ b/src/bin/mainview/edi_mainview_panel.c @@ -466,6 +466,29 @@ _edi_mainview_panel_content_create(Edi_Mainview_Item *item, Evas_Object *parent) return container; } +static int +_font_width_get(Evas_Object *parent, const char *text) +{ + int w = 0; + + Evas_Object *textblock = evas_object_text_add(parent); + evas_object_size_hint_weight_set(textblock, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(textblock, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(textblock); + + evas_object_text_font_set(textblock, "sans", 12); + evas_object_text_text_set(textblock, text); + + evas_object_geometry_get(textblock, NULL, NULL, &w, NULL); + + evas_object_del(textblock); + + if (w < 120) + w = 120; + + return w; +} + static void _edi_mainview_panel_item_tab_add(Edi_Mainview_Panel *panel, Edi_Path_Options *options, const char *mime) { @@ -473,7 +496,7 @@ _edi_mainview_panel_item_tab_add(Edi_Mainview_Panel *panel, Edi_Path_Options *op Edi_Mainview_Item *item; Edi_Editor *editor; Elm_Code *code; - int h; + int h, width; const char *path; if (!panel) return; @@ -515,9 +538,11 @@ _edi_mainview_panel_item_tab_add(Edi_Mainview_Panel *panel, Edi_Path_Options *op elm_icon_standard_set(icon, provider->icon); elm_object_part_content_set(tab, "icon", icon); */ + width = _font_width_get(tab, ecore_file_file_get(options->path)); + elm_layout_signal_callback_add(tab, "mouse,clicked,1", "*", _promote, item); elm_layout_signal_callback_add(tab, "elm,deleted", "elm", _closetab, item); - evas_object_size_hint_min_set(tab, 120 * elm_config_scale_get(), h); + evas_object_size_hint_min_set(tab, width * elm_config_scale_get(), h); elm_box_pack_end(panel->tabs, tab); evas_object_show(tab);