diff options
author | Wildemann Stefan <stefan.wildemann@corpuls.com> | 2019-01-29 15:11:06 +0100 |
---|---|---|
committer | Wildemann Stefan <stefan.wildemann@corpuls.com> | 2019-01-29 15:32:11 +0100 |
commit | 28f488ac3facea3103decfae79081697d4772870 (patch) | |
tree | 63d64f9d77f3385bfe2c22ca4e0ac881675e9d86 | |
parent | 02aa1898a263b901ebd85b33efda6e272df7aef5 (diff) | |
download | navit-28f488ac3facea3103decfae79081697d4772870.tar.gz |
Fix:graphics_qt5:Correctly disable single overlay.
Only disable "all" overlays, if root pane got disabled.
-rw-r--r-- | navit/graphics/qt5/QNavitQuick.cpp | 5 | ||||
-rw-r--r-- | navit/graphics/qt5/QNavitWidget.cpp | 274 | ||||
-rw-r--r-- | navit/graphics/qt5/graphics_qt5.cpp | 11 |
3 files changed, 145 insertions, 145 deletions
diff --git a/navit/graphics/qt5/QNavitQuick.cpp b/navit/graphics/qt5/QNavitQuick.cpp index 4884e6f27..dcd0d2aa5 100644 --- a/navit/graphics/qt5/QNavitQuick.cpp +++ b/navit/graphics/qt5/QNavitQuick.cpp @@ -90,7 +90,10 @@ void QNavitQuick::paint(QPainter* painter) { painter->drawPixmap(graphics_priv->scroll_x, graphics_priv->scroll_y, *graphics_priv->pixmap, boundingRect().x(), boundingRect().y(), boundingRect().width(), boundingRect().height()); - paintOverlays(painter, graphics_priv, &event); + /* disable on root pane disables ALL overlays (for drag of background) */ + if(!(graphics_priv->disable)) { + paintOverlays(painter, graphics_priv, &event); + } } void QNavitQuick::keyPressEvent(QKeyEvent* event) { diff --git a/navit/graphics/qt5/QNavitWidget.cpp b/navit/graphics/qt5/QNavitWidget.cpp index cebaed9a1..355187b49 100644 --- a/navit/graphics/qt5/QNavitWidget.cpp +++ b/navit/graphics/qt5/QNavitWidget.cpp @@ -88,7 +88,10 @@ void QNavitWidget::paintEvent(QPaintEvent* event) { painter.drawPixmap(event->rect().x(), event->rect().y(), *graphics_priv->pixmap, event->rect().x() - graphics_priv->scroll_x, event->rect().y() - graphics_priv->scroll_y, event->rect().width(), event->rect().height()); - paintOverlays(&painter, graphics_priv, event); + /* disable on root pane disables ALL overlays (for drag of background) */ + if(!(graphics_priv->disable)) { + paintOverlays(&painter, graphics_priv, event); + }; } void QNavitWidget::resizeEvent(QResizeEvent* event) { @@ -98,148 +101,149 @@ void QNavitWidget::resizeEvent(QResizeEvent* event) { delete graphics_priv->pixmap; graphics_priv->pixmap = NULL; } - if (graphics_priv->pixmap == NULL) { - graphics_priv->pixmap = new QPixmap(size()); - } - painter = new QPainter(graphics_priv->pixmap); - if (painter != NULL) { - QBrush brush; - painter->fillRect(0, 0, width(), height(), brush); - delete painter; - } - dbg(lvl_debug, "size %dx%d", width(), height()); - dbg(lvl_debug, "pixmap %p %dx%d", graphics_priv->pixmap, graphics_priv->pixmap->width(), - graphics_priv->pixmap->height()); - /* if the root window got resized, tell navit about it */ - if (graphics_priv->root) - resize_callback(graphics_priv, width(), height()); } - - void QNavitWidget::mouseEvent(int pressed, QMouseEvent* event) { - struct point p; - // dbg(lvl_debug,"enter"); - p.x = event->x(); - p.y = event->y(); - switch (event->button()) { - case Qt::LeftButton: - callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(1), - GINT_TO_POINTER(&p)); - break; - case Qt::MidButton: - callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(2), - GINT_TO_POINTER(&p)); - break; - case Qt::RightButton: - callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(3), - GINT_TO_POINTER(&p)); - break; - default: - break; - } + if (graphics_priv->pixmap == NULL) { + graphics_priv->pixmap = new QPixmap(size()); } - - void QNavitWidget::keyPressEvent(QKeyEvent* event) { - dbg(lvl_debug, "enter"); - char key[2]; - int keycode; - char* text = NULL; - - keycode = event->key(); - key[0] = '\0'; - key[1] = '\0'; - switch (keycode) { - case Qt::Key_Up: - key[0] = NAVIT_KEY_UP; - break; - case Qt::Key_Down: - key[0] = NAVIT_KEY_DOWN; - break; - case Qt::Key_Left: - key[0] = NAVIT_KEY_LEFT; - break; - case Qt::Key_Right: - key[0] = NAVIT_KEY_RIGHT; - break; - case Qt::Key_Backspace: - key[0] = NAVIT_KEY_BACKSPACE; - break; - case Qt::Key_Tab: - key[0] = NAVIT_KEY_TAB; - break; - case Qt::Key_Delete: - key[0] = NAVIT_KEY_DELETE; - break; - case Qt::Key_Escape: - key[0] = NAVIT_KEY_BACK; - break; - case Qt::Key_Return: - case Qt::Key_Enter: - key[0] = NAVIT_KEY_RETURN; - break; - case Qt::Key_ZoomIn: - key[0] = NAVIT_KEY_ZOOM_IN; - break; - case Qt::Key_ZoomOut: - key[0] = NAVIT_KEY_ZOOM_OUT; - break; - case Qt::Key_PageUp: - key[0] = NAVIT_KEY_PAGE_UP; - break; - case Qt::Key_PageDown: - key[0] = NAVIT_KEY_PAGE_DOWN; - break; - default: - QString str = event->text(); - if ((str != NULL) && (str.size() != 0)) { - text = str.toUtf8().data(); - } - } - if (text != NULL) - callback_list_call_attr_1(graphics_priv->callbacks, attr_keypress, (void*)text); - else if (key[0]) - callback_list_call_attr_1(graphics_priv->callbacks, attr_keypress, (void*)key); - else - dbg(lvl_debug, "keyval 0x%x", keycode); + painter = new QPainter(graphics_priv->pixmap); + if (painter != NULL) { + QBrush brush; + painter->fillRect(0, 0, width(), height(), brush); + delete painter; } + dbg(lvl_debug, "size %dx%d", width(), height()); + dbg(lvl_debug, "pixmap %p %dx%d", graphics_priv->pixmap, graphics_priv->pixmap->width(), + graphics_priv->pixmap->height()); + /* if the root window got resized, tell navit about it */ + if (graphics_priv->root) + resize_callback(graphics_priv, width(), height()); +} - void QNavitWidget::mousePressEvent(QMouseEvent* event) { - // dbg(lvl_debug,"enter"); - mouseEvent(1, event); +void QNavitWidget::mouseEvent(int pressed, QMouseEvent* event) { + struct point p; + // dbg(lvl_debug,"enter"); + p.x = event->x(); + p.y = event->y(); + switch (event->button()) { + case Qt::LeftButton: + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(1), + GINT_TO_POINTER(&p)); + break; + case Qt::MidButton: + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(2), + GINT_TO_POINTER(&p)); + break; + case Qt::RightButton: + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(3), + GINT_TO_POINTER(&p)); + break; + default: + break; } +} - void QNavitWidget::mouseReleaseEvent(QMouseEvent* event) { - // dbg(lvl_debug,"enter"); - mouseEvent(0, event); +void QNavitWidget::keyPressEvent(QKeyEvent* event) { + dbg(lvl_debug, "enter"); + char key[2]; + int keycode; + char* text = NULL; + + keycode = event->key(); + key[0] = '\0'; + key[1] = '\0'; + switch (keycode) { + case Qt::Key_Up: + key[0] = NAVIT_KEY_UP; + break; + case Qt::Key_Down: + key[0] = NAVIT_KEY_DOWN; + break; + case Qt::Key_Left: + key[0] = NAVIT_KEY_LEFT; + break; + case Qt::Key_Right: + key[0] = NAVIT_KEY_RIGHT; + break; + case Qt::Key_Backspace: + key[0] = NAVIT_KEY_BACKSPACE; + break; + case Qt::Key_Tab: + key[0] = NAVIT_KEY_TAB; + break; + case Qt::Key_Delete: + key[0] = NAVIT_KEY_DELETE; + break; + case Qt::Key_Escape: + key[0] = NAVIT_KEY_BACK; + break; + case Qt::Key_Return: + case Qt::Key_Enter: + key[0] = NAVIT_KEY_RETURN; + break; + case Qt::Key_ZoomIn: + key[0] = NAVIT_KEY_ZOOM_IN; + break; + case Qt::Key_ZoomOut: + key[0] = NAVIT_KEY_ZOOM_OUT; + break; + case Qt::Key_PageUp: + key[0] = NAVIT_KEY_PAGE_UP; + break; + case Qt::Key_PageDown: + key[0] = NAVIT_KEY_PAGE_DOWN; + break; + default: + QString str = event->text(); + if ((str != NULL) && (str.size() != 0)) { + text = str.toUtf8().data(); + } } + if (text != NULL) + callback_list_call_attr_1(graphics_priv->callbacks, attr_keypress, (void*)text); + else if (key[0]) + callback_list_call_attr_1(graphics_priv->callbacks, attr_keypress, (void*)key); + else + dbg(lvl_debug, "keyval 0x%x", keycode); +} - void QNavitWidget::mouseMoveEvent(QMouseEvent* event) { - struct point p; - // dbg(lvl_debug,"enter"); - p.x = event->x(); - p.y = event->y(); - callback_list_call_attr_1(graphics_priv->callbacks, attr_motion, (void*)&p); - } +void QNavitWidget::mousePressEvent(QMouseEvent* event) { + // dbg(lvl_debug,"enter"); + mouseEvent(1, event); +} - void QNavitWidget::wheelEvent(QWheelEvent* event) { - struct point p; - int button; - dbg(lvl_debug, "enter"); - p.x = event->x(); // xy-coordinates of the mouse pointer - p.y = event->y(); - - if (event->delta() > 0) // wheel movement away from the person - button = 4; - else if (event->delta() < 0) // wheel movement towards the person - button = 5; - else - button = -1; - - if (button != -1) { - callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(1), GINT_TO_POINTER(button), - GINT_TO_POINTER(&p)); - callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(0), GINT_TO_POINTER(button), - GINT_TO_POINTER(&p)); - } +void QNavitWidget::mouseReleaseEvent(QMouseEvent* event) { + // dbg(lvl_debug,"enter"); + mouseEvent(0, event); +} - event->accept(); +void QNavitWidget::mouseMoveEvent(QMouseEvent* event) { + struct point p; + // dbg(lvl_debug,"enter"); + p.x = event->x(); + p.y = event->y(); + callback_list_call_attr_1(graphics_priv->callbacks, attr_motion, (void*)&p); +} + +void QNavitWidget::wheelEvent(QWheelEvent* event) { + struct point p; + int button; + dbg(lvl_debug, "enter"); + p.x = event->x(); // xy-coordinates of the mouse pointer + p.y = event->y(); + + if (event->delta() > 0) // wheel movement away from the person + button = 4; + else if (event->delta() < 0) // wheel movement towards the person + button = 5; + else + button = -1; + + if (button != -1) { + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(1), GINT_TO_POINTER(button), + GINT_TO_POINTER(&p)); + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(0), GINT_TO_POINTER(button), + GINT_TO_POINTER(&p)); } + + event->accept(); +} diff --git a/navit/graphics/qt5/graphics_qt5.cpp b/navit/graphics/qt5/graphics_qt5.cpp index 6a17bd68e..502cd18e2 100644 --- a/navit/graphics/qt5/graphics_qt5.cpp +++ b/navit/graphics/qt5/graphics_qt5.cpp @@ -768,15 +768,8 @@ static void get_text_bbox(struct graphics_priv* gr, struct graphics_font_priv* f } static void overlay_disable(struct graphics_priv* gr, int disable) { - GHashTableIter iter; - struct graphics_priv *key, *value; - // dbg(lvl_debug,"enter gr=%p, %d", gr, disable); - - g_hash_table_iter_init(&iter, gr->overlays); - while (g_hash_table_iter_next(&iter, (void**)&key, (void**)&value)) { - /* disable or enable all overlays of this pane */ - value->disable = disable; - } + //dbg(lvl_error,"enter gr=%p, %d", gr, disable); + gr->disable = disable; } static void overlay_resize(struct graphics_priv* gr, struct point* p, int w, int h, int wraparound) { |