diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2012-06-12 08:34:40 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2012-06-12 08:34:40 (GMT) |
commit | 314b8aca482e318b8a62ae829671b364631f681e (patch) | |
tree | a423d46e9f550b20ab44f59a5e28af4ced782956 /generic/ttk/ttkEntry.c | |
parent | 94bf2a20e147c3a37f07c2a51348e3a072c4c248 (diff) | |
parent | fde697af64aae8450b540fb7eeb4f0f19aa3f005 (diff) | |
download | tk-314b8aca482e318b8a62ae829671b364631f681e.zip tk-314b8aca482e318b8a62ae829671b364631f681e.tar.gz tk-314b8aca482e318b8a62ae829671b364631f681e.tar.bz2 |
Fix text clipping when working with the Xft-based renderer.
Diffstat (limited to 'generic/ttk/ttkEntry.c')
-rw-r--r-- | generic/ttk/ttkEntry.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/generic/ttk/ttkEntry.c b/generic/ttk/ttkEntry.c index 98c8079..6eccf51 100644 --- a/generic/ttk/ttkEntry.c +++ b/generic/ttk/ttkEntry.c @@ -1221,7 +1221,8 @@ static void EntryDisplay(void *clientData, Drawable d) } } - /* Initialize the clip region: + /* Initialize the clip region. Note that Xft does _not_ derive its + * clipping area from the GC, so we have to supply that by other means. */ rect.x = entryPtr->entry.layoutX; @@ -1230,6 +1231,9 @@ static void EntryDisplay(void *clientData, Drawable d) rect.height = entryPtr->entry.layoutHeight; clipRegion = TkCreateRegion(); TkUnionRectWithRegion(&rect, clipRegion, clipRegion); +#ifdef HAVE_XFT + TkUnixSetXftClipRegion(clipRegion); +#endif /* Draw cursor: */ @@ -1272,6 +1276,13 @@ static void EntryDisplay(void *clientData, Drawable d) selFirst, selLast); Tk_FreeGC(Tk_Display(tkwin), gc); } + + /* Drop the region. Note that we have to manually remove the reference to + * it from the Xft guts (if they're being used). + */ +#ifdef HAVE_XFT + TkUnixSetXftClipRegion(None); +#endif TkDestroyRegion(clipRegion); } |