summaryrefslogtreecommitdiffstats
path: root/unix/tkUnixButton.c
diff options
context:
space:
mode:
authorcsaba <csaba>2023-01-25 18:18:59 (GMT)
committercsaba <csaba>2023-01-25 18:18:59 (GMT)
commitc41c244e7701ad4fb83800220a56e05b9bd5e645 (patch)
treefe7a4e854bb4cdc51bc3dffbce95f010c1d190d5 /unix/tkUnixButton.c
parent8a7ce63a273faaaf020589f3256486cdc5814beb (diff)
downloadtk-c41c244e7701ad4fb83800220a56e05b9bd5e645.zip
tk-c41c244e7701ad4fb83800220a56e05b9bd5e645.tar.gz
tk-c41c244e7701ad4fb83800220a56e05b9bd5e645.tar.bz2
Improvements related to the geometry of the checkbutton and radiobutton indicator images
Diffstat (limited to 'unix/tkUnixButton.c')
-rw-r--r--unix/tkUnixButton.c52
1 files changed, 17 insertions, 35 deletions
diff --git a/unix/tkUnixButton.c b/unix/tkUnixButton.c
index 64d11cb..0e1a3fb 100644
--- a/unix/tkUnixButton.c
+++ b/unix/tkUnixButton.c
@@ -328,7 +328,7 @@ TkpDrawCheckIndicator(
* Adjust the image's coordinates in the drawable and display the image
*/
- x -= dim/2; x -= 2;
+ x -= dim/2;
y -= dim/2;
Tk_RedrawImage(img, 0, 0, dim, dim, d, x, y);
Tk_FreeImage(img);
@@ -709,38 +709,24 @@ TkpDisplayButton(
* x and y refer to the top-left corner of the text or image or bitmap.
*/
- if ((butPtr->type == TYPE_CHECK_BUTTON) && butPtr->indicatorOn) {
- if (butPtr->indicatorDiameter > 2*butPtr->borderWidth) {
- TkBorder *selBorder = (TkBorder *) butPtr->selectBorder;
- XColor *selColor = NULL;
+ if ((butPtr->type == TYPE_CHECK_BUTTON || butPtr->type == TYPE_RADIO_BUTTON)
+ && butPtr->indicatorOn
+ && butPtr->indicatorDiameter > 2*butPtr->borderWidth) {
+ TkBorder *selBorder = (TkBorder *) butPtr->selectBorder;
+ XColor *selColor = NULL;
+ int btype = (butPtr->type == TYPE_CHECK_BUTTON ?
+ CHECK_BUTTON : RADIO_BUTTON);
- if (selBorder != NULL) {
- selColor = selBorder->bgColorPtr;
- }
- x -= butPtr->indicatorSpace/2;
- y = Tk_Height(tkwin)/2;
- TkpDrawCheckIndicator(tkwin, butPtr->display, pixmap, x, y,
- border, butPtr->normalFg, selColor, butPtr->disabledFg,
- ((butPtr->flags & SELECTED) ? 1 :
- (butPtr->flags & TRISTATED) ? 2 : 0),
- (butPtr->state == STATE_DISABLED), CHECK_BUTTON);
- }
- } else if ((butPtr->type == TYPE_RADIO_BUTTON) && butPtr->indicatorOn) {
- if (butPtr->indicatorDiameter > 2*butPtr->borderWidth) {
- TkBorder *selBorder = (TkBorder *) butPtr->selectBorder;
- XColor *selColor = NULL;
-
- if (selBorder != NULL) {
- selColor = selBorder->bgColorPtr;
- }
- x -= butPtr->indicatorSpace/2;
- y = Tk_Height(tkwin)/2;
- TkpDrawCheckIndicator(tkwin, butPtr->display, pixmap, x, y,
- border, butPtr->normalFg, selColor, butPtr->disabledFg,
- ((butPtr->flags & SELECTED) ? 1 :
- (butPtr->flags & TRISTATED) ? 2 : 0),
- (butPtr->state == STATE_DISABLED), RADIO_BUTTON);
+ if (selBorder != NULL) {
+ selColor = selBorder->bgColorPtr;
}
+ x -= butPtr->indicatorSpace/2;
+ y = Tk_Height(tkwin)/2;
+ TkpDrawCheckIndicator(tkwin, butPtr->display, pixmap, x, y,
+ border, butPtr->normalFg, selColor, butPtr->disabledFg,
+ ((butPtr->flags & SELECTED) ? 1 :
+ (butPtr->flags & TRISTATED) ? 2 : 0),
+ (butPtr->state == STATE_DISABLED), btype);
}
/*
@@ -1012,10 +998,6 @@ TkpComputeButtonGeometry(
}
if ((butPtr->type >= TYPE_CHECK_BUTTON) && butPtr->indicatorOn) {
butPtr->indicatorDiameter = fm.linespace;
- if (butPtr->type == TYPE_CHECK_BUTTON) {
- butPtr->indicatorDiameter =
- (80*butPtr->indicatorDiameter)/100;
- }
butPtr->indicatorSpace = butPtr->indicatorDiameter + avgWidth;
}
}