Nikolay Sivov : comctl32/monthcal: Draw selected day as v6 does. Get rid of ugly selection curve.
Alexandre Julliard
julliard at winehq.org
Wed Sep 9 09:57:11 CDT 2009
Module: wine
Branch: master
Commit: cbe960f1e9f43229b79862ceb0807b862db5c662
URL: http://source.winehq.org/git/wine.git/?a=commit;h=cbe960f1e9f43229b79862ceb0807b862db5c662
Author: Nikolay Sivov <bunglehead at gmail.com>
Date: Tue Sep 8 11:55:22 2009 +0400
comctl32/monthcal: Draw selected day as v6 does. Get rid of ugly selection curve.
---
dlls/comctl32/monthcal.c | 60 +++++++++------------------------------------
1 files changed, 12 insertions(+), 48 deletions(-)
diff --git a/dlls/comctl32/monthcal.c b/dlls/comctl32/monthcal.c
index 05cac4e..2738795 100644
--- a/dlls/comctl32/monthcal.c
+++ b/dlls/comctl32/monthcal.c
@@ -271,62 +271,28 @@ static inline void MONTHCAL_CalcPosFromDay(const MONTHCAL_INFO *infoPtr,
/* month is the month value(1 == january, 12 == december) */
static void MONTHCAL_CircleDay(const MONTHCAL_INFO *infoPtr, HDC hdc, int day, int month)
{
- HPEN hRedPen = CreatePen(PS_SOLID, 2, RGB(255, 0, 0));
+ HPEN hRedPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
HPEN hOldPen2 = SelectObject(hdc, hRedPen);
- POINT points[13];
- int x, y;
+ HBRUSH hOldBrush;
RECT day_rect;
-
MONTHCAL_CalcPosFromDay(infoPtr, day, month, &day_rect);
- x = day_rect.left;
- y = day_rect.top;
-
- points[0].x = x;
- points[0].y = y - 1;
- points[1].x = x + 0.8 * infoPtr->width_increment;
- points[1].y = y - 1;
- points[2].x = x + 0.9 * infoPtr->width_increment;
- points[2].y = y;
- points[3].x = x + infoPtr->width_increment;
- points[3].y = y + 0.5 * infoPtr->height_increment;
-
- points[4].x = x + infoPtr->width_increment;
- points[4].y = y + 0.9 * infoPtr->height_increment;
- points[5].x = x + 0.6 * infoPtr->width_increment;
- points[5].y = y + 0.9 * infoPtr->height_increment;
- points[6].x = x + 0.5 * infoPtr->width_increment;
- points[6].y = y + 0.9 * infoPtr->height_increment; /* bring the bottom up just
- a hair to fit inside the day rectangle */
-
- points[7].x = x + 0.2 * infoPtr->width_increment;
- points[7].y = y + 0.8 * infoPtr->height_increment;
- points[8].x = x + 0.1 * infoPtr->width_increment;
- points[8].y = y + 0.8 * infoPtr->height_increment;
- points[9].x = x;
- points[9].y = y + 0.5 * infoPtr->height_increment;
-
- points[10].x = x + 0.1 * infoPtr->width_increment;
- points[10].y = y + 0.2 * infoPtr->height_increment;
- points[11].x = x + 0.2 * infoPtr->width_increment;
- points[11].y = y + 0.3 * infoPtr->height_increment;
- points[12].x = x + 0.4 * infoPtr->width_increment;
- points[12].y = y + 0.2 * infoPtr->height_increment;
-
- PolyBezier(hdc, points, 13);
+ hOldBrush = SelectObject(hdc, GetStockObject(NULL_BRUSH));
+ Rectangle(hdc, day_rect.left, day_rect.top, day_rect.right, day_rect.bottom);
+
+ SelectObject(hdc, hOldBrush);
DeleteObject(hRedPen);
SelectObject(hdc, hOldPen2);
}
-
static void MONTHCAL_DrawDay(const MONTHCAL_INFO *infoPtr, HDC hdc, int day, int month,
int x, int y, int bold)
{
static const WCHAR fmtW[] = { '%','d',0 };
WCHAR buf[10];
RECT r;
- static int haveBoldFont, haveSelectedDay = FALSE;
+ static BOOL haveBoldFont, haveSelectedDay = FALSE;
HBRUSH hbr;
COLORREF oldCol = 0;
COLORREF oldBk = 0;
@@ -341,16 +307,14 @@ static void MONTHCAL_DrawDay(const MONTHCAL_INFO *infoPtr, HDC hdc, int day, int
if((day>=infoPtr->minSel.wDay) && (day<=infoPtr->maxSel.wDay)
&& (month==infoPtr->currentMonth)) {
- HRGN hrgn;
RECT r2;
TRACE("%d %d %d\n",day, infoPtr->minSel.wDay, infoPtr->maxSel.wDay);
TRACE("%s\n", wine_dbgstr_rect(&r));
oldCol = SetTextColor(hdc, infoPtr->monthbk);
oldBk = SetBkColor(hdc, infoPtr->trailingtxt);
- hbr = GetSysColorBrush(COLOR_GRAYTEXT);
- hrgn = CreateEllipticRgn(r.left, r.top, r.right, r.bottom);
- FillRgn(hdc, hrgn, hbr);
+ hbr = GetSysColorBrush(COLOR_HIGHLIGHT);
+ FillRect(hdc, &r, hbr);
/* FIXME: this may need to be changed now b/c of the other
drawing changes 11/3/99 CMM */
@@ -375,14 +339,14 @@ static void MONTHCAL_DrawDay(const MONTHCAL_INFO *infoPtr, HDC hdc, int day, int
haveBoldFont = FALSE;
}
+ SetBkMode(hdc,TRANSPARENT);
+ DrawTextW(hdc, buf, -1, &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE );
+
if(haveSelectedDay) {
SetTextColor(hdc, oldCol);
SetBkColor(hdc, oldBk);
}
- SetBkMode(hdc,TRANSPARENT);
- DrawTextW(hdc, buf, -1, &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE );
-
/* draw a rectangle around the currently selected days text */
if((day==infoPtr->curSelDay) && (month==infoPtr->currentMonth))
DrawFocusRect(hdc, &r);
More information about the wine-cvs
mailing list