Tk Source Code

Check-in [0807e606]
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to [email protected]
or submit via the online form by Sep 9.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Ugh; misread the code. The highlight ring is drawn first and always on the real window. Because of backgroundless frames.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | tip-262
Files: files | file ages | folders
SHA3-256: 0807e6062bdea3685a6851adf60b670a2baca40ec6031b4d83daa0a656e33ba8
User & Date: dkf 2019-05-17 20:37:55
Context
2019-05-19
07:33
merge trunk check-in: f79e06d6 user: dkf tags: tip-262
2019-05-17
20:37
Ugh; misread the code. The highlight ring is drawn first and always on the real window. Because of backgroundless frames. check-in: 0807e606 user: dkf tags: tip-262
20:06
Add double buffering to frames and toplevels.

Theoretically only needed when drawing background with images, but simpler to do always. Incidentally fixes minor bug in labelframes with redrawing of focus rings, but nobody really used those on labelframes so it was never reported... check-in: 86db63ba user: dkf tags: tip-262

Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to generic/tkFrame.c.

  1667   1667   
  1668   1668   #ifndef TK_NO_DOUBLE_BUFFERING
  1669   1669       /*
  1670   1670        * Everything's been redisplayed; now copy the pixmap onto the screen and
  1671   1671        * free up the pixmap.
  1672   1672        */
  1673   1673   
  1674         -    XCopyArea(framePtr->display, pixmap, Tk_WindowId(tkwin), framePtr->copyGC,
  1675         -	    0, 0, (unsigned) Tk_Width(tkwin), (unsigned) Tk_Height(tkwin),
  1676         -	    0, 0);
         1674  +    XCopyArea(framePtr->display, pixmap, Tk_WindowId(tkwin),
         1675  +	    framePtr->copyGC, hlWidth, hlWidth,
         1676  +	    (unsigned) (Tk_Width(tkwin) - 2 * hlWidth),
         1677  +	    (unsigned) (Tk_Height(tkwin) - 2 * hlWidth),
         1678  +	    hlWidth, hlWidth);
  1677   1679       Tk_FreePixmap(framePtr->display, pixmap);
  1678   1680   #endif /* TK_NO_DOUBLE_BUFFERING */
  1679   1681   }
  1680   1682   
  1681   1683   /*
  1682   1684    *----------------------------------------------------------------------
  1683   1685    *