X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2FguiChatConsole.cpp;h=d8881dbd1a77304ab257a73ef7afe486338ca4a4;hb=e5b4748bb44a12fd09a92f7d36986b4bda86e6bf;hp=0101b99bb136b131c16029ea4ceae033830a0544;hpb=037b2591971d752e67fa7d47095b996b3f56da5a;p=oweals%2Fminetest.git diff --git a/src/guiChatConsole.cpp b/src/guiChatConsole.cpp index 0101b99bb..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 @@ -32,6 +32,10 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "gettext.h" +#if USE_FREETYPE +#include "xCGUITTFont.h" +#endif + inline u32 clamp_u8(s32 value) { return (u32) MYMIN(MYMAX(value, 0), 255); @@ -90,8 +94,18 @@ GUIChatConsole::GUIChatConsole( // load the font // FIXME should a custom texture_path be searched too? - std::string font_name = "fontdejavusansmono.png"; - m_font = env->getFont(getTexturePath(font_name).c_str()); + std::string font_name = g_settings->get("mono_font_path"); + #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 + m_font = env->getFont(font_name.c_str()); + #endif if (m_font == NULL) { dstream << "Unable to load font: " << font_name << std::endl; @@ -111,6 +125,10 @@ GUIChatConsole::GUIChatConsole( GUIChatConsole::~GUIChatConsole() { +#if USE_FREETYPE + if (m_use_freetype) + m_font->drop(); +#endif } void GUIChatConsole::openConsole(f32 height) @@ -121,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; @@ -525,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; } }