Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
7ba2a371
Commit
7ba2a371
authored
Apr 30, 2003
by
Maxime Bellengé
Committed by
Alexandre Julliard
Apr 30, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Fix some indentation problems.
- Handle correctly the alignement of the checkboxes if the BS_TOP/BS_BOTTOM flags are set.
parent
812b4f46
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
57 additions
and
38 deletions
+57
-38
button.c
controls/button.c
+57
-38
No files found.
controls/button.c
View file @
7ba2a371
...
...
@@ -862,6 +862,12 @@ static void CB_Paint( HWND hwnd, HDC hDC, UINT action )
rbox
.
right
=
checkBoxWidth
;
}
/* Draw label */
client
=
rtext
;
dtFlags
=
BUTTON_CalcLabelRect
(
hwnd
,
hDC
,
&
rtext
);
rbox
.
top
=
rtext
.
top
;
rbox
.
bottom
=
rtext
.
bottom
;
/* Draw the check-box bitmap */
if
(
action
==
ODA_DRAWENTIRE
||
action
==
ODA_SELECT
)
{
...
...
@@ -871,29 +877,29 @@ static void CB_Paint( HWND hwnd, HDC hDC, UINT action )
if
(
TWEAK_WineLook
==
WIN31_LOOK
)
{
HDC
hMemDC
=
CreateCompatibleDC
(
hDC
);
int
x
=
0
,
y
=
0
;
delta
=
(
rbox
.
bottom
-
rbox
.
top
-
checkBoxHeight
)
/
2
;
/* Check in case the client area is smaller than the checkbox bitmap */
if
(
delta
<
0
)
delta
=
0
;
if
(
state
&
BUTTON_HIGHLIGHTED
)
x
+=
2
*
checkBoxWidth
;
if
(
state
&
(
BUTTON_CHECKED
|
BUTTON_3STATE
))
x
+=
checkBoxWidth
;
if
((
get_button_type
(
style
)
==
BS_RADIOBUTTON
)
||
(
get_button_type
(
style
)
==
BS_AUTORADIOBUTTON
))
y
+=
checkBoxHeight
;
else
if
(
state
&
BUTTON_3STATE
)
y
+=
2
*
checkBoxHeight
;
/* The bitmap for the radio button is not aligned with the
* left of the window, it is 1 pixel off. */
if
((
get_button_type
(
style
)
==
BS_RADIOBUTTON
)
||
(
get_button_type
(
style
)
==
BS_AUTORADIOBUTTON
))
rbox
.
left
+=
1
;
SelectObject
(
hMemDC
,
hbitmapCheckBoxes
);
BitBlt
(
hDC
,
rbox
.
left
,
rbox
.
top
+
delta
,
checkBoxWidth
,
checkBoxHeight
,
hMemDC
,
x
,
y
,
SRCCOPY
);
DeleteDC
(
hMemDC
);
HDC
hMemDC
=
CreateCompatibleDC
(
hDC
);
int
x
=
0
,
y
=
0
;
delta
=
(
rbox
.
bottom
-
rbox
.
top
-
checkBoxHeight
)
/
2
;
/* Check in case the client area is smaller than the checkbox bitmap */
if
(
delta
<
0
)
delta
=
0
;
if
(
state
&
BUTTON_HIGHLIGHTED
)
x
+=
2
*
checkBoxWidth
;
if
(
state
&
(
BUTTON_CHECKED
|
BUTTON_3STATE
))
x
+=
checkBoxWidth
;
if
((
get_button_type
(
style
)
==
BS_RADIOBUTTON
)
||
(
get_button_type
(
style
)
==
BS_AUTORADIOBUTTON
))
y
+=
checkBoxHeight
;
else
if
(
state
&
BUTTON_3STATE
)
y
+=
2
*
checkBoxHeight
;
/* The bitmap for the radio button is not aligned with the
* left of the window, it is 1 pixel off. */
if
((
get_button_type
(
style
)
==
BS_RADIOBUTTON
)
||
(
get_button_type
(
style
)
==
BS_AUTORADIOBUTTON
))
rbox
.
left
+=
1
;
SelectObject
(
hMemDC
,
hbitmapCheckBoxes
);
BitBlt
(
hDC
,
rbox
.
left
,
rbox
.
top
+
delta
,
checkBoxWidth
,
checkBoxHeight
,
hMemDC
,
x
,
y
,
SRCCOPY
);
DeleteDC
(
hMemDC
);
}
else
{
...
...
@@ -910,28 +916,41 @@ static void CB_Paint( HWND hwnd, HDC hDC, UINT action )
if
(
style
&
WS_DISABLED
)
flags
|=
DFCS_INACTIVE
;
/* rbox must have the correct height */
delta
=
rbox
.
bottom
-
rbox
.
top
-
checkBoxHeight
;
if
(
delta
>
0
)
{
int
ofs
=
(
abs
(
delta
)
/
2
);
rbox
.
bottom
-=
ofs
+
1
;
rbox
.
top
=
rbox
.
bottom
-
checkBoxHeight
;
}
else
if
(
delta
<
0
)
{
int
ofs
=
(
abs
(
delta
)
/
2
);
rbox
.
top
-=
ofs
+
1
;
delta
=
rbox
.
bottom
-
rbox
.
top
-
checkBoxHeight
;
if
(
style
&
BS_TOP
)
{
if
(
delta
>
0
)
{
rbox
.
bottom
=
rbox
.
top
+
checkBoxHeight
;
}
else
{
rbox
.
top
-=
-
delta
/
2
+
1
;
rbox
.
bottom
+=
rbox
.
top
+
checkBoxHeight
;
}
}
else
if
(
style
&
BS_BOTTOM
)
{
if
(
delta
>
0
)
{
rbox
.
top
=
rbox
.
bottom
-
checkBoxHeight
;
}
else
{
rbox
.
bottom
+=
-
delta
/
2
+
1
;
rbox
.
top
=
rbox
.
bottom
-=
checkBoxHeight
;
}
}
else
{
/* Default */
if
(
delta
>
0
)
{
int
ofs
=
(
delta
/
2
);
rbox
.
bottom
-=
ofs
+
1
;
rbox
.
top
=
rbox
.
bottom
-
checkBoxHeight
;
}
else
if
(
delta
<
0
)
{
int
ofs
=
(
-
delta
/
2
);
rbox
.
top
-=
ofs
+
1
;
rbox
.
bottom
=
rbox
.
top
+
checkBoxHeight
;
}
}
DrawFrameControl
(
hDC
,
&
rbox
,
DFC_BUTTON
,
flags
);
}
}
/* Draw label */
client
=
rtext
;
dtFlags
=
BUTTON_CalcLabelRect
(
hwnd
,
hDC
,
&
rtext
);
if
(
dtFlags
==
(
UINT
)
-
1L
)
/* Noting to draw */
return
;
hRgn
=
CreateRectRgn
(
client
.
left
,
client
.
top
,
client
.
right
,
client
.
bottom
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment