[2/2] comctl32/tab: Fix filled rectangle calculation for selected button on TCS_BUTTONS

Nikolay Sivov bunglehead at gmail.com
Mon Apr 6 16:30:07 CDT 2009


This makes selected button look like it should on TCS_BUTTONS:
- TCS_BOTTOM;
- TCS_BOTTOM | TCS_VERTICAL;
- TCS_VERTICAL.

One drawing bug still occurs on TCS_BOTTOM only:
most top (or most left) row (column) isn't invalidated properly - only a half rectanlge's
invalidated and repainted. After forced repaint it looks properly.
This's another bug, seems to be not related.

Changelog:
   - Fix filled rectangle calculation for selected button on TCS_BUTTONS

>From 0c4c8756ffde776089c06c48bc316b8c6da2273f Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <bunglehead at gmail.com>
Date: Mon, 6 Apr 2009 17:13:51 -0400
Subject: Fix filled rectangle calculation for selected button on TCS_BUTTONS

---
 dlls/comctl32/tab.c |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/dlls/comctl32/tab.c b/dlls/comctl32/tab.c
index 525d17b..4eebd15 100644
--- a/dlls/comctl32/tab.c
+++ b/dlls/comctl32/tab.c
@@ -1570,7 +1570,22 @@ TAB_DrawItemInterior(const TAB_INFO *infoPtr, HDC hdc, INT iItem, RECT *drawRect
 	drawRect->left   += 4;
 	drawRect->top    += 4;
 	drawRect->right  -= 4;
-	drawRect->bottom -= 1;
+
+	if (lStyle & TCS_VERTICAL)
+	{
+	  if (!(lStyle & TCS_BOTTOM)) drawRect->right  += 1;
+	  drawRect->bottom   -= 4;
+	}
+	else
+	{
+	  if (lStyle & TCS_BOTTOM)
+	  {
+	    drawRect->top    -= 2;
+	    drawRect->bottom -= 4;
+	  }
+	  else
+	    drawRect->bottom -= 1;
+	}
       }
       else
       {
-- 
1.5.6.5





More information about the wine-patches mailing list