X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fconsole.cpp;h=37a034284212d1fdc3d53a4f12cf27628a4d59ea;hb=97b5fa7aa79f3e0d5c859a9adf0c1fac3b094937;hp=5c462405074cb35905d73cbf2e86232f0d831cda;hpb=0dbba8bc3f9431bece60e5630c1c4d6c8a0b33e2;p=xonotic%2Fnetradiant.git diff --git a/radiant/console.cpp b/radiant/console.cpp index 5c462405..37a03428 100644 --- a/radiant/console.cpp +++ b/radiant/console.cpp @@ -107,6 +107,7 @@ gboolean destroy_set_null(GtkWindow* widget, GtkWidget** p) return FALSE; } +WidgetFocusPrinter g_consoleWidgetFocusPrinter("console"); GtkWidget* Console_constructWindow(GtkWindow* toplevel) { @@ -128,6 +129,8 @@ GtkWidget* Console_constructWindow(GtkWindow* toplevel) widget_connect_escape_clear_focus_widget(g_console); + //g_consoleWidgetFocusPrinter.connect(g_console); + g_signal_connect(G_OBJECT(g_console), "populate-popup", G_CALLBACK(console_populate_popup), 0); g_signal_connect(G_OBJECT(g_console), "destroy", G_CALLBACK(destroy_set_null), &g_console); } @@ -155,7 +158,7 @@ public: std::size_t Sys_Print(int level, const char* buf, std::size_t length) { - bool contains_newline = strchr(buf, '\n') != 0; + bool contains_newline = std::find(buf, buf+length, '\n') != buf+length; if(level == SYS_ERR) { @@ -206,14 +209,17 @@ std::size_t Sys_Print(int level, const char* buf, std::size_t length) } - GtkTextBufferOutputStream textBuffer(buffer, &iter, tag); - if(!globalCharacterSet().isUTF8()) - { - textBuffer << ConvertLocaleToUTF8(StringRange(buf, buf + length)); - } - else { - textBuffer << StringRange(buf, buf + length); + GtkTextBufferOutputStream textBuffer(buffer, &iter, tag); + if(!globalCharacterSet().isUTF8()) + { + BufferedTextOutputStream buffered(textBuffer); + buffered << ConvertLocaleToUTF8(StringRange(buf, buf + length)); + } + else + { + textBuffer << StringRange(buf, buf + length); + } } // update console widget immediatly if we're doing something time-consuming