From 7cc136112a09ce25a0bcd3e1eadea62f77fe3379 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 7 Jun 2012 14:37:50 -0700 Subject: [PATCH] Format window title Show in the following format: file_name (directory_path) - atom This seems to be the format consistently used by Linux editors and conveys the file name in the task bar when minimized. Also insert a `~` and drop the directory prefix when the file/folder being viewed is under the HOME directory --- Atom-Linux/atom.cpp | 2 +- Atom-Linux/client_handler_gtk.cpp | 28 ++++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/Atom-Linux/atom.cpp b/Atom-Linux/atom.cpp index eb4811bf0..9390d29c8 100644 --- a/Atom-Linux/atom.cpp +++ b/Atom-Linux/atom.cpp @@ -72,7 +72,7 @@ int main(int argc, char *argv[]) { CefInitialize(settings, app); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(window), "Atom"); + gtk_window_set_title(GTK_WINDOW(window), "atom"); gtk_window_maximize(GTK_WINDOW(window)); g_signal_connect(window, "focus", G_CALLBACK(&HandleFocus), NULL); diff --git a/Atom-Linux/client_handler_gtk.cpp b/Atom-Linux/client_handler_gtk.cpp index 0e79ee246..2ed7bd563 100644 --- a/Atom-Linux/client_handler_gtk.cpp +++ b/Atom-Linux/client_handler_gtk.cpp @@ -7,6 +7,7 @@ #include "client_handler.h" #include "include/cef_browser.h" #include "include/cef_frame.h" +#include // ClientHandler::ClientLifeSpanHandler implementation bool ClientHandler::OnBeforePopup(CefRefPtr parentBrowser, @@ -27,10 +28,33 @@ void ClientHandler::OnTitleChange(CefRefPtr browser, const CefString& title) { REQUIRE_UI_THREAD(); + std::string titleStr(title); + + size_t inHomeDir; + std::string home = getenv("HOME"); + inHomeDir = titleStr.find(home); + if (inHomeDir == 0) { + titleStr = titleStr.substr(home.length()); + titleStr.insert(0, "~"); + } + + size_t lastSlash; + lastSlash = titleStr.rfind("/"); + + std::string formatted; + if (lastSlash != std::string::npos && lastSlash + 1 < titleStr.length()) { + formatted.append(titleStr, lastSlash + 1, + titleStr.length() - lastSlash); + formatted.append(" ("); + formatted.append(titleStr, 0, lastSlash); + formatted.append(")"); + } else + formatted.append(titleStr); + formatted.append(" - atom"); + GtkWidget* window = gtk_widget_get_ancestor( GTK_WIDGET(browser->GetWindowHandle()), GTK_TYPE_WINDOW); - std::string titleStr(title); - gtk_window_set_title(GTK_WINDOW(window), titleStr.c_str()); + gtk_window_set_title(GTK_WINDOW(window), formatted.c_str()); } void ClientHandler::SendNotification(NotificationType type) {