Author: mir3x Date: Tue Aug 16 17:31:27 2016 New Revision: 33623 URL: http://svn.gna.org/viewcvs/freeciv?rev=33623&view=rev Log: Qt client - fixed version message not shown at Qt-client Reported by Marko Lindqvist <cazfi> Patch by Louis Moureaux <louis94>
See bug #24935 Modified: trunk/client/gui-qt/chatline.cpp trunk/client/gui-qt/chatline.h trunk/client/gui-qt/fc_client.cpp trunk/client/gui-qt/fc_client.h trunk/client/gui-qt/pages.cpp Modified: trunk/client/gui-qt/chatline.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/chatline.cpp?rev=33623&r1=33622&r2=33623&view=diff ============================================================================== --- trunk/client/gui-qt/chatline.cpp (original) +++ trunk/client/gui-qt/chatline.cpp Tue Aug 16 17:31:27 2016 @@ -16,6 +16,7 @@ #endif //Qt +#include <QApplication> #include <QScrollBar> #include <QStyleFactory> @@ -33,6 +34,7 @@ // gui-qt #include "colors.h" #include "fc_client.h" +#include "gui_main.h" #include "qtg_cxxside.h" #include "chatline.h" @@ -556,12 +558,17 @@ } /************************************************************************** + Version message event constructor. +**************************************************************************/ +version_message_event::version_message_event(const QString &message) : + QEvent(QEvent::User), + message(message) +{} + +/************************************************************************** Got version message from metaserver thread. **************************************************************************/ void qtg_version_message(const char *vertext) { - /* FIXME - this will crash at some point - event will come - * later with non existent pointer - output_window_append(ftc_client, vertext); - */ -} + current_app()->postEvent(gui(), new version_message_event(vertext)); +} Modified: trunk/client/gui-qt/chatline.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/chatline.h?rev=33623&r1=33622&r2=33623&view=diff ============================================================================== --- trunk/client/gui-qt/chatline.h (original) +++ trunk/client/gui-qt/chatline.h Tue Aug 16 17:31:27 2016 @@ -23,6 +23,7 @@ } //Qt +#include <QEvent> #include <QTextBrowser> #include <QLineEdit> #include <QCheckBox> @@ -62,4 +63,12 @@ }; +class version_message_event : public QEvent +{ + QString message; +public: + explicit version_message_event(const QString &message); + QString get_message() const { return message; } +}; + #endif /* FC__CHATLINE_H */ Modified: trunk/client/gui-qt/fc_client.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/fc_client.cpp?rev=33623&r1=33622&r2=33623&view=diff ============================================================================== --- trunk/client/gui-qt/fc_client.cpp (original) +++ trunk/client/gui-qt/fc_client.cpp Tue Aug 16 17:31:27 2016 @@ -364,6 +364,21 @@ /**************************************************************************** Event handler ****************************************************************************/ +bool fc_client::event(QEvent *event) +{ + if (event->type() == QEvent::User) { + version_message_event vmevt = + dynamic_cast<version_message_event&>(*event); + set_status_bar(vmevt.get_message()); + return true; + } else { + return QMainWindow::event(event); + } +} + +/**************************************************************************** + Event filter +****************************************************************************/ bool fc_client::eventFilter(QObject *obj, QEvent *event) { if (obj == chat_line) { Modified: trunk/client/gui-qt/fc_client.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/fc_client.h?rev=33623&r1=33622&r2=33623&view=diff ============================================================================== --- trunk/client/gui-qt/fc_client.h (original) +++ trunk/client/gui-qt/fc_client.h Tue Aug 16 17:31:27 2016 @@ -212,6 +212,7 @@ unit_label *unitinfo_wdg; void add_server_source(int); void remove_server_source(); + bool event(QEvent *event); enum client_pages current_page(); Modified: trunk/client/gui-qt/pages.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/pages.cpp?rev=33623&r1=33622&r2=33623&view=diff ============================================================================== --- trunk/client/gui-qt/pages.cpp (original) +++ trunk/client/gui-qt/pages.cpp Tue Aug 16 17:31:27 2016 @@ -876,21 +876,11 @@ **************************************************************************/ void server_scan_error(struct server_scan *scan, const char *message) { - output_window_append(ftc_client, message); + qtg_version_message(message); log_error("%s", message); - switch (server_scan_get_type(scan)) { - case SERVER_SCAN_LOCAL: - server_scan_finish(lan_scan); - lan_scan = NULL; - break; - case SERVER_SCAN_GLOBAL: - server_scan_finish(meta_scan); - meta_scan = NULL; - break; - case SERVER_SCAN_LAST: - break; - } + /* Main thread will finalize the scan later (or even concurrently) - + * do not do anything here to cause double free or raze condition. */ } _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits