X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2FguiChatConsole.cpp;h=d8881dbd1a77304ab257a73ef7afe486338ca4a4;hb=62ea342ad1b725ac44a787c60388cbc8a1c383c5;hp=13883901e2cd69fb2e103eab245babc2978ee0f4;hpb=30b9a4d6b479ecfcb84d4803f5d15ee9b6c7edd6;p=dragonfireclient.git diff --git a/src/guiChatConsole.cpp b/src/guiChatConsole.cpp index 13883901e..d8881dbd1 100644 --- a/src/guiChatConsole.cpp +++ b/src/guiChatConsole.cpp @@ -1,6 +1,6 @@ /* -Minetest-c55 -Copyright (C) 2011 celeron55, Perttu Ahola +Minetest +Copyright (C) 2013 celeron55, Perttu Ahola This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -94,13 +94,17 @@ GUIChatConsole::GUIChatConsole( // load the font // FIXME should a custom texture_path be searched too? - #if USE_FREETYPE std::string font_name = g_settings->get("mono_font_path"); - u16 font_size = g_settings->getU16("mono_font_size"); - m_font = gui::CGUITTFont::createTTFont(env, font_name.c_str(), font_size); + #if USE_FREETYPE + m_use_freetype = g_settings->getBool("freetype"); + if (m_use_freetype) { + u16 font_size = g_settings->getU16("mono_font_size"); + m_font = gui::CGUITTFont::createTTFont(env, font_name.c_str(), font_size); + } else { + m_font = env->getFont(font_name.c_str()); + } #else - std::string font_name = "fontdejavusansmono.png"; - m_font = env->getFont(getTexturePath(font_name).c_str()); + m_font = env->getFont(font_name.c_str()); #endif if (m_font == NULL) { @@ -121,6 +125,10 @@ GUIChatConsole::GUIChatConsole( GUIChatConsole::~GUIChatConsole() { +#if USE_FREETYPE + if (m_use_freetype) + m_font->drop(); +#endif } void GUIChatConsole::openConsole(f32 height) @@ -131,6 +139,11 @@ void GUIChatConsole::openConsole(f32 height) reformatConsole(); } +bool GUIChatConsole::isOpen() const +{ + return m_open; +} + bool GUIChatConsole::isOpenInhibited() const { return m_open_inhibited > 0; @@ -535,14 +548,20 @@ bool GUIChatConsole::OnEvent(const SEvent& event) { // Tab or Shift-Tab pressed // Nick completion - core::list names = m_client->getConnectedPlayerNames(); + std::list names = m_client->getConnectedPlayerNames(); bool backwards = event.KeyInput.Shift; m_chat_backend->getPrompt().nickCompletion(names, backwards); return true; } else if(event.KeyInput.Char != 0 && !event.KeyInput.Control) { - m_chat_backend->getPrompt().input(event.KeyInput.Char); + #if (defined(linux) || defined(__linux)) + wchar_t wc = L'_'; + mbtowc( &wc, (char *) &event.KeyInput.Char, sizeof(event.KeyInput.Char) ); + m_chat_backend->getPrompt().input(wc); + #else + m_chat_backend->getPrompt().input(event.KeyInput.Char); + #endif return true; } }