From 37e0c7ece76d2fdc23a42f87f9112ec1423dd988 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sun, 15 Nov 2020 15:42:14 +0100 Subject: Make sure tooltips are always shown inside the window. --- plugingui/pixelbuffer.cc | 9 +++++---- plugingui/tooltip.cc | 4 ++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/plugingui/pixelbuffer.cc b/plugingui/pixelbuffer.cc index c73e663..3c666cd 100644 --- a/plugingui/pixelbuffer.cc +++ b/plugingui/pixelbuffer.cc @@ -30,6 +30,7 @@ #include #include +#include namespace GUI { @@ -85,10 +86,10 @@ Rect PixelBuffer::updateBuffer(std::vector& pixel_buffers) { if(pixel_buffer->dirty) { - auto x1 = (std::size_t)pixel_buffer->x; - auto x2 = (std::size_t)(pixel_buffer->x + pixel_buffer->width); - auto y1 = (std::size_t)pixel_buffer->y; - auto y2 = (std::size_t)(pixel_buffer->y + pixel_buffer->height); + auto x1 = (std::size_t)std::max(pixel_buffer->x, 0); + auto x2 = (std::size_t)std::max((pixel_buffer->x + (int)pixel_buffer->width), 0); + auto y1 = (std::size_t)std::max(pixel_buffer->y, 0); + auto y2 = (std::size_t)std::max((pixel_buffer->y + (int)pixel_buffer->height), 0); pixel_buffer->dirty = false; if(!has_dirty_rect) diff --git a/plugingui/tooltip.cc b/plugingui/tooltip.cc index 19bc89b..e251ed5 100644 --- a/plugingui/tooltip.cc +++ b/plugingui/tooltip.cc @@ -177,6 +177,10 @@ void Tooltip::show() y += activating_widget->height(); } + // Make sure the tip is displayed inside the window + x = std::max(x, 0); + y = std::max(y, 0); + move(x, y); Widget::show(); -- cgit v1.2.3