From 3098d0e5b98ba11826ed1bdd44ed545db6b84b63 Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Mon, 27 Jul 2020 14:26:23 +0300 Subject: Show user from URL in window title --- src/ui/documentwidget.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c index 271ad274..079f08f4 100644 --- a/src/ui/documentwidget.c +++ b/src/ui/documentwidget.c @@ -30,6 +30,7 @@ struct Impl_DocumentWidget { iWidget widget; enum iDocumentState state; iString *url; + iString *titleUser; iGmRequest *request; iAtomicInt isSourcePending; /* request has new content, need to parse it */ iGmDocument *doc; @@ -56,6 +57,7 @@ void init_DocumentWidget(iDocumentWidget *d) { setId_Widget(w, "document"); d->state = blank_DocumentState; d->url = new_String(); + d->titleUser = new_String(); d->request = NULL; d->isSourcePending = iFalse; d->doc = new_GmDocument(); @@ -85,6 +87,7 @@ void init_DocumentWidget(iDocumentWidget *d) { void deinit_DocumentWidget(iDocumentWidget *d) { deinit_PtrArray(&d->visibleLinks); delete_String(d->url); + delete_String(d->titleUser); iRelease(d->request); iRelease(d->doc); SDL_FreeCursor(d->arrowCursor); @@ -163,9 +166,16 @@ static void updateVisible_DocumentWidget_(iDocumentWidget *d) { } static void updateWindowTitle_DocumentWidget_(const iDocumentWidget *d) { - setTitle_Window(get_Window(), - !isEmpty_String(title_GmDocument(d->doc)) ? title_GmDocument(d->doc) - : collectNewCStr_String("Lagrange")); + const char *titleSep = " \u2013 "; + iString *title = collect_String(copy_String(title_GmDocument(d->doc))); + if (!isEmpty_String(d->titleUser)) { + if (!isEmpty_String(title)) appendCStr_String(title, titleSep); + append_String(title, d->titleUser); + } + if (isEmpty_String(title)) { + setCStr_String(title, "Lagrange"); + } + setTitle_Window(get_Window(), title); } static void setSource_DocumentWidget_(iDocumentWidget *d, const iString *source) { @@ -217,6 +227,12 @@ void setUrl_DocumentWidget(iDocumentWidget *d, const iString *url) { set_String(d->url, newUrl); fetch_DocumentWidget_(d); } + iRegExp *userPat = new_RegExp("~([^/?]+)", 0); + iRegExpMatch m; + if (matchString_RegExp(userPat, d->url, &m)) { + setRange_String(d->titleUser, capturedRange_RegExpMatch(&m, 1)); + } + iRelease(userPat); delete_String(newUrl); } -- cgit v1.2.3