From 51b41e21e71ef5ff530b8fd28007a75c01d79c76 Mon Sep 17 00:00:00 2001 From: yggverse Date: Mon, 16 Sep 2024 09:24:08 +0300 Subject: [PATCH] customize tabl labels view, add tooltip support for ellipsize mode, add label update action --- src/app/browser/main/tab/label.cpp | 38 ++++++++++++++++++++++++++---- src/app/browser/main/tab/label.hpp | 9 +++++++ 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/src/app/browser/main/tab/label.cpp b/src/app/browser/main/tab/label.cpp index 25e87d16..ee64c6b6 100644 --- a/src/app/browser/main/tab/label.cpp +++ b/src/app/browser/main/tab/label.cpp @@ -37,10 +37,26 @@ Label::Label( ); // Init widget - /* not in use, overwritten by page init @TODO - set_text( - _("New page") - );*/ + set_ellipsize( + Pango::EllipsizeMode::END + ); + + /* @TODO require als set_xalign(0) + set_halign( + Gtk::Align::START + ); */ + + set_has_tooltip( + true + ); + + set_single_line_mode( + true + ); + + set_width_chars( + WIDTH_CHARS + ); } // Actions @@ -71,7 +87,7 @@ int Label::session_restore( while (sqlite3_step(statement) == SQLITE_ROW) { // Restore widget data - set_text( + update( reinterpret_cast( sqlite3_column_text( statement, @@ -102,6 +118,18 @@ int Label::session_save( ); } +void Label::update( + const Glib::ustring & TEXT +) { + set_text( + TEXT + ); + + set_tooltip_text( + TEXT // same value for tooltip (ellipsize mode) + ); +} + // Database model int Label::DB::SESSION::init( sqlite3 * db diff --git a/src/app/browser/main/tab/label.hpp b/src/app/browser/main/tab/label.hpp index f2948454..b928e566 100644 --- a/src/app/browser/main/tab/label.hpp +++ b/src/app/browser/main/tab/label.hpp @@ -5,8 +5,10 @@ #include #include #include +#include #include #include +#include #include namespace app::browser::main::tab @@ -61,6 +63,9 @@ namespace app::browser::main::tab // Actions Glib::RefPtr action__tab_close; + // Defaults + int WIDTH_CHARS = 16; + /* * Class API */ @@ -79,6 +84,10 @@ namespace app::browser::main::tab int session_save( const sqlite3_int64 & APP_BROWSER_MAIN_TAB__SESSION__ID ); // return sqlite3_finalize status code + + void update( + const Glib::ustring & TEXT + ); }; }