From 96638a4254ff1b1d78a0c20058ada8e5e1fc4f70 Mon Sep 17 00:00:00 2001 From: Stefan Wildemann Date: Sat, 28 Jan 2017 16:49:38 +0100 Subject: Fix: Qt5: only update navit geometry if root window changed size. --- navit/graphics/qt5/QNavitWidget.cpp | 4 +++- navit/graphics/qt5/graphics_qt5.cpp | 12 ++++-------- navit/graphics/qt5/graphics_qt5.h | 1 + 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/navit/graphics/qt5/QNavitWidget.cpp b/navit/graphics/qt5/QNavitWidget.cpp index ea21de17f..fe3a618e2 100644 --- a/navit/graphics/qt5/QNavitWidget.cpp +++ b/navit/graphics/qt5/QNavitWidget.cpp @@ -87,7 +87,9 @@ void QNavitWidget::resizeEvent(QResizeEvent * event) delete painter; dbg(lvl_debug,"size %dx%d\n", width(), height()); dbg(lvl_debug,"pixmap %p %dx%d\n", graphics_priv->pixmap, graphics_priv->pixmap->width(), graphics_priv->pixmap->height()); - resize_callback(width(),height()); + /* if the root window got resized, tell navit about it */ + if(graphics_priv->root) + resize_callback(width(),height()); } void QNavitWidget::mouseEvent(int pressed, QMouseEvent *event) diff --git a/navit/graphics/qt5/graphics_qt5.cpp b/navit/graphics/qt5/graphics_qt5.cpp index db087af74..81fec32c2 100644 --- a/navit/graphics/qt5/graphics_qt5.cpp +++ b/navit/graphics/qt5/graphics_qt5.cpp @@ -91,7 +91,7 @@ graphics_destroy(struct graphics_priv *gr) /* destroy overlays hash */ g_hash_table_destroy(gr->overlays); /* destroy global application if destroying the last */ - if(gr->argc > 0) + if(gr->root) { if(navit_app != NULL) { @@ -719,7 +719,8 @@ overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct poin graphics_priv->use_count = 0; graphics_priv->parent = gr; graphics_priv->overlays=g_hash_table_new(NULL, NULL); - graphics_priv->argc=0; + graphics_priv->root = false; + graphics_priv->argc = 0; graphics_priv->argv[0] = NULL; /* register on parent */ g_hash_table_insert(gr->overlays, graphics_priv, graphics_priv); @@ -766,6 +767,7 @@ graphics_qt5_new(struct navit *nav, struct graphics_methods *meth, struct attr * /* create root graphics layer */ graphics_priv = g_new0(struct graphics_priv, 1); /* Prepare argc and argv to call Qt application*/ + graphics_priv->root = true; graphics_priv->argc = 0; graphics_priv->argv[graphics_priv->argc] = g_strdup("navit"); graphics_priv->argc ++; @@ -821,12 +823,6 @@ graphics_qt5_new(struct navit *nav, struct graphics_methods *meth, struct attr * /* tell Navit our geometry */ resize_callback(graphics_priv->widget->width(),graphics_priv->widget->height()); - /* Workaround: Qt doesnt seem to get geometry right if there is no resize event. - * queue one. */ - QSize newSize(graphics_priv->widget->width(),graphics_priv->widget->height()); - QResizeEvent *myResizeEvent = new QResizeEvent(newSize,newSize); - QCoreApplication::postEvent(graphics_priv->widget,myResizeEvent); - /* show our window */ graphics_priv->widget->show(); return graphics_priv; diff --git a/navit/graphics/qt5/graphics_qt5.h b/navit/graphics/qt5/graphics_qt5.h index 1f27ddfa0..2f19390c4 100644 --- a/navit/graphics/qt5/graphics_qt5.h +++ b/navit/graphics/qt5/graphics_qt5.h @@ -40,6 +40,7 @@ struct graphics_priv { #endif GHashTable *overlays; struct graphics_priv * parent; + bool root; int argc; char * argv[4]; }; -- cgit v1.2.1