summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Wildemann <gta04@metalstrolche.de>2017-01-28 16:49:38 +0100
committerStefan Wildemann <gta04@metalstrolche.de>2017-02-23 19:40:26 +0100
commit96638a4254ff1b1d78a0c20058ada8e5e1fc4f70 (patch)
tree09f165691bfed20a1e31188acddbd7eb8712bd3e
parent4cbd82825832873c6d4f554e07b83df3d0f1c0ec (diff)
downloadnavit-96638a4254ff1b1d78a0c20058ada8e5e1fc4f70.tar.gz
Fix: Qt5: only update navit geometry if root window changed size.
-rw-r--r--navit/graphics/qt5/QNavitWidget.cpp4
-rw-r--r--navit/graphics/qt5/graphics_qt5.cpp12
-rw-r--r--navit/graphics/qt5/graphics_qt5.h1
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];
};