summaryrefslogtreecommitdiffstats
path: root/generic/tkCanvas.c
diff options
context:
space:
mode:
authornijtmans <nijtmans>2010-01-18 21:20:09 (GMT)
committernijtmans <nijtmans>2010-01-18 21:20:09 (GMT)
commit4220aecdb70e91878d2057f846779b11f2262410 (patch)
tree88e6d61c5ac9518a90a4e3a815121131c24bd7a9 /generic/tkCanvas.c
parenta1eeb8682907f5b1764ba9c204645d112ab961e6 (diff)
downloadtk-4220aecdb70e91878d2057f846779b11f2262410.zip
tk-4220aecdb70e91878d2057f846779b11f2262410.tar.gz
tk-4220aecdb70e91878d2057f846779b11f2262410.tar.bz2
Apply patch [#2932808]: Canvas items
not updating on widget state change
Diffstat (limited to 'generic/tkCanvas.c')
-rw-r--r--generic/tkCanvas.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/generic/tkCanvas.c b/generic/tkCanvas.c
index ca48d87..eed2d5a 100644
--- a/generic/tkCanvas.c
+++ b/generic/tkCanvas.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCanvas.c,v 1.46.2.2 2008/10/11 06:55:03 dkf Exp $
+ * RCS: @(#) $Id: tkCanvas.c,v 1.46.2.3 2010/01/18 21:20:09 nijtmans Exp $
*/
/* #define USE_OLD_TAG_SEARCH 1 */
@@ -1886,6 +1886,7 @@ ConfigureCanvas(
{
XGCValues gcValues;
GC newGC;
+ Tk_State old_canvas_state=canvasPtr->canvas_state;
if (Tk_ConfigureWidget(interp, canvasPtr->tkwin, configSpecs,
objc, (CONST char **) objv, (char *) canvasPtr,
@@ -1916,6 +1917,27 @@ ConfigureCanvas(
canvasPtr->pixmapGC = newGC;
/*
+ * Reconfigure items to reflect changed state disabled/normal.
+ */
+
+ if ( old_canvas_state != canvasPtr->canvas_state ) {
+ Tk_Item *itemPtr;
+ int result;
+
+ for ( itemPtr = canvasPtr->firstItemPtr; itemPtr != NULL;
+ itemPtr = itemPtr->nextPtr) {
+ if ( itemPtr->state == TK_STATE_NULL ) {
+ result = (*itemPtr->typePtr->configProc)(canvasPtr->interp,
+ (Tk_Canvas) canvasPtr, itemPtr, 0, NULL,
+ TK_CONFIG_ARGV_ONLY);
+ if (result != TCL_OK) {
+ Tcl_ResetResult(canvasPtr->interp);
+ }
+ }
+ }
+ }
+
+ /*
* Reset the desired dimensions for the window.
*/