Posted to tcl by patthoyts at Sun Dec 07 19:07:20 GMT 2008view raw

  1. diff -u -r1.20 ttkWidget.c
  2. --- generic/ttk/ttkWidget.c 3 Dec 2008 18:44:50 -0000 1.20
  3. +++ generic/ttk/ttkWidget.c 7 Dec 2008 01:43:50 -0000
  4. @@ -483,16 +483,27 @@
  5. Tcl_Interp *interp, Ttk_Theme themePtr, void *recordPtr)
  6. {
  7. WidgetCore *corePtr = recordPtr;
  8. + Ttk_Layout layout;
  9. + Tcl_DString ds;
  10. const char *styleName = 0;
  11.  
  12. + Tcl_DStringInit(&ds);
  13. if (corePtr->styleObj)
  14. styleName = Tcl_GetString(corePtr->styleObj);
  15.  
  16. - if (!styleName || *styleName == '\0')
  17. + if (!styleName || *styleName == '\0') {
  18. styleName = corePtr->widgetSpec->className;
  19. + if (corePtr->state & TTK_STATE_READONLY) {
  20. + Tcl_DStringAppend(&ds, "Readonly.", -1);
  21. + Tcl_DStringAppend(&ds, styleName, -1);
  22. + styleName = Tcl_DStringValue(&ds);
  23. + }
  24. + }
  25.  
  26. - return Ttk_CreateLayout(interp, themePtr, styleName,
  27. + layout = Ttk_CreateLayout(interp, themePtr, styleName,
  28. recordPtr, corePtr->optionTable, corePtr->tkwin);
  29. + Tcl_DStringFree(&ds);
  30. + return layout;
  31. }
  32.  
  33. /*