Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix bug [1001070]: make labels use -highlightbackground |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
6f75462ea6f1512847592ecdc35d08cc |
User & Date: | culler 2019-04-24 17:35:36.519 |
Context
2019-04-25
| ||
18:17 | Fix textWind.test: make sure that the test window is mapped before running tests (needed on macOS). check-in: 62d4693e user: culler tags: trunk | |
2019-04-24
| ||
17:35 | Fix bug [1001070]: make labels use -highlightbackground check-in: 6f75462e user: culler tags: trunk | |
17:35 | Fix bug [1001070]: make labels use -highlightbackground check-in: 6a50c7c3 user: culler tags: core-8-6-branch | |
17:11 | Fix [9286526144]: adjust position of ttk::menubutton menus and streamline code. check-in: 6e59b2bb user: culler tags: trunk | |
Changes
Changes to macosx/tkMacOSXButton.c.
︙ | ︙ | |||
66 67 68 69 70 71 72 | Tcl_TimerToken defaultPulseHandler; } MacButton; /* * Forward declarations for procedures defined later in this file: */ | | | | | | | | | | | | | | | | | | | 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | Tcl_TimerToken defaultPulseHandler; } MacButton; /* * Forward declarations for procedures defined later in this file: */ static void ButtonBackgroundDrawCB(const HIRect *btnbounds, MacButton *ptr, SInt16 depth, Boolean isColorDev); static void ButtonContentDrawCB(const HIRect *bounds, ThemeButtonKind kind, const HIThemeButtonDrawInfo *info, MacButton *ptr, SInt16 depth, Boolean isColorDev); static void ButtonEventProc(ClientData clientData, XEvent *eventPtr); static void TkMacOSXComputeButtonParams(TkButton *butPtr, ThemeButtonKind *btnkind, HIThemeButtonDrawInfo *drawinfo); static int TkMacOSXComputeButtonDrawParams(TkButton *butPtr, DrawParams * dpPtr); static void TkMacOSXDrawButton(MacButton *butPtr, GC gc, Pixmap pixmap); static void DrawButtonImageAndText(TkButton *butPtr); static void PulseDefaultButtonProc(ClientData clientData); /* * The class procedure table for the button widgets. */ const Tk_ClassProcs tkpButtonProcs = { sizeof(Tk_ClassProcs), /* size */ |
︙ | ︙ | |||
190 191 192 193 194 195 196 197 198 199 200 201 202 203 | return; } butPtr->flags &= ~REDRAW_PENDING; if ((butPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { return; } pixmap = (Pixmap) Tk_WindowId(tkwin); TkMacOSXSetUpClippingRgn(Tk_WindowId(tkwin)); if (TkMacOSXComputeButtonDrawParams(butPtr, dpPtr)) { macButtonPtr->useTkText = 0; } else { macButtonPtr->useTkText = 1; } | > > > > > > < < < < < < | 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 | return; } butPtr->flags &= ~REDRAW_PENDING; if ((butPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { return; } pixmap = (Pixmap) Tk_WindowId(tkwin); /* * Set up clipping region. Make sure the we are using the port * for this button, or we will set the wrong window's clip. */ TkMacOSXSetUpClippingRgn(Tk_WindowId(tkwin)); if (TkMacOSXComputeButtonDrawParams(butPtr, dpPtr)) { macButtonPtr->useTkText = 0; } else { macButtonPtr->useTkText = 1; } if (macButtonPtr->useTkText) { if (butPtr->type == TYPE_BUTTON) { Tk_Fill3DRectangle(tkwin, pixmap, butPtr->highlightBorder, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), 0, TK_RELIEF_FLAT); } else { Tk_Fill3DRectangle(tkwin, pixmap, butPtr->normalBorder, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), 0, TK_RELIEF_FLAT); |
︙ | ︙ | |||
235 236 237 238 239 240 241 | if (butPtr->highlightWidth < 3) { needhighlight = 1; } } /* | | | > > > | < > > > | > | 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 | if (butPtr->highlightWidth < 3) { needhighlight = 1; } } /* * Draw highlight border, if needed. */ if (needhighlight) { GC gc = NULL; if ((butPtr->flags & GOT_FOCUS) && butPtr->highlightColorPtr) { gc = Tk_GCForColor(butPtr->highlightColorPtr, pixmap); } else if (butPtr->type == TYPE_LABEL) { gc = Tk_GCForColor(Tk_3DBorderColor(butPtr->highlightBorder), pixmap); } if (gc) { TkMacOSXDrawSolidBorder(tkwin, gc, 0, butPtr->highlightWidth); } } } /* *---------------------------------------------------------------------- * * TkpComputeButtonGeometry -- |
︙ | ︙ |
Changes to macosx/tkMacOSXDraw.c.
︙ | ︙ | |||
1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 | rectPtr->width, rectPtr->height); CGContextFillRect(dc.context, rect); } } TkMacOSXRestoreDrawingContext(&dc); return Success; } /* *---------------------------------------------------------------------- * * XDrawArc -- * * Draw an arc. | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 | rectPtr->width, rectPtr->height); CGContextFillRect(dc.context, rect); } } TkMacOSXRestoreDrawingContext(&dc); return Success; } /* *---------------------------------------------------------------------- * * TkMacOSXDrawSolidBorder -- * * Draws a border rectangle of specified thickness inside the bounding * rectangle of a Tk Window. The border rectangle can be inset within the * bounding rectangle. For a highlight border the inset should be 0, but * for a solid border around the actual window the inset should equal the * thickness of the highlight border. The color of the border rectangle * is the foreground color of the graphics context passed to the function. * * Results: * None. * * Side effects: * Draws a rectangular border inside the bounding rectangle of a window. * *---------------------------------------------------------------------- */ MODULE_SCOPE void TkMacOSXDrawSolidBorder( Tk_Window tkwin, GC gc, int inset, int thickness) { Drawable d = Tk_WindowId(tkwin); TkMacOSXDrawingContext dc; CGRect outerRect, innerRect; if (!TkMacOSXSetupDrawingContext(d, gc, 1, &dc)) { return; } if (dc.context) { outerRect = CGRectMake(Tk_X(tkwin), Tk_Y(tkwin), Tk_Width(tkwin), Tk_Height(tkwin)); outerRect = CGRectInset(outerRect, inset, inset); innerRect = CGRectInset(outerRect, thickness, thickness); CGContextBeginPath(dc.context); CGContextAddRect(dc.context, outerRect); CGContextAddRect(dc.context, innerRect); CGContextEOFillPath(dc.context); } TkMacOSXRestoreDrawingContext(&dc); } /* *---------------------------------------------------------------------- * * XDrawArc -- * * Draw an arc. |
︙ | ︙ |
Changes to macosx/tkMacOSXMenubutton.c.
︙ | ︙ | |||
191 192 193 194 195 196 197 | TkMacOSXDrawMenuButton(mbPtr, dpPtr->gc, pixmap); /* * Draw highlight border, if needed. */ | | | | | > | 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 | TkMacOSXDrawMenuButton(mbPtr, dpPtr->gc, pixmap); /* * Draw highlight border, if needed. */ if (butPtr->highlightWidth < 3) { if (butPtr->flags & GOT_FOCUS) { GC gc = Tk_GCForColor(butPtr->highlightColorPtr, pixmap); TkMacOSXDrawSolidBorder(tkwin, gc, 0, butPtr->highlightWidth); } } } /* *---------------------------------------------------------------------- * * TkpDestroyMenuButton -- |
︙ | ︙ |
Changes to macosx/tkMacOSXPrivate.h.
︙ | ︙ | |||
229 230 231 232 233 234 235 236 237 238 239 240 241 242 | NSWindow *macWindow); MODULE_SCOPE int TkMacOSXStandardAboutPanelObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); MODULE_SCOPE int TkMacOSXIconBitmapObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); #pragma mark Private Objective-C Classes #define VISIBILITY_HIDDEN __attribute__((visibility("hidden"))) enum { tkMainMenu = 1, tkApplicationMenu, tkWindowsMenu, tkHelpMenu}; | > > | 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 | NSWindow *macWindow); MODULE_SCOPE int TkMacOSXStandardAboutPanelObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); MODULE_SCOPE int TkMacOSXIconBitmapObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); MODULE_SCOPE void TkMacOSXDrawSolidBorder(Tk_Window tkwin, GC gc, int inset, int thickness); #pragma mark Private Objective-C Classes #define VISIBILITY_HIDDEN __attribute__((visibility("hidden"))) enum { tkMainMenu = 1, tkApplicationMenu, tkWindowsMenu, tkHelpMenu}; |
︙ | ︙ |
Changes to win/tkWinButton.c.
︙ | ︙ | |||
401 402 403 404 405 406 407 | } } /* * Compute width of default ring and offset for pushed buttons. */ | | > > > | 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 | } } /* * Compute width of default ring and offset for pushed buttons. */ if (butPtr->type == TYPE_LABEL) { defaultWidth = butPtr->highlightWidth; offset = 0; } else if (butPtr->type == TYPE_BUTTON) { defaultWidth = ((butPtr->defaultState == DEFAULT_ACTIVE) ? butPtr->highlightWidth : 0); offset = 1; } else { defaultWidth = 0; if ((butPtr->type >= TYPE_CHECK_BUTTON) && !butPtr->indicatorOn) { offset = 1; |
︙ | ︙ | |||
755 756 757 758 759 760 761 762 763 | Tk_Draw3DRectangle(tkwin, pixmap, border, defaultWidth, defaultWidth, Tk_Width(tkwin) - 2*defaultWidth, Tk_Height(tkwin) - 2*defaultWidth, butPtr->borderWidth, relief); } if (defaultWidth != 0) { dc = TkWinGetDrawableDC(butPtr->display, pixmap, &state); TkWinFillRect(dc, 0, 0, Tk_Width(tkwin), defaultWidth, | > > > > > > > | | | | | 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 | Tk_Draw3DRectangle(tkwin, pixmap, border, defaultWidth, defaultWidth, Tk_Width(tkwin) - 2*defaultWidth, Tk_Height(tkwin) - 2*defaultWidth, butPtr->borderWidth, relief); } if (defaultWidth != 0) { int highlightColor; dc = TkWinGetDrawableDC(butPtr->display, pixmap, &state); if (butPtr->type == TYPE_LABEL) { highlightColor = (int) Tk_3DBorderColor(butPtr->highlightBorder)->pixel; } else { highlightColor = (int) butPtr->highlightColorPtr->pixel; } TkWinFillRect(dc, 0, 0, Tk_Width(tkwin), defaultWidth, highlightColor); TkWinFillRect(dc, 0, 0, defaultWidth, Tk_Height(tkwin), highlightColor); TkWinFillRect(dc, 0, Tk_Height(tkwin) - defaultWidth, Tk_Width(tkwin), defaultWidth, highlightColor); TkWinFillRect(dc, Tk_Width(tkwin) - defaultWidth, 0, defaultWidth, Tk_Height(tkwin), highlightColor); TkWinReleaseDrawableDC(pixmap, dc, &state); } if (butPtr->flags & GOT_FOCUS) { Tk_SetCaretPos(tkwin, x, y, 0 /* not used */); } |
︙ | ︙ |