Author: mir3x
Date: Tue Aug 16 17:27:53 2016
New Revision: 33620

URL: http://svn.gna.org/viewcvs/freeciv?rev=33620&view=rev
Log:
Qt client - fixed version message not shown at Qt-client
Reported by Marko Lindqvist <cazfi>
Patch by Louis Moureaux <louis94>

See patch #24935


Modified:
    branches/S2_5/client/gui-qt/chatline.cpp
    branches/S2_5/client/gui-qt/chatline.h
    branches/S2_5/client/gui-qt/fc_client.cpp
    branches/S2_5/client/gui-qt/fc_client.h
    branches/S2_5/client/gui-qt/gui_main.cpp
    branches/S2_5/client/gui-qt/gui_main.h
    branches/S2_5/client/gui-qt/pages.cpp

Modified: branches/S2_5/client/gui-qt/chatline.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-qt/chatline.cpp?rev=33620&r1=33619&r2=33620&view=diff
==============================================================================
--- branches/S2_5/client/gui-qt/chatline.cpp    (original)
+++ branches/S2_5/client/gui-qt/chatline.cpp    Tue Aug 16 17:27:53 2016
@@ -16,6 +16,7 @@
 #endif
 
 //Qt
+#include <QApplication>
 #include <QScrollBar>
 #include <QStyleFactory>
 
@@ -32,6 +33,7 @@
 // gui-qt
 #include "colors.h"
 #include "fc_client.h"
+#include "gui_main.h"
 #include "qtg_cxxside.h"
 
 #include "chatline.h"
@@ -515,12 +517,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(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: branches/S2_5/client/gui-qt/chatline.h
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-qt/chatline.h?rev=33620&r1=33619&r2=33620&view=diff
==============================================================================
--- branches/S2_5/client/gui-qt/chatline.h      (original)
+++ branches/S2_5/client/gui-qt/chatline.h      Tue Aug 16 17:27:53 2016
@@ -23,6 +23,7 @@
 }
 
 //Qt
+#include <QEvent>
 #include <QTextBrowser>
 #include <QLineEdit>
 #include <QCheckBox>
@@ -60,4 +61,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: branches/S2_5/client/gui-qt/fc_client.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-qt/fc_client.cpp?rev=33620&r1=33619&r2=33620&view=diff
==============================================================================
--- branches/S2_5/client/gui-qt/fc_client.cpp   (original)
+++ branches/S2_5/client/gui-qt/fc_client.cpp   Tue Aug 16 17:27:53 2016
@@ -365,6 +365,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: branches/S2_5/client/gui-qt/fc_client.h
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-qt/fc_client.h?rev=33620&r1=33619&r2=33620&view=diff
==============================================================================
--- branches/S2_5/client/gui-qt/fc_client.h     (original)
+++ branches/S2_5/client/gui-qt/fc_client.h     Tue Aug 16 17:27:53 2016
@@ -194,6 +194,7 @@
   unit_label *unitinfo_wdg;
   void add_server_source(int);
   void remove_server_source();
+  bool event(QEvent *event);
 
   enum client_pages current_page();
 

Modified: branches/S2_5/client/gui-qt/gui_main.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-qt/gui_main.cpp?rev=33620&r1=33619&r2=33620&view=diff
==============================================================================
--- branches/S2_5/client/gui-qt/gui_main.cpp    (original)
+++ branches/S2_5/client/gui-qt/gui_main.cpp    Tue Aug 16 17:27:53 2016
@@ -78,6 +78,14 @@
 class fc_client *gui()
 {
   return freeciv_qt;
+}
+
+/****************************************************************************
+  Return QApplication instance
+****************************************************************************/
+class QApplication *current_app()
+{
+  return qapp;
 }
 
 /****************************************************************************

Modified: branches/S2_5/client/gui-qt/gui_main.h
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-qt/gui_main.h?rev=33620&r1=33619&r2=33620&view=diff
==============================================================================
--- branches/S2_5/client/gui-qt/gui_main.h      (original)
+++ branches/S2_5/client/gui-qt/gui_main.h      Tue Aug 16 17:27:53 2016
@@ -14,6 +14,9 @@
 #ifndef FC__GUI_MAIN_H
 #define FC__GUI_MAIN_H
 
+class QApplication;
+
 void popup_quit_dialog();
+QApplication *current_app();
 
 #endif /* FC__GUI_MAIN_H */

Modified: branches/S2_5/client/gui-qt/pages.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-qt/pages.cpp?rev=33620&r1=33619&r2=33620&view=diff
==============================================================================
--- branches/S2_5/client/gui-qt/pages.cpp       (original)
+++ branches/S2_5/client/gui-qt/pages.cpp       Tue Aug 16 17:27:53 2016
@@ -815,21 +815,14 @@
 **************************************************************************/
 void server_scan_error(struct server_scan *scan, const char *message)
 {
-  output_window_append(ftc_client, message);
+  // version_message doesn't take a const char *, so we need to copy the
+  // message
+  QString copy = QString::fromUtf8(message);
+  qtg_version_message(copy.toUtf8().data());
   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

Reply via email to