From d7a8fb0f709677b76cbd63e9a48a466a4940b6fb Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 29 Oct 2012 00:45:50 +0300 Subject: Highlight window header with * if got new chat message with minimized window. --- src/client.cpp | 41 ++++++++++++++++++++++++++++++++++++----- src/client.h | 7 +++++-- src/gui/widgets/chattab.cpp | 1 + 3 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/client.cpp b/src/client.cpp index 7df9febd6..3b4bc3203 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -276,7 +276,8 @@ Client::Client(const Options &options) : mIsMinimized(false), mInputFocused(true), mMouseFocused(true), - mGuiAlpha(1.0f) + mGuiAlpha(1.0f), + mNewMessageFlag(false) { mInstance = this; } @@ -395,18 +396,20 @@ void Client::gameInit() if (mOptions.test.empty()) { - SDL_WM_SetCaption(strprintf("%s %s", + mCaption = strprintf("%s %s", branding.getStringValue("appName").c_str(), - SMALL_VERSION).c_str(), nullptr); + SMALL_VERSION); } else { - SDL_WM_SetCaption(strprintf( + mCaption = strprintf( "Please wait - VIDEO MODE TEST - %s %s - Please wait", branding.getStringValue("appName").c_str(), - SMALL_VERSION).c_str(), nullptr); + SMALL_VERSION); } + SDL_WM_SetCaption(mCaption.c_str(), nullptr); + const ResourceManager *const resman = ResourceManager::getInstance(); if (!resman->setWriteDir(mLocalDataDir)) @@ -2566,3 +2569,31 @@ void Client::applyKeyRepeat() SDL_EnableKeyRepeat(config.getIntValue("repeateDelay"), config.getIntValue("repeateInterval")); } + +void Client::setIsMinimized(const bool n) +{ + Client *client = instance(); + if (!client) + return; + + client->mIsMinimized = n; + if (!n && client->mNewMessageFlag) + { + client->mNewMessageFlag = false; + SDL_WM_SetCaption(client->mCaption.c_str(), nullptr); + } +} + +void Client::newChatMessage() +{ + Client *client = instance(); + if (!client) + return; + + if (!client->mNewMessageFlag && client->mIsMinimized) + { + // show * on window caption + SDL_WM_SetCaption(("*" + client->mCaption).c_str(), nullptr); + client->mNewMessageFlag = true; + } +} diff --git a/src/client.h b/src/client.h index 393e4cb73..78e8eaf58 100644 --- a/src/client.h +++ b/src/client.h @@ -248,8 +248,9 @@ public: static bool getIsMinimized() { return instance()->mIsMinimized; } - static void setIsMinimized(const bool n) - { instance()->mIsMinimized = n; } + static void setIsMinimized(const bool n); + + static void newChatMessage(); static bool getInputFocused() { return instance()->mInputFocused; } @@ -386,6 +387,8 @@ private: bool mInputFocused; bool mMouseFocused; float mGuiAlpha; + std::string mCaption; + bool mNewMessageFlag; FPSmanager mFpsManager; }; diff --git a/src/gui/widgets/chattab.cpp b/src/gui/widgets/chattab.cpp index 8d983921e..e35105692 100644 --- a/src/gui/widgets/chattab.cpp +++ b/src/gui/widgets/chattab.cpp @@ -319,6 +319,7 @@ void ChatTab::chatLog(std::string line, Own own, chatWindow->unHideWindow(); playNewMessageSound(); } + Client::newChatMessage(); } } } -- cgit v1.2.3-70-g09d2