From e14f8daca43c69d638a37d7883d398bcc68d459c Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Tue, 13 Aug 2019 17:04:42 +0200 Subject: [PATCH] GuiSetBorder: Fix drawing glitch with trimmed lines --- src/frontends/qt/GuiSetBorder.cpp | 36 +++++++++++++++++++------------ src/frontends/qt/GuiSetBorder.h | 4 ++-- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/frontends/qt/GuiSetBorder.cpp b/src/frontends/qt/GuiSetBorder.cpp index 30e25743fb..6866dd2ecc 100644 --- a/src/frontends/qt/GuiSetBorder.cpp +++ b/src/frontends/qt/GuiSetBorder.cpp @@ -213,14 +213,18 @@ void GuiSetBorder::drawTop(BorderState draw) } -void GuiSetBorder::undrawWideTopLine() +void GuiSetBorder::undrawWideTopLine(bool const right) { - if (!top_drawn_wide_) + if (!top_drawn_wide_ && !right) return; // Overpaint previous lines white - drawLine(Qt::white, margin + corner_length + 2, margin + corner_length, - bwidth - margin - corner_length - 1, margin + corner_length); + if (right) + drawLine(Qt::white, margin + 2 * (corner_length + 2), margin + corner_length, + bwidth - margin - corner_length - 1, margin + corner_length); + else + drawLine(Qt::white, margin + corner_length + 2, margin + corner_length, + bwidth - margin - corner_length - 1, margin + corner_length); top_drawn_wide_ = false; } @@ -300,14 +304,18 @@ void GuiSetBorder::drawBottom(BorderState draw) } -void GuiSetBorder::undrawWideBottomLine() +void GuiSetBorder::undrawWideBottomLine(bool const right) { - if (!bottom_drawn_wide_) + if (!bottom_drawn_wide_ && !right) return; - //Overpaint previous lines white - drawLine(Qt::white, margin + corner_length + 2, bwidth - margin - corner_length + 1, - bwidth - margin - corner_length - 1, bwidth - margin - corner_length + 1); + // Overpaint previous lines white + if (right) + drawLine(Qt::white, margin + 2 * (corner_length + 2), bwidth - margin - corner_length + 1, + bwidth - margin - corner_length - 1, bwidth - margin - corner_length + 1); + else + drawLine(Qt::white, margin + corner_length + 2, bwidth - margin - corner_length + 1, + bwidth - margin - corner_length - 1, bwidth - margin - corner_length + 1); bottom_drawn_wide_ = false; } @@ -401,10 +409,10 @@ void GuiSetBorder::setTopLeftTrimEnabled(bool enabled) void GuiSetBorder::setTopRightTrimEnabled(bool enabled) { top_trim_right_.enabled = enabled; - undrawWideTopLine(); + undrawWideTopLine(enabled); drawTopRightTrim(top_trim_right_.set); drawTop(top_.set); - top_drawn_wide_ = !enabled;; + top_drawn_wide_ = !enabled; } @@ -414,17 +422,17 @@ void GuiSetBorder::setBottomLeftTrimEnabled(bool enabled) undrawWideBottomLine(); drawBottomLeftTrim(bottom_trim_left_.set); drawBottom(bottom_.set); - bottom_drawn_wide_ = !enabled;; + bottom_drawn_wide_ = !enabled; } void GuiSetBorder::setBottomRightTrimEnabled(bool enabled) { bottom_trim_right_.enabled = enabled; - undrawWideBottomLine(); + undrawWideBottomLine(enabled); drawBottomRightTrim(bottom_trim_right_.set); drawBottom(bottom_.set); - bottom_drawn_wide_ = !enabled;; + bottom_drawn_wide_ = !enabled; } diff --git a/src/frontends/qt/GuiSetBorder.h b/src/frontends/qt/GuiSetBorder.h index 1abfa9608e..bb73ccb155 100644 --- a/src/frontends/qt/GuiSetBorder.h +++ b/src/frontends/qt/GuiSetBorder.h @@ -108,9 +108,9 @@ private: void drawLeft(BorderState); void drawRight(BorderState); void drawTop(BorderState); - void undrawWideTopLine(); + void undrawWideTopLine(bool const right = false); void drawBottom(BorderState); - void undrawWideBottomLine(); + void undrawWideBottomLine(bool const right = false); void drawTopLeftTrim(BorderState); void drawTopRightTrim(BorderState); void drawBottomLeftTrim(BorderState); -- 2.39.2