From b3a4707290e96d73133b8a88d20f8832d11fe9c1 Mon Sep 17 00:00:00 2001 From: fvogel Date: Sat, 19 Feb 2022 13:33:59 +0000 Subject: Factorize code: let EmbWinStructureProc call EmbWinRequestProc instead of copying code of the latter in the former. --- generic/tkTextWind.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/generic/tkTextWind.c b/generic/tkTextWind.c index fdd5378..fb7cbdf 100644 --- a/generic/tkTextWind.c +++ b/generic/tkTextWind.c @@ -526,7 +526,6 @@ EmbWinStructureProc( { TkTextEmbWindowClient *client = (TkTextEmbWindowClient *)clientData; TkTextSegment *ewPtr = client->parent; - TkTextIndex index; Tcl_HashEntry *hPtr; if (eventPtr->type != DestroyNotify) { @@ -545,12 +544,7 @@ EmbWinStructureProc( ewPtr->body.ew.tkwin = NULL; client->tkwin = NULL; - index.tree = ewPtr->body.ew.sharedTextPtr->tree; - index.linePtr = ewPtr->body.ew.linePtr; - index.byteIndex = TkTextSegToOffset(ewPtr, ewPtr->body.ew.linePtr); - TkTextChanged(ewPtr->body.ew.sharedTextPtr, NULL, &index, &index); - TkTextInvalidateLineMetrics(ewPtr->body.ew.sharedTextPtr, NULL, - index.linePtr, 0, TK_TEXT_INVALIDATE_ONLY); + EmbWinRequestProc(client, NULL); } /* -- cgit v0.12 From cbead0eb6aa76d7d9a6eb19dc4dcb97e9026d26a Mon Sep 17 00:00:00 2001 From: fvogel Date: Sat, 19 Feb 2022 14:07:01 +0000 Subject: Add (currently crashing) test textWind-18.3 demonstrating [54fe7a5e71]. --- tests/textWind.test | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/textWind.test b/tests/textWind.test index e2cb87d..bf9ed41 100644 --- a/tests/textWind.test +++ b/tests/textWind.test @@ -1634,6 +1634,24 @@ test textWind-18.2 {text widget deletion triggered by a script bound to embedded destroy .t .f } -result {} +test textWind-18.3 {embedded window destruction in cascade} -setup { + catch {destroy .t .f} + set x 0 +} -body { + pack [text .t] + button .t.b1 + .t window create 1.0 -window .t.b1 + bind .t.b1 {destroy .t.b2 ; set x 1} + button .t.b2 + .t window create 2.0 -window .t.b2 + updateText + # this shall not crash (bug 54fe7a5e71) + after 100 {.t delete 1.0 end} + tkwait variable x +} -cleanup { + destroy .t .f +} -result {} + option clear # cleanup -- cgit v0.12 From 78f0a3abb0849c7182c54bcd789829b3c96661dc Mon Sep 17 00:00:00 2001 From: fvogel Date: Sat, 19 Feb 2022 14:09:23 +0000 Subject: Fix [54fe7a5e71]: crash with destroy and text widget embedded windows. Test textWind-18.3 now passes. --- generic/tkTextWind.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/generic/tkTextWind.c b/generic/tkTextWind.c index fb7cbdf..46f84b0 100644 --- a/generic/tkTextWind.c +++ b/generic/tkTextWind.c @@ -568,7 +568,7 @@ EmbWinStructureProc( static void EmbWinRequestProc( ClientData clientData, /* Pointer to record for window item. */ - TCL_UNUSED(Tk_Window)) /* Window that changed its desired size. */ + TCL_UNUSED(Tk_Window)) /* Window that changed its desired size. */ { TkTextEmbWindowClient *client = (TkTextEmbWindowClient *)clientData; TkTextSegment *ewPtr = client->parent; @@ -576,7 +576,15 @@ EmbWinRequestProc( index.tree = ewPtr->body.ew.sharedTextPtr->tree; index.linePtr = ewPtr->body.ew.linePtr; - index.byteIndex = TkTextSegToOffset(ewPtr, ewPtr->body.ew.linePtr); + + /* + * ewPtr->body.ew.tkwin == NULL means the embedded window is already + * destroyed. The ewPtr segment is no longer linked, TkTextSegToOffset + * cannot find it within the line pointed by ewPtr->body.ew.linePtr. + */ + + index.byteIndex = ewPtr->body.ew.tkwin ? + TkTextSegToOffset(ewPtr, ewPtr->body.ew.linePtr) : 0; TkTextChanged(ewPtr->body.ew.sharedTextPtr, NULL, &index, &index); TkTextInvalidateLineMetrics(ewPtr->body.ew.sharedTextPtr, NULL, index.linePtr, 0, TK_TEXT_INVALIDATE_ONLY); -- cgit v0.12 From 7230712afdb6e657da4f55a3f1d37dd0b03abb00 Mon Sep 17 00:00:00 2001 From: fvogel Date: Sat, 26 Feb 2022 20:46:39 +0000 Subject: Add new (and currently crashing) test canPs-5.1 demonstrating bug [424773a00c]. --- tests/canvPs.test | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/canvPs.test b/tests/canvPs.test index eb09af9..17ea695 100644 --- a/tests/canvPs.test +++ b/tests/canvPs.test @@ -184,6 +184,16 @@ test canvPs-4.1 {test ps generation with single-point uncolored poly, bug 734498 } -returnCodes ok -match glob -result * +test canvPs-5.1 {test ps generation with bitmap, bug 424773a00c} -body { + pack [canvas .c] +update + .c create bitmap 50 50 -bitmap questhead + .c postscript ; # crashes on macOS +} -cleanup { + destroy .c +} -returnCodes ok -match glob -result * + + # cleanup unset -nocomplain foo bar imageFinish -- cgit v0.12 From 6246011ca2757491fd7d492838e56a52ddb87645 Mon Sep 17 00:00:00 2001 From: fvogel Date: Sat, 26 Feb 2022 20:47:44 +0000 Subject: Fix [424773a00c]: NULL dereference in PostscriptBitmap(). Test canvPs-5.1 now passes. --- generic/tkCanvPs.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/generic/tkCanvPs.c b/generic/tkCanvPs.c index 1a8b3d3..fc3a772 100644 --- a/generic/tkCanvPs.c +++ b/generic/tkCanvPs.c @@ -904,6 +904,18 @@ PostscriptBitmap( imagePtr = XGetImage(Tk_Display(tkwin), bitmap, 0, 0, totalWidth, totalHeight, 1, XYPixmap); + + if (!imagePtr) { + /* + * The XGetImage() function is apparently not implemented on this + * system. Just skip the pixels, the Postscript will still be + * syntactically correct. + */ + + Tcl_AppendToObj(psObj, "<>", -1); + return; + } + Tcl_AppendToObj(psObj, "<", -1); mask = 0x80; value = 0; -- cgit v0.12 From 15b0e830aa074966acc77e1683ef7bec08e95f00 Mon Sep 17 00:00:00 2001 From: fvogel Date: Sat, 26 Feb 2022 20:48:30 +0000 Subject: Fix indentation. --- tests/canvPs.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/canvPs.test b/tests/canvPs.test index 17ea695..077d60e 100644 --- a/tests/canvPs.test +++ b/tests/canvPs.test @@ -186,7 +186,7 @@ test canvPs-4.1 {test ps generation with single-point uncolored poly, bug 734498 test canvPs-5.1 {test ps generation with bitmap, bug 424773a00c} -body { pack [canvas .c] -update + update .c create bitmap 50 50 -bitmap questhead .c postscript ; # crashes on macOS } -cleanup { -- cgit v0.12 From 817324dfa4eceb69357443194a094d6f660a41d8 Mon Sep 17 00:00:00 2001 From: fvogel Date: Sat, 26 Feb 2022 20:49:39 +0000 Subject: Change comment since the test now passes. --- tests/canvPs.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/canvPs.test b/tests/canvPs.test index 077d60e..709b20c 100644 --- a/tests/canvPs.test +++ b/tests/canvPs.test @@ -188,7 +188,7 @@ test canvPs-5.1 {test ps generation with bitmap, bug 424773a00c} -body { pack [canvas .c] update .c create bitmap 50 50 -bitmap questhead - .c postscript ; # crashes on macOS + .c postscript ; # was crashing on macOS } -cleanup { destroy .c } -returnCodes ok -match glob -result * -- cgit v0.12 From eaeff76126e421833b0c08fb77bbfec450f59e9a Mon Sep 17 00:00:00 2001 From: fvogel Date: Sun, 27 Feb 2022 08:54:54 +0000 Subject: Add test canPs-5.2 testing canvas postscript generation with an image. --- tests/canvPs.test | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/canvPs.test b/tests/canvPs.test index 709b20c..f2e3d3e 100644 --- a/tests/canvPs.test +++ b/tests/canvPs.test @@ -192,6 +192,14 @@ test canvPs-5.1 {test ps generation with bitmap, bug 424773a00c} -body { } -cleanup { destroy .c } -returnCodes ok -match glob -result * +test canvPs-5.2 {test ps generation with image} -body { + pack [canvas .c] + update + .c create bitmap 50 50 -image ::tk::icons::information + .c postscript +} -cleanup { + destroy .c +} -returnCodes ok -match glob -result * # cleanup -- cgit v0.12 From 14a9087a5af3747e3bea3b9236a139a7e23e30af Mon Sep 17 00:00:00 2001 From: fvogel Date: Mon, 28 Feb 2022 10:15:06 +0000 Subject: Fix error in test script. --- tests/canvPs.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/canvPs.test b/tests/canvPs.test index f2e3d3e..6e24661 100644 --- a/tests/canvPs.test +++ b/tests/canvPs.test @@ -195,7 +195,7 @@ test canvPs-5.1 {test ps generation with bitmap, bug 424773a00c} -body { test canvPs-5.2 {test ps generation with image} -body { pack [canvas .c] update - .c create bitmap 50 50 -image ::tk::icons::information + .c create image 50 50 -image ::tk::icons::information .c postscript } -cleanup { destroy .c -- cgit v0.12 From 2df03c765cf8b22cf3ed085b2f5c5ddaf7b60ab3 Mon Sep 17 00:00:00 2001 From: fvogel Date: Wed, 9 Mar 2022 21:36:33 +0000 Subject: Add test canvWind-2.1 demonstrating bug [5412c64a79] --- tests/canvWind.test | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/canvWind.test b/tests/canvWind.test index 436ee2c..9777427 100644 --- a/tests/canvWind.test +++ b/tests/canvWind.test @@ -139,6 +139,22 @@ test canvWind-1.4 {DisplayWinItem, windows off-screen horizontally} -setup { destroy .t } -result {{1 3} {1 -79} {0 -79} {1 255} {0 255}} +test canvWind-2.1 {DisplayWinItem, window gets destroyed duing } -setup { + destroy .t +} -body { + toplevel .t + canvas .t.c + pack .t.c + frame .t.c.f -width 50 -height 50 -background red + set id [.t.c create window 50 50 -window .t.c.f] + update + bind .t.c.f {destroy .t.c.f} + .t.c coords $id 60 60 ; # crashes! + update +} -cleanup { + destroy .t +} -result {} + # cleanup cleanupTests return -- cgit v0.12 From ae17007357f23615ecf2aba005495e7fff6a6957 Mon Sep 17 00:00:00 2001 From: fvogel Date: Wed, 9 Mar 2022 21:37:49 +0000 Subject: Fix [5412c64a79]: Segmentation fault on closing error report window. The problem is a canvas embedded window gets destroyed through a binding to . Test canvWind-2.1 now passes. --- generic/tkCanvWind.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/generic/tkCanvWind.c b/generic/tkCanvWind.c index 4047b0f..4ca3f9b 100644 --- a/generic/tkCanvWind.c +++ b/generic/tkCanvWind.c @@ -619,6 +619,16 @@ DisplayWinItem( || (width != Tk_Width(winItemPtr->tkwin)) || (height != Tk_Height(winItemPtr->tkwin))) { Tk_MoveResizeWindow(winItemPtr->tkwin, x, y, width, height); + + /* + * Tk_MoveResizeWindow runs a Configure event which in turn may run + * the event loop and do anything, including destruction of the + * canvas window. Catch this case or we would crash in Tk_MapWindow. + */ + + if (!winItemPtr->tkwin) { + return; + } } Tk_MapWindow(winItemPtr->tkwin); } else { -- cgit v0.12 From 0842a0a41ec2872b21273d0603e6831e4350ef41 Mon Sep 17 00:00:00 2001 From: griffin Date: Sun, 13 Mar 2022 01:08:00 +0000 Subject: Fix secondary crash in tkPack. This is a hack fix as not exactly certain if -1 value is intentional under these conditions. --- generic/tkCanvWind.c | 12 +++++++++++- generic/tkPack.c | 6 ++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/generic/tkCanvWind.c b/generic/tkCanvWind.c index 4ca3f9b..04412a5 100644 --- a/generic/tkCanvWind.c +++ b/generic/tkCanvWind.c @@ -571,6 +571,9 @@ DisplayWinItem( if (winItemPtr->tkwin == NULL) { return; } + + Tcl_Preserve(canvas); + if (state == TK_STATE_NULL) { state = Canvas(canvas)->canvas_state; } @@ -585,6 +588,7 @@ DisplayWinItem( } else { Tk_UnmaintainGeometry(winItemPtr->tkwin, canvasTkwin); } + Tcl_Release(canvas); return; } Tk_CanvasWindowCoords(canvas, (double) winItemPtr->header.x1, @@ -606,6 +610,7 @@ DisplayWinItem( } else { Tk_UnmaintainGeometry(winItemPtr->tkwin, canvasTkwin); } + Tcl_Release(canvas); return; } @@ -630,11 +635,16 @@ DisplayWinItem( return; } } - Tk_MapWindow(winItemPtr->tkwin); + + if (winItemPtr->tkwin) { + Tk_MapWindow(winItemPtr->tkwin); + } + } else { Tk_MaintainGeometry(winItemPtr->tkwin, canvasTkwin, x, y, width, height); } + Tcl_Release(canvas); } /* diff --git a/generic/tkPack.c b/generic/tkPack.c index 67267e7..5374039 100644 --- a/generic/tkPack.c +++ b/generic/tkPack.c @@ -643,6 +643,12 @@ ArrangePacking( Tk_InternalBorderBottom(containerPtr->tkwin); for (contentPtr = containerPtr->contentPtr; contentPtr != NULL; contentPtr = contentPtr->nextPtr) { + if (contentPtr == (Packer*)-1) { + if (containerPtr->abortPtr != NULL) { + *containerPtr->abortPtr = 1; + } + goto done; + } if ((contentPtr->side == TOP) || (contentPtr->side == BOTTOM)) { tmp = Tk_ReqWidth(contentPtr->tkwin) + contentPtr->doubleBw + contentPtr->padX + contentPtr->iPadX + width; -- cgit v0.12 From 3a45af1e7e603d9ef14a0faf77c9d89e2a0d2e6b Mon Sep 17 00:00:00 2001 From: fvogel Date: Sun, 13 Mar 2022 09:23:24 +0000 Subject: Backout [14bdca4d]. This fix is no longer needed since previous commit. Moreover there was a missing Tcl_Release call before returning. --- generic/tkCanvWind.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/generic/tkCanvWind.c b/generic/tkCanvWind.c index 04412a5..a041589 100644 --- a/generic/tkCanvWind.c +++ b/generic/tkCanvWind.c @@ -624,16 +624,6 @@ DisplayWinItem( || (width != Tk_Width(winItemPtr->tkwin)) || (height != Tk_Height(winItemPtr->tkwin))) { Tk_MoveResizeWindow(winItemPtr->tkwin, x, y, width, height); - - /* - * Tk_MoveResizeWindow runs a Configure event which in turn may run - * the event loop and do anything, including destruction of the - * canvas window. Catch this case or we would crash in Tk_MapWindow. - */ - - if (!winItemPtr->tkwin) { - return; - } } if (winItemPtr->tkwin) { -- cgit v0.12 From df5e5f6249918905e2228edadb3ef9cd551b8a94 Mon Sep 17 00:00:00 2001 From: griffin Date: Mon, 14 Mar 2022 04:21:23 +0000 Subject: Correct fix for secondary crash, scheduled idletasks for deleted containers must be canceled since the clientData has been deallocated. --- generic/tkPack.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/generic/tkPack.c b/generic/tkPack.c index 5374039..be69013 100644 --- a/generic/tkPack.c +++ b/generic/tkPack.c @@ -643,12 +643,6 @@ ArrangePacking( Tk_InternalBorderBottom(containerPtr->tkwin); for (contentPtr = containerPtr->contentPtr; contentPtr != NULL; contentPtr = contentPtr->nextPtr) { - if (contentPtr == (Packer*)-1) { - if (containerPtr->abortPtr != NULL) { - *containerPtr->abortPtr = 1; - } - goto done; - } if ((contentPtr->side == TOP) || (contentPtr->side == BOTTOM)) { tmp = Tk_ReqWidth(contentPtr->tkwin) + contentPtr->doubleBw + contentPtr->padX + contentPtr->iPadX + width; @@ -1400,6 +1394,7 @@ DestroyPacker( { Packer *packPtr = (Packer *)memPtr; + Tcl_CancelIdleCall(ArrangePacking, packPtr); ckfree(packPtr); } -- cgit v0.12 From 3160bd7447d371ee375d1a75a71d9beb945c1f62 Mon Sep 17 00:00:00 2001 From: fvogel Date: Mon, 14 Mar 2022 07:12:41 +0000 Subject: Refine Brian's fix for pack, and propagate it to grid and place. --- generic/tkGrid.c | 3 +++ generic/tkPack.c | 4 +++- generic/tkPlace.c | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/generic/tkGrid.c b/generic/tkGrid.c index 785bc7f..ac6b59b 100644 --- a/generic/tkGrid.c +++ b/generic/tkGrid.c @@ -2811,6 +2811,9 @@ DestroyGrid( { Gridder *gridPtr = (Gridder *)memPtr; + if (gridPtr->flags & REQUESTED_RELAYOUT) { + Tcl_CancelIdleCall(ArrangeGrid, gridPtr); + } if (gridPtr->containerDataPtr != NULL) { if (gridPtr->containerDataPtr->rowPtr != NULL) { ckfree(gridPtr->containerDataPtr -> rowPtr); diff --git a/generic/tkPack.c b/generic/tkPack.c index be69013..126bb68 100644 --- a/generic/tkPack.c +++ b/generic/tkPack.c @@ -1394,7 +1394,9 @@ DestroyPacker( { Packer *packPtr = (Packer *)memPtr; - Tcl_CancelIdleCall(ArrangePacking, packPtr); + if (packPtr->flags & REQUESTED_REPACK) { + Tcl_CancelIdleCall(ArrangePacking, packPtr); + } ckfree(packPtr); } diff --git a/generic/tkPlace.c b/generic/tkPlace.c index 47ceee2..108097c 100644 --- a/generic/tkPlace.c +++ b/generic/tkPlace.c @@ -426,6 +426,9 @@ static void FreeContent( Content *contentPtr) { + if (contentPtr->flags & PARENT_RECONFIG_PENDING) { + Tcl_CancelIdleCall(RecomputePlacement, contentPtr); + } Tk_FreeConfigOptions((char *) contentPtr, contentPtr->optionTable, contentPtr->tkwin); ckfree(contentPtr); -- cgit v0.12 From e56eaaec5f8813b8bdb092fbbee010ebca6a96f2 Mon Sep 17 00:00:00 2001 From: fvogel Date: Mon, 14 Mar 2022 22:08:54 +0000 Subject: Add Finnish translations from Sampo Hippelainen, provided in [f479206ff1]. --- library/msgs/fi.msg | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 library/msgs/fi.msg diff --git a/library/msgs/fi.msg b/library/msgs/fi.msg new file mode 100644 index 0000000..4818b28 --- /dev/null +++ b/library/msgs/fi.msg @@ -0,0 +1,114 @@ +namespace eval ::tk { + ::msgcat::mcset fi "AaBbYyZz01" "AaBb\u00c4\u00e4\u00d6\u00f601" + ::msgcat::mcset fi "&Abort" "&Keskeyt\u00e4" + ::msgcat::mcset fi "&About..." "&Tietoja..." + ::msgcat::mcset fi "All Files" "Kaikki tiedostot" + ::msgcat::mcset fi "&Apply" "K\u00e4&yt\u00e4" + ::msgcat::mcset fi "Application Error" "Ohjelmavirhe" + ::msgcat::mcset fi "&Blue" "&Sininen" + ::msgcat::mcset fi "Bold" "Lihavoitu" + ::msgcat::mcset fi "Bold Italic" "Lihavoitu, kursivoitu" + ::msgcat::mcset fi "Cancel" "Peruuta" + ::msgcat::mcset fi "&Cancel" "&Peruuta" + ::msgcat::mcset fi "Cannot change to the directory \"%1\$s\".\nPermission denied." "Ei voitu vaihtaa hakemistoon \"%1\$s\".\nLupa ev\u00e4tty." + ::msgcat::mcset fi "Choose Directory" "Valitse hakemisto" + ::msgcat::mcset fi "Cl&ear" "&Tyhjenn\u00e4" + ::msgcat::mcset fi "&Clear Console" "&Tyhjenn\u00e4 konsoli" + ::msgcat::mcset fi "Color" "V\u00e4ri" + ::msgcat::mcset fi "Console" "Konsoli" + ::msgcat::mcset fi "&Copy" "K&opioi" + ::msgcat::mcset fi "Cu&t" "&Leikkaa" + ::msgcat::mcset fi "&Decrease Font Size" "&Pienenn\u00e4 kirjasinkokoa" + ::msgcat::mcset fi "&Delete" "&Poista" + ::msgcat::mcset fi "Details >>" "Lis\u00e4tiedot >>" + ::msgcat::mcset fi "Directory \"%1\$s\" does not exist." "Hakemistoa \"%1\$s\" ei ole olemassa." + ::msgcat::mcset fi "&Directory:" "&Hakemisto:" + ::msgcat::mcset fi "&Edit" "&Muokkaa" + ::msgcat::mcset fi "Effects" "Tehosteet" + ::msgcat::mcset fi "Error: %1\$s" "Virhe: %1\$s" + ::msgcat::mcset fi "E&xit" "&Lopeta" + ::msgcat::mcset fi "&File" "&Tiedosto" + ::msgcat::mcset fi "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Tiedosto \"%1\$s\" on jo olemassa.\nHaluatko korvata sen?" + ::msgcat::mcset fi "File \"%1\$s\" already exists.\n\n" "Tiedosto \"%1\$s\" on jo olemassa.\n\n" + ::msgcat::mcset fi "File \"%1\$s\" does not exist." "Tiedostoa \"%1\$s\" ei ole olemassa." + ::msgcat::mcset fi "File &name:" "Tiedosto&nimi:" + ::msgcat::mcset fi "File &names:" "Tiedosto&nimet:" + ::msgcat::mcset fi "Files of &type:" "T&yyppi:" + ::msgcat::mcset fi "Fi&les:" "Ti&edostot:" + ::msgcat::mcset fi "&Filter" "&Suodata" + ::msgcat::mcset fi "Fil&ter:" "Suo&data:" + ::msgcat::mcset fi "Fit To Screen Width" "Sovita ruudun kokoon" + ::msgcat::mcset fi "Font" "Kirjasin" + ::msgcat::mcset fi "&Font..." "Kir&jasin..." + ::msgcat::mcset fi "&Font:" "&Kirjasin:" + ::msgcat::mcset fi "Font st&yle:" "Kirjasint&yyli:" + ::msgcat::mcset fi "&Green" "&Vihre\u00e4" + ::msgcat::mcset fi "Help" "Ohje" + ::msgcat::mcset fi "&Help" "&Ohje" + ::msgcat::mcset fi "Hi" "Hei" + ::msgcat::mcset fi "&Hide Console" "P&iilota konsoli" + ::msgcat::mcset fi "Hide Fonts" "Piilota kirjasimet" + ::msgcat::mcset fi "&Ignore" "&Ohita" + ::msgcat::mcset fi "&Increase Font Size" "&Suurenna kirjasinkokoa" + ::msgcat::mcset fi "Invalid file name \"%1\$s\"." "Virheellinen tiedostonimi \"%1\$s\"." + ::msgcat::mcset fi "Italic" "Kursivoitu" + ::msgcat::mcset fi "Log Files" "Lokitiedostot" + ::msgcat::mcset fi "&No" "&Ei" + ::msgcat::mcset fi "&OK" + ::msgcat::mcset fi "OK" + ::msgcat::mcset fi "Ok" "OK" + ::msgcat::mcset fi "Open" "Avaa" + ::msgcat::mcset fi "&Open" "&Avaa" + ::msgcat::mcset fi "Open Multiple Files" "Avaa monta tiedostoa" + ::msgcat::mcset fi "P&aste" "L&iit\u00e4" + ::msgcat::mcset fi "&Quit" "&Lopeta" + ::msgcat::mcset fi "&Red" "&Punainen" + ::msgcat::mcset fi "Regular" "Tavallinen" + ::msgcat::mcset fi "Replace existing file?" "Korvataanko olemassaoleva tiedosto?" + ::msgcat::mcset fi "&Retry" "&Yrit\u00e4 uudelleen" + ::msgcat::mcset fi "Sample" "Malli" + ::msgcat::mcset fi "&Save" "&Tallenna" + ::msgcat::mcset fi "Save As" "Tallenna nimell\u00e4" + ::msgcat::mcset fi "Save To Log" "Tallenna lokiin" + ::msgcat::mcset fi "Select Log File" "Valitse lokitiedosto" + ::msgcat::mcset fi "Select a file to source" "Valitse l\u00e4hdetiedosto" + ::msgcat::mcset fi "&Selection:" "&Valinta:" + ::msgcat::mcset fi "Show Fonts" "N\u00e4yt\u00e4 kirjasimet" + ::msgcat::mcset fi "Skip Messages" "J\u00e4t\u00e4 viestit huomiotta" + ::msgcat::mcset fi "&Size:" "K&oko:" + ::msgcat::mcset fi "&Source..." "L&\u00e4hde..." + ::msgcat::mcset fi "Stri&keout" "&Yliviivaa" + ::msgcat::mcset fi "Tcl Scripts" "Tcl-skriptit" + ::msgcat::mcset fi "Tcl for Windows" "Tcl Windowsille" + ::msgcat::mcset fi "Text Files" "Tekstitiedostot" + ::msgcat::mcset fi "&Underline" "&Alleviivaa" + ::msgcat::mcset fi "Window" "Ikkuna" + ::msgcat::mcset fi "&Yes" "&Kyll\u00e4" + ::msgcat::mcset fi "abort" "keskeyt\u00e4" + ::msgcat::mcset fi "blue" "sininen" + ::msgcat::mcset fi "cancel" "peruuta" + ::msgcat::mcset fi "extension" "lis\u00e4osa" + ::msgcat::mcset fi "extensions" "lis\u00e4osat" + ::msgcat::mcset fi "green" "vihre\u00e4" + ::msgcat::mcset fi "ignore" "ohita" + ::msgcat::mcset fi "ok" + ::msgcat::mcset fi "red" "punainen" + ::msgcat::mcset fi "retry" "yrit\u00e4 uudelleen" + ::msgcat::mcset fi "yes" "kyll\u00e4" + + ::msgcat::mcset fi "Print" "Tulosta" + ::msgcat::mcset fi "Printer" "Tulostin" + ::msgcat::mcset fi "Letter " "Letter" + ::msgcat::mcset fi "Legal " "Legal" + ::msgcat::mcset fi "A4" "A4" + ::msgcat::mcset fi "Grayscale" "Harmaas\u00e4vy" + ::msgcat::mcset fi "RGB" "RGB" + ::msgcat::mcset fi "Options" "Asetukset" + ::msgcat::mcset fi "Copies" "Tulosteita" + ::msgcat::mcset fi "Paper" "Paperikoko" + ::msgcat::mcset fi "Scale" "Skaalaus" + ::msgcat::mcset fi "Orientation" "Suunta" + ::msgcat::mcset fi "Portrait" "Pysty" + ::msgcat::mcset fi "Landscape" "Vaaka" + ::msgcat::mcset fi "Output" "Tulos" +} -- cgit v0.12 From f7b26234e62b412d6f6c4e816c8346476c58331c Mon Sep 17 00:00:00 2001 From: Kevin Walzer Date: Tue, 15 Mar 2022 02:00:33 +0000 Subject: Patches by Emiliano Gavilan to improve Tk notifications on X11 --- unix/tkUnixSysNotify.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/unix/tkUnixSysNotify.c b/unix/tkUnixSysNotify.c index 1572027..f0c0c2a 100755 --- a/unix/tkUnixSysNotify.c +++ b/unix/tkUnixSysNotify.c @@ -108,6 +108,7 @@ SysNotifyCmd( const char *title; const char *message; const char *icon; + const char *appname = "Wish"; void *notif; if (objc < 3) { @@ -124,6 +125,15 @@ SysNotifyCmd( message = Tcl_GetString(objv[2]); icon = "dialog-information"; + + /* Use the appname for libnotify initialization + * See bug f63c37be3a for a discussion whether this should be + * allowed at all on safe interpreters + */ + if (!Tcl_IsSafe(interp)) { + appname = ((TkWindow *)Tk_MainWindow(interp))->nameUid; + } + /* * Call to notify_init should go here to prevent test suite failure. */ @@ -132,11 +142,14 @@ SysNotifyCmd( Tcl_Encoding enc; Tcl_DString dst, dsm; + Tcl_DStringInit(&dst); + Tcl_DStringInit(&dsm); enc = Tcl_GetEncoding(NULL, "utf-8"); - Tcl_ExternalToUtfDString(enc, title, -1, &dst); - Tcl_ExternalToUtfDString(enc, message, -1, &dsm); - notify_init("Wish"); - notif = notify_notification_new(title, message, icon, NULL); + Tcl_UtfToExternalDString(enc, title, -1, &dst); + Tcl_UtfToExternalDString(enc, message, -1, &dsm); + notify_init(appname); + notif = notify_notification_new(Tcl_DStringValue(&dst), + Tcl_DStringValue(&dsm), icon, NULL); notify_notification_show(notif, NULL); Tcl_DStringFree(&dsm); Tcl_DStringFree(&dst); -- cgit v0.12 From b8f122996e22fb32bf31b51d8f16e5f4e4ed17f1 Mon Sep 17 00:00:00 2001 From: Kevin Walzer Date: Tue, 15 Mar 2022 02:02:13 +0000 Subject: Revert, re-commit to branch --- unix/tkUnixSysNotify.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/unix/tkUnixSysNotify.c b/unix/tkUnixSysNotify.c index f0c0c2a..1572027 100755 --- a/unix/tkUnixSysNotify.c +++ b/unix/tkUnixSysNotify.c @@ -108,7 +108,6 @@ SysNotifyCmd( const char *title; const char *message; const char *icon; - const char *appname = "Wish"; void *notif; if (objc < 3) { @@ -125,15 +124,6 @@ SysNotifyCmd( message = Tcl_GetString(objv[2]); icon = "dialog-information"; - - /* Use the appname for libnotify initialization - * See bug f63c37be3a for a discussion whether this should be - * allowed at all on safe interpreters - */ - if (!Tcl_IsSafe(interp)) { - appname = ((TkWindow *)Tk_MainWindow(interp))->nameUid; - } - /* * Call to notify_init should go here to prevent test suite failure. */ @@ -142,14 +132,11 @@ SysNotifyCmd( Tcl_Encoding enc; Tcl_DString dst, dsm; - Tcl_DStringInit(&dst); - Tcl_DStringInit(&dsm); enc = Tcl_GetEncoding(NULL, "utf-8"); - Tcl_UtfToExternalDString(enc, title, -1, &dst); - Tcl_UtfToExternalDString(enc, message, -1, &dsm); - notify_init(appname); - notif = notify_notification_new(Tcl_DStringValue(&dst), - Tcl_DStringValue(&dsm), icon, NULL); + Tcl_ExternalToUtfDString(enc, title, -1, &dst); + Tcl_ExternalToUtfDString(enc, message, -1, &dsm); + notify_init("Wish"); + notif = notify_notification_new(title, message, icon, NULL); notify_notification_show(notif, NULL); Tcl_DStringFree(&dsm); Tcl_DStringFree(&dst); -- cgit v0.12 From a9f3697b89b3126957d648c19a862499f1c3f588 Mon Sep 17 00:00:00 2001 From: Kevin Walzer Date: Tue, 15 Mar 2022 02:02:59 +0000 Subject: Patches by Emiliano Gavilan to improve Tk notifications on X11 --- unix/tkUnixSysNotify.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/unix/tkUnixSysNotify.c b/unix/tkUnixSysNotify.c index 1572027..3985f0e 100755 --- a/unix/tkUnixSysNotify.c +++ b/unix/tkUnixSysNotify.c @@ -108,6 +108,7 @@ SysNotifyCmd( const char *title; const char *message; const char *icon; + const char *appname = "Wish"; void *notif; if (objc < 3) { @@ -124,6 +125,15 @@ SysNotifyCmd( message = Tcl_GetString(objv[2]); icon = "dialog-information"; + + /* Use the appname for libnotify initialization + * See bug f63c37be3a for a discussion whether this should be + * allowed at all on safe interpreters + */ + if (!Tcl_IsSafe(interp)) { + appname = ((TkWindow *)Tk_MainWindow(interp))->nameUid; + } + /* * Call to notify_init should go here to prevent test suite failure. */ @@ -132,11 +142,14 @@ SysNotifyCmd( Tcl_Encoding enc; Tcl_DString dst, dsm; + Tcl_DStringInit(&dst); + Tcl_DStringInit(&dsm); enc = Tcl_GetEncoding(NULL, "utf-8"); - Tcl_ExternalToUtfDString(enc, title, -1, &dst); - Tcl_ExternalToUtfDString(enc, message, -1, &dsm); - notify_init("Wish"); - notif = notify_notification_new(title, message, icon, NULL); + Tcl_UtfToExternalDString(enc, title, -1, &dst); + Tcl_UtfToExternalDString(enc, message, -1, &dsm); + notify_init(appname); + notif = notify_notification_new(Tcl_DStringValue(&dst), + Tcl_DStringValue(&dsm), icon, NULL); notify_notification_show(notif, NULL); Tcl_DStringFree(&dsm); Tcl_DStringFree(&dst); @@ -218,4 +231,3 @@ SysNotify_Init( * coding: utf-8 * End: */ - -- cgit v0.12 From b40992ab9d551425c1239a7f78fed329b75a4664 Mon Sep 17 00:00:00 2001 From: Kevin Walzer Date: Tue, 15 Mar 2022 02:45:07 +0000 Subject: Emiliano Gavilan patch for ttk widgets in print dialog --- library/demos/en.msg | 2 +- library/msgs/es.msg | 8 +- library/print.tcl | 314 ++++++++++++++++++++++++++------------------------- 3 files changed, 167 insertions(+), 157 deletions(-) diff --git a/library/demos/en.msg b/library/demos/en.msg index 696aa0f..ca1da22 100644 --- a/library/demos/en.msg +++ b/library/demos/en.msg @@ -28,7 +28,7 @@ ::msgcat::mcset en "numbered lines below describes a demonstration; you can click on" ::msgcat::mcset en "it to invoke the demonstration. Once the demonstration window" ::msgcat::mcset en "appears, you can click the" -::msgcat::mcset en "See Code" "Bekijk Code" ;# This is also button text! +::msgcat::mcset en "See Code" "See Code" ;# This is also button text! ::msgcat::mcset en "button to see the Tcl/Tk code that created the demonstration. If" ::msgcat::mcset en "you wish, you can edit the code and click the" ::msgcat::mcset en "button in the code window to reinvoke the demonstration with the" diff --git a/library/msgs/es.msg b/library/msgs/es.msg index 724ea3b..71ad5ad 100644 --- a/library/msgs/es.msg +++ b/library/msgs/es.msg @@ -78,15 +78,15 @@ namespace eval ::tk { namespace eval ::tk { ::msgcat::mcset es "Print" "Imprimir" ::msgcat::mcset es "Printer" "Impresora" - ::msgcat::mcset es "Letter " "Carta" - ::msgcat::mcset es "Legal " "Legal" + ::msgcat::mcset es "Letter" "Carta" + ::msgcat::mcset es "Legal" "Legal" ::msgcat::mcset es "A4" "A4" ::msgcat::mcset es "Grayscale" "Escala De Grises" - ::msgcat::mcset es "RGB" "Rgb" + ::msgcat::mcset es "RGB" "Color" ::msgcat::mcset es "Options" "Opciones" ::msgcat::mcset es "Copies" "Copias" ::msgcat::mcset es "Paper" "Papel" - ::msgcat::mcset es "Scale" "Escama" + ::msgcat::mcset es "Scale" "Escala" ::msgcat::mcset es "Orientation" "Orientación" ::msgcat::mcset es "Portrait" "Retrato" ::msgcat::mcset es "Landscape" "Paisaje" diff --git a/library/print.tcl b/library/print.tcl index b0f6f10..a466a8b 100644 --- a/library/print.tcl +++ b/library/print.tcl @@ -651,11 +651,60 @@ namespace eval ::tk::print { # canvas postscript command. if {[tk windowingsystem] eq "x11"} { - variable printcmd "" - variable printlist {} - variable choosepaper - variable chooseprinter {} - variable p + variable printcmd {} + + # print options + variable optlist + set optlist(printer) {} + set optlist(paper) [list [mc "Letter"] [mc "Legal"] [mc "A4"]] + set optlist(orient) [list [mc "Portrait"] [mc "Landscape"]] + set optlist(color) [list [mc "Grayscale"] [mc "RGB"]] + set optlist(zoom) {100 90 80 70 60 50 40 30 20 10} + + # selected options + variable sel + array set sel { + printer {} + copies {} + paper {} + orient {} + color {} + zoom {} + } + + # default values for dialog widgets + option add *Printdialog*TLabel.anchor e + option add *Printdialog*TMenubutton.Menu.tearOff 0 + option add *Printdialog*TMenubutton.width 12 + option add *Printdialog*TSpinbox.width 12 + # this is tempting to add, but it's better to leave it to user's taste + # option add *Printdialog*Menu.background snow + + # returns the full qualified var name + proc myvar {varname} { + set fqvar [uplevel 1 [list namespace which -variable $varname]] + # assert var existence + if {$fqvar eq ""} { + return -code error "Wrong varname \"$varname\"" + } + return $fqvar + } + + # ttk version of [tk_optionMenu] + # var should be a full qualified varname + proc ttk_optionMenu {w var args} { + ttk::menubutton $w \ + -textvariable $var \ + -menu $w.menu + menu $w.menu + foreach option $args { + $w.menu add command \ + -label $option \ + -command [list set $var $option] + } + # return the same value as tk_optionMenu + return $w.menu + } # _setprintenv # Set the print environtment - print command, and list of printers. @@ -664,7 +713,7 @@ namespace eval ::tk::print { proc _setprintenv {} { variable printcmd - variable printlist + variable optlist #Test for existence of lpstat command to obtain list of printers. Return error #if not found. @@ -676,8 +725,8 @@ namespace eval ::tk::print { for your system." return } - set notfound "No destinations added" - if {[string first $notfound $msg] >= 0} { + set notfound "No destinations added" + if {[string first $notfound $msg] != -1} { error "Please check or update your CUPS installation." return } @@ -690,11 +739,14 @@ namespace eval ::tk::print { set printcmd lp } - #Build list of printers. + #Build list of printers + set printers {} set printdata [exec lpstat -a] foreach item [split $printdata \n] { - lappend printlist [lindex [split $item] 0] + lappend printers [lindex [split $item] 0] } + # filter out duplicates + set optlist(printer) [lsort -unique $printers] } # _print @@ -705,196 +757,154 @@ namespace eval ::tk::print { # proc _print {w} { - variable printlist - variable printcmd - variable chooseprinter - variable printcopies - variable printorientation - variable choosepaper - variable color - variable p - variable zoomnumber + # TODO: revise padding + variable optlist + variable sel + # should this be called with every invocaton? _setprintenv - - set chooseprinter [lindex $printlist 0] + if {$sel(printer) eq "" && [llength $optlist(printer)] > 0} { + set sel(printer) [lindex $optlist(printer) 0] + } set p ._print catch {destroy $p} - toplevel $p - wm title $p "Print" - wm resizable $p 0 0 - - frame $p.frame -padx 10 -pady 10 - pack $p.frame -fill x -expand no - - #The main dialog - frame $p.frame.printframe -padx 5 -pady 5 - pack $p.frame.printframe -side top -fill x -expand no - - label $p.frame.printframe.printlabel -text [mc "Printer"] - ttk::combobox $p.frame.printframe.mb \ - -textvariable [namespace which -variable chooseprinter] \ - -state readonly -values [lsort -unique $printlist] - pack $p.frame.printframe.printlabel $p.frame.printframe.mb \ - -side left -fill x -expand no - - bind $p.frame.printframe.mb <> { - set chooseprinter {$p.frame.printframe.mb get} - } - - set paperlist [list [mc Letter] [mc Legal] [mc A4]] - set colorlist [list [mc Grayscale] [mc RGB]] - - #Initialize with sane defaults. - set printcopies 1 - set choosepaper [mc A4] - set color [mc RGB] - set printorientation portrait - - set percentlist {100 90 80 70 60 50 40 30 20 10} - - #Base widgets to load. - labelframe $p.frame.copyframe -text [mc "Options"] -padx 5 -pady 5 - pack $p.frame.copyframe -fill x -expand no - - frame $p.frame.copyframe.l -padx 5 -pady 5 - pack $p.frame.copyframe.l -side top -fill x -expand no - - label $p.frame.copyframe.l.copylabel -text [mc "Copies"] - spinbox $p.frame.copyframe.l.field -from 1 -to 1000 \ - -textvariable [namespace which -variable printcopies] -width 5 - - pack $p.frame.copyframe.l.copylabel $p.frame.copyframe.l.field \ - -side left -fill x -expand no - - set printcopies [$p.frame.copyframe.l.field get] + # copy the current values to a dialog's temorary variable + # this allow us to cancel the dialog discarding any changes + # made to the options + namespace eval dlg {variable sel} + array set dlg::sel [array get sel] - frame $p.frame.copyframe.r -padx 5 -pady 5 - pack $p.frame.copyframe.r -fill x -expand no - - label $p.frame.copyframe.r.paper -text [mc "Paper"] - tk_optionMenu $p.frame.copyframe.r.menu \ - [namespace which -variable choosepaper] \ - {*}$paperlist - - pack $p.frame.copyframe.r.paper $p.frame.copyframe.r.menu \ - -side left -fill x -expand no - - #Widgets with additional options for canvas output. + # The toplevel of our dialog + toplevel $p -class Printdialog + place [ttk::frame $p.background] -x 0 -y 0 -relwidth 1.0 -relheight 1.0 + wm title $p [mc "Print"] + wm resizable $p 0 0 + wm attributes $p -type dialog + + # The printer to use + set pf [ttk::frame $p.printerf] + pack $pf -side top -fill x -expand no -padx 12 -pady 12 + + ttk::label $pf.printerl -text "[mc "Printer"] :" + ttk::combobox $pf.printer \ + -textvariable [myvar dlg::sel](printer) \ + -state readonly \ + -values $optlist(printer) + pack $pf.printerl -side left -padx {0 6} + pack $pf.printer -side left + + # Start of printing options + set of [ttk::labelframe $p.optionsframe -text [mc "Options"]] + pack $of -fill x -padx 12 -pady {0 12} -ipadx 3 -ipady 3 + + # COPIES + ttk::label $of.copiesl -text "[mc "Copies"] :" + ttk::spinbox $of.copies -from 1 -to 1000 \ + -textvariable [myvar dlg::sel](copies) \ + -width 5 + grid $of.copiesl $of.copies -sticky ew -padx 3 -pady 3 + + # PAPER SIZE + ttk::label $of.paperl -text "[mc "Paper"] :" + ttk_optionMenu $of.paper [myvar dlg::sel](paper) {*}$optlist(paper) + grid $of.paperl $of.paper -sticky ew -padx 3 -pady 3 + + # additional options for canvas output if {[winfo class $w] eq "Canvas"} { - - frame $p.frame.copyframe.z -padx 5 -pady 5 - pack $p.frame.copyframe.z -fill x -expand no - - label $p.frame.copyframe.z.zlabel -text [mc "Scale"] - tk_optionMenu $p.frame.copyframe.z.zentry \ - [namespace which -variable zoomnumber] \ - {*}$percentlist - - pack $p.frame.copyframe.z.zlabel $p.frame.copyframe.z.zentry \ - -side left -fill x -expand no - - frame $p.frame.copyframe.orient -padx 5 -pady 5 - pack $p.frame.copyframe.orient -fill x -expand no - - label $p.frame.copyframe.orient.text -text [mc "Orientation"] - radiobutton $p.frame.copyframe.orient.v -text [mc "Portrait"] \ - -value portrait -compound left \ - -variable [namespace which -variable printorientation] - radiobutton $p.frame.copyframe.orient.h -text [mc "Landscape"] \ - -value landscape -compound left \ - -variable [namespace which -variable printorientation] - - pack $p.frame.copyframe.orient.text \ - $p.frame.copyframe.orient.v $p.frame.copyframe.orient.h \ - -side left -fill x -expand no - - frame $p.frame.copyframe.c -padx 5 -pady 5 - pack $p.frame.copyframe.c -fill x -expand no - - label $p.frame.copyframe.c.l -text [mc "Output"] - tk_optionMenu $p.frame.copyframe.c.c \ - [namespace which -variable color] \ - {*}$colorlist - pack $p.frame.copyframe.c.l $p.frame.copyframe.c.c -side left \ - -fill x -expand no - } - - #Build rest of GUI. - frame $p.frame.buttonframe - pack $p.frame.buttonframe -fill x -expand no -side bottom - - button $p.frame.buttonframe.printbutton -text [mc "Print"] \ - -command [namespace code [list _runprint $w]] - button $p.frame.buttonframe.cancel -text [mc "Cancel"] \ - -command {destroy ._print} - - pack $p.frame.buttonframe.printbutton $p.frame.buttonframe.cancel \ - -side right -fill x -expand no + # SCALE + ttk::label $of.percentl -text "[mc "Scale"] :" + ttk_optionMenu $of.percent [myvar dlg::sel](zoom) {*}$optlist(zoom) + grid $of.percentl $of.percent -sticky ew -padx 3 -pady 3 + + # ORIENT + ttk::label $of.orientl -text "[mc "Orientation"] :" + ttk_optionMenu $of.orient [myvar dlg::sel](orient) {*}$optlist(orient) + grid $of.orientl $of.orient -sticky ew -padx 3 -pady 3 + + # COLOR + ttk::label $of.colorl -text "[mc "Output"] :" + ttk_optionMenu $of.color [myvar dlg::sel](color) {*}$optlist(color) + grid $of.colorl $of.color -sticky ew -padx 3 -pady 3 + } + + # The buttons frame. + set bf [ttk::frame $p.buttonf] + pack $bf -fill x -expand no -side bottom -padx 12 -pady {0 12} + + ttk::button $bf.print -text [mc "Print"] \ + -command [namespace code [list _runprint $w $p]] + ttk::button $bf.cancel -text [mc "Cancel"] \ + -command [namespace code [list _cancel $p]] + pack $bf.print -side right + pack $bf.cancel -side right -padx {0 6} #Center the window as a dialog. ::tk::PlaceWindow $p } + proc _cancel {p} { + namespace delete dlg + destroy $p + } + # _runprint - # Execute the print command--print the file. # Arguments: # w - widget with contents to print. # - proc _runprint {w} { - variable printlist + proc _runprint {w p} { variable printcmd - variable choosepaper - variable chooseprinter - variable color - variable printcopies - variable printorientation - variable zoomnumber - variable p + variable sel - #First, generate print file. + # copy the values back from the dialog + array set sel [array get dlg::sel] + namespace delete dlg + #First, generate print file. if {[winfo class $w] eq "Text"} { set file [makeTempFile tk_text.txt [$w get 1.0 end]] } if {[winfo class $w] eq "Canvas"} { - if {$color eq [mc "RGB"]} { + if {$sel(color) eq [mc "RGB"]} { set colormode color } else { set colormode gray } - if {$printorientation eq "landscape"} { + if {$sel(orient) eq [mc "Landscape"]} { set willrotate "1" } else { set willrotate "0" } #Scale based on size of widget, not size of paper. - set printwidth [expr {$zoomnumber / 100.00 * [winfo width $w]}] + set printwidth [expr {$sel(zoom) / 100.00 * [winfo width $w]}] set file [makeTempFile tk_canvas.ps] $w postscript -file $file -colormode $colormode \ -rotate $willrotate -pagewidth $printwidth } #Build list of args to pass to print command. - set printargs {} - set printcopies [$p.frame.copyframe.l.field get] if {$printcmd eq "lpr"} { - lappend printargs -P $chooseprinter -# $printcopies + lappend printargs -P $sel(printer) -# $sel(copies) } else { - lappend printargs -d $chooseprinter -n $printcopies + lappend printargs -d $sel(printer) -n $sel(copies) } - after 500 - exec $printcmd {*}$printargs -o PageSize=$choosepaper $file - - after 500 - destroy ._print + # launch the job in the background + after 0 [list exec $printcmd {*}$printargs -o PageSize=$sel(paper) $file] + destroy $p } + + # Initialize with sane defaults. + set sel(copies) 1 + set sel(paper) [mc "A4"] + set sel(orient) [mc "Portrait"] + set sel(color) [mc "RGB"] + set sel(zoom) 100 } #end X11 procedures -- cgit v0.12 From e6f96a89cdae01b84a199ce9f1109332df3129f3 Mon Sep 17 00:00:00 2001 From: Kevin Walzer Date: Tue, 15 Mar 2022 03:06:47 +0000 Subject: Add copyright for Emiliano Gavilan --- library/print.tcl | 1 + 1 file changed, 1 insertion(+) diff --git a/library/print.tcl b/library/print.tcl index a466a8b..5246229 100644 --- a/library/print.tcl +++ b/library/print.tcl @@ -7,6 +7,7 @@ # Copyright © 2009 Michael I. Schwartz. # Copyright © 2021 Kevin Walzer/WordTech Communications LLC. # Copyright © 2021 Harald Oehlmann, Elmicron GmbH +# Copyright © 2022 Emiliano Gavilan # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. -- cgit v0.12 From b851b50c7dc0eb11b6b96bd3858a64fcec3be349 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 15 Mar 2022 09:26:41 +0000 Subject: Use utf-8 in stead of escape-sequences in fi.msg --- library/msgs/fi.msg | 78 ++++++++++++++++++++++++++--------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/library/msgs/fi.msg b/library/msgs/fi.msg index 4818b28..c00b373 100644 --- a/library/msgs/fi.msg +++ b/library/msgs/fi.msg @@ -1,26 +1,26 @@ namespace eval ::tk { - ::msgcat::mcset fi "AaBbYyZz01" "AaBb\u00c4\u00e4\u00d6\u00f601" - ::msgcat::mcset fi "&Abort" "&Keskeyt\u00e4" + ::msgcat::mcset fi "AaBbYyZz01" "AaBbÄäÖö01" + ::msgcat::mcset fi "&Abort" "&Keskeytä" ::msgcat::mcset fi "&About..." "&Tietoja..." ::msgcat::mcset fi "All Files" "Kaikki tiedostot" - ::msgcat::mcset fi "&Apply" "K\u00e4&yt\u00e4" + ::msgcat::mcset fi "&Apply" "Kä&ytä" ::msgcat::mcset fi "Application Error" "Ohjelmavirhe" ::msgcat::mcset fi "&Blue" "&Sininen" ::msgcat::mcset fi "Bold" "Lihavoitu" ::msgcat::mcset fi "Bold Italic" "Lihavoitu, kursivoitu" ::msgcat::mcset fi "Cancel" "Peruuta" ::msgcat::mcset fi "&Cancel" "&Peruuta" - ::msgcat::mcset fi "Cannot change to the directory \"%1\$s\".\nPermission denied." "Ei voitu vaihtaa hakemistoon \"%1\$s\".\nLupa ev\u00e4tty." + ::msgcat::mcset fi "Cannot change to the directory \"%1\$s\".\nPermission denied." "Ei voitu vaihtaa hakemistoon \"%1\$s\".\nLupa evätty." ::msgcat::mcset fi "Choose Directory" "Valitse hakemisto" - ::msgcat::mcset fi "Cl&ear" "&Tyhjenn\u00e4" - ::msgcat::mcset fi "&Clear Console" "&Tyhjenn\u00e4 konsoli" - ::msgcat::mcset fi "Color" "V\u00e4ri" + ::msgcat::mcset fi "Cl&ear" "&Tyhjennä" + ::msgcat::mcset fi "&Clear Console" "&Tyhjennä konsoli" + ::msgcat::mcset fi "Color" "Väri" ::msgcat::mcset fi "Console" "Konsoli" ::msgcat::mcset fi "&Copy" "K&opioi" ::msgcat::mcset fi "Cu&t" "&Leikkaa" - ::msgcat::mcset fi "&Decrease Font Size" "&Pienenn\u00e4 kirjasinkokoa" + ::msgcat::mcset fi "&Decrease Font Size" "&Pienennä kirjasinkokoa" ::msgcat::mcset fi "&Delete" "&Poista" - ::msgcat::mcset fi "Details >>" "Lis\u00e4tiedot >>" + ::msgcat::mcset fi "Details >>" "Lisätiedot >>" ::msgcat::mcset fi "Directory \"%1\$s\" does not exist." "Hakemistoa \"%1\$s\" ei ole olemassa." ::msgcat::mcset fi "&Directory:" "&Hakemisto:" ::msgcat::mcset fi "&Edit" "&Muokkaa" @@ -42,7 +42,7 @@ namespace eval ::tk { ::msgcat::mcset fi "&Font..." "Kir&jasin..." ::msgcat::mcset fi "&Font:" "&Kirjasin:" ::msgcat::mcset fi "Font st&yle:" "Kirjasint&yyli:" - ::msgcat::mcset fi "&Green" "&Vihre\u00e4" + ::msgcat::mcset fi "&Green" "&Vihreä" ::msgcat::mcset fi "Help" "Ohje" ::msgcat::mcset fi "&Help" "&Ohje" ::msgcat::mcset fi "Hi" "Hei" @@ -60,55 +60,55 @@ namespace eval ::tk { ::msgcat::mcset fi "Open" "Avaa" ::msgcat::mcset fi "&Open" "&Avaa" ::msgcat::mcset fi "Open Multiple Files" "Avaa monta tiedostoa" - ::msgcat::mcset fi "P&aste" "L&iit\u00e4" + ::msgcat::mcset fi "P&aste" "L&iitä" ::msgcat::mcset fi "&Quit" "&Lopeta" ::msgcat::mcset fi "&Red" "&Punainen" ::msgcat::mcset fi "Regular" "Tavallinen" ::msgcat::mcset fi "Replace existing file?" "Korvataanko olemassaoleva tiedosto?" - ::msgcat::mcset fi "&Retry" "&Yrit\u00e4 uudelleen" + ::msgcat::mcset fi "&Retry" "&Yritä uudelleen" ::msgcat::mcset fi "Sample" "Malli" ::msgcat::mcset fi "&Save" "&Tallenna" - ::msgcat::mcset fi "Save As" "Tallenna nimell\u00e4" + ::msgcat::mcset fi "Save As" "Tallenna nimellä" ::msgcat::mcset fi "Save To Log" "Tallenna lokiin" ::msgcat::mcset fi "Select Log File" "Valitse lokitiedosto" - ::msgcat::mcset fi "Select a file to source" "Valitse l\u00e4hdetiedosto" + ::msgcat::mcset fi "Select a file to source" "Valitse lähdetiedosto" ::msgcat::mcset fi "&Selection:" "&Valinta:" - ::msgcat::mcset fi "Show Fonts" "N\u00e4yt\u00e4 kirjasimet" - ::msgcat::mcset fi "Skip Messages" "J\u00e4t\u00e4 viestit huomiotta" + ::msgcat::mcset fi "Show Fonts" "Näytä kirjasimet" + ::msgcat::mcset fi "Skip Messages" "Jätä viestit huomiotta" ::msgcat::mcset fi "&Size:" "K&oko:" - ::msgcat::mcset fi "&Source..." "L&\u00e4hde..." + ::msgcat::mcset fi "&Source..." "L&ähde..." ::msgcat::mcset fi "Stri&keout" "&Yliviivaa" ::msgcat::mcset fi "Tcl Scripts" "Tcl-skriptit" ::msgcat::mcset fi "Tcl for Windows" "Tcl Windowsille" ::msgcat::mcset fi "Text Files" "Tekstitiedostot" ::msgcat::mcset fi "&Underline" "&Alleviivaa" ::msgcat::mcset fi "Window" "Ikkuna" - ::msgcat::mcset fi "&Yes" "&Kyll\u00e4" - ::msgcat::mcset fi "abort" "keskeyt\u00e4" + ::msgcat::mcset fi "&Yes" "&Kyllä" + ::msgcat::mcset fi "abort" "keskeytä" ::msgcat::mcset fi "blue" "sininen" ::msgcat::mcset fi "cancel" "peruuta" - ::msgcat::mcset fi "extension" "lis\u00e4osa" - ::msgcat::mcset fi "extensions" "lis\u00e4osat" - ::msgcat::mcset fi "green" "vihre\u00e4" + ::msgcat::mcset fi "extension" "lisäosa" + ::msgcat::mcset fi "extensions" "lisäosat" + ::msgcat::mcset fi "green" "vihreä" ::msgcat::mcset fi "ignore" "ohita" ::msgcat::mcset fi "ok" ::msgcat::mcset fi "red" "punainen" - ::msgcat::mcset fi "retry" "yrit\u00e4 uudelleen" - ::msgcat::mcset fi "yes" "kyll\u00e4" + ::msgcat::mcset fi "retry" "yritä uudelleen" + ::msgcat::mcset fi "yes" "kyllä" - ::msgcat::mcset fi "Print" "Tulosta" - ::msgcat::mcset fi "Printer" "Tulostin" - ::msgcat::mcset fi "Letter " "Letter" - ::msgcat::mcset fi "Legal " "Legal" - ::msgcat::mcset fi "A4" "A4" - ::msgcat::mcset fi "Grayscale" "Harmaas\u00e4vy" - ::msgcat::mcset fi "RGB" "RGB" - ::msgcat::mcset fi "Options" "Asetukset" - ::msgcat::mcset fi "Copies" "Tulosteita" - ::msgcat::mcset fi "Paper" "Paperikoko" - ::msgcat::mcset fi "Scale" "Skaalaus" - ::msgcat::mcset fi "Orientation" "Suunta" - ::msgcat::mcset fi "Portrait" "Pysty" - ::msgcat::mcset fi "Landscape" "Vaaka" - ::msgcat::mcset fi "Output" "Tulos" + ::msgcat::mcset fi "Print" "Tulosta" + ::msgcat::mcset fi "Printer" "Tulostin" + ::msgcat::mcset fi "Letter " "Letter" + ::msgcat::mcset fi "Legal " "Legal" + ::msgcat::mcset fi "A4" "A4" + ::msgcat::mcset fi "Grayscale" "Harmaasävy" + ::msgcat::mcset fi "RGB" "RGB" + ::msgcat::mcset fi "Options" "Asetukset" + ::msgcat::mcset fi "Copies" "Tulosteita" + ::msgcat::mcset fi "Paper" "Paperikoko" + ::msgcat::mcset fi "Scale" "Skaalaus" + ::msgcat::mcset fi "Orientation" "Suunta" + ::msgcat::mcset fi "Portrait" "Pysty" + ::msgcat::mcset fi "Landscape" "Vaaka" + ::msgcat::mcset fi "Output" "Tulos" } -- cgit v0.12 From f4d065f882a5b1e40e347f851a20cd732d3aacbc Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 15 Mar 2022 09:31:29 +0000 Subject: Formatting --- library/msgs/cs.msg | 30 +++++++++++++++--------------- library/msgs/da.msg | 30 +++++++++++++++--------------- library/msgs/de.msg | 30 +++++++++++++++--------------- library/msgs/el.msg | 30 +++++++++++++++--------------- library/msgs/en.msg | 30 +++++++++++++++--------------- library/msgs/eo.msg | 30 +++++++++++++++--------------- library/msgs/es.msg | 30 +++++++++++++++--------------- library/msgs/fr.msg | 30 +++++++++++++++--------------- library/msgs/hu.msg | 30 +++++++++++++++--------------- library/msgs/it.msg | 30 +++++++++++++++--------------- library/msgs/nl.msg | 30 +++++++++++++++--------------- library/msgs/pl.msg | 30 +++++++++++++++--------------- library/msgs/pt.msg | 30 +++++++++++++++--------------- library/msgs/ru.msg | 30 +++++++++++++++--------------- library/msgs/sv.msg | 30 +++++++++++++++--------------- library/msgs/zh_cn.msg | 30 +++++++++++++++--------------- 16 files changed, 240 insertions(+), 240 deletions(-) diff --git a/library/msgs/cs.msg b/library/msgs/cs.msg index c9ee256..b3bcab4 100644 --- a/library/msgs/cs.msg +++ b/library/msgs/cs.msg @@ -77,19 +77,19 @@ namespace eval ::tk { } #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset cs "Print" "Tisknout" - ::msgcat::mcset cs "Printer" "Tiskárna" - ::msgcat::mcset cs "Letter " "Dopis " - ::msgcat::mcset cs "Legal " "Legální " - ::msgcat::mcset cs "A4" "A4" - ::msgcat::mcset cs "Grayscale" "Stupně Šedi" - ::msgcat::mcset cs "RGB" "RGB" - ::msgcat::mcset cs "Options" "Možnosti" - ::msgcat::mcset cs "Copies" "Kopie" - ::msgcat::mcset cs "Paper" "Papír" - ::msgcat::mcset cs "Scale" "Škála" - ::msgcat::mcset cs "Orientation" "Orientace" - ::msgcat::mcset cs "Portrait" "Portrét" - ::msgcat::mcset cs "Landscape" "Krajina" - ::msgcat::mcset cs "Output" "Výstup" + ::msgcat::mcset cs "Print" "Tisknout" + ::msgcat::mcset cs "Printer" "Tiskárna" + ::msgcat::mcset cs "Letter " "Dopis " + ::msgcat::mcset cs "Legal " "Legální " + ::msgcat::mcset cs "A4" "A4" + ::msgcat::mcset cs "Grayscale" "Stupně Šedi" + ::msgcat::mcset cs "RGB" "RGB" + ::msgcat::mcset cs "Options" "Možnosti" + ::msgcat::mcset cs "Copies" "Kopie" + ::msgcat::mcset cs "Paper" "Papír" + ::msgcat::mcset cs "Scale" "Škála" + ::msgcat::mcset cs "Orientation" "Orientace" + ::msgcat::mcset cs "Portrait" "Portrét" + ::msgcat::mcset cs "Landscape" "Krajina" + ::msgcat::mcset cs "Output" "Výstup" } \ No newline at end of file diff --git a/library/msgs/da.msg b/library/msgs/da.msg index eb86516..8311479 100644 --- a/library/msgs/da.msg +++ b/library/msgs/da.msg @@ -78,19 +78,19 @@ namespace eval ::tk { } #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset da "Print" "Trykke" - ::msgcat::mcset da "Printer" "Printer" - ::msgcat::mcset da "Letter " "Brev" - ::msgcat::mcset da "Legal " "Juridisk" - ::msgcat::mcset da "A4" "A4" - ::msgcat::mcset da "Grayscale" "Gråtoneskala" - ::msgcat::mcset da "RGB" "Rgb" - ::msgcat::mcset da "Options" "Indstillinger" - ::msgcat::mcset da "Copies" "Kopier" - ::msgcat::mcset da "Paper" "Papir" - ::msgcat::mcset da "Scale" "Skalere" - ::msgcat::mcset da "Orientation" "Orientering" - ::msgcat::mcset da "Portrait" "Portræt" - ::msgcat::mcset da "Landscape" "Landskab" - ::msgcat::mcset da "Output" "Udskriv Publikation" + ::msgcat::mcset da "Print" "Trykke" + ::msgcat::mcset da "Printer" "Printer" + ::msgcat::mcset da "Letter " "Brev" + ::msgcat::mcset da "Legal " "Juridisk" + ::msgcat::mcset da "A4" "A4" + ::msgcat::mcset da "Grayscale" "Gråtoneskala" + ::msgcat::mcset da "RGB" "Rgb" + ::msgcat::mcset da "Options" "Indstillinger" + ::msgcat::mcset da "Copies" "Kopier" + ::msgcat::mcset da "Paper" "Papir" + ::msgcat::mcset da "Scale" "Skalere" + ::msgcat::mcset da "Orientation" "Orientering" + ::msgcat::mcset da "Portrait" "Portræt" + ::msgcat::mcset da "Landscape" "Landskab" + ::msgcat::mcset da "Output" "Udskriv Publikation" } \ No newline at end of file diff --git a/library/msgs/de.msg b/library/msgs/de.msg index fb4a8e7..c5658ff 100644 --- a/library/msgs/de.msg +++ b/library/msgs/de.msg @@ -91,19 +91,19 @@ namespace eval ::tk { } #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset de "Print" "Drucken" - ::msgcat::mcset de "Printer" "Drucker" - ::msgcat::mcset de "Letter " "Brief" - ::msgcat::mcset de "Legal " "Rechtlich" - ::msgcat::mcset de "A4" "A4" - ::msgcat::mcset de "Grayscale" "Graustufen" - ::msgcat::mcset de "RGB" "Rgb" - ::msgcat::mcset de "Options" "Optionen" - ::msgcat::mcset de "Copies" "Kopien" - ::msgcat::mcset de "Paper" "Papier" - ::msgcat::mcset de "Scale" "Skala" - ::msgcat::mcset de "Orientation" "Ausrichtung" - ::msgcat::mcset de "Portrait" "Porträt" - ::msgcat::mcset de "Landscape" "Landschaft" - ::msgcat::mcset de "Output" "Ausgabe" + ::msgcat::mcset de "Print" "Drucken" + ::msgcat::mcset de "Printer" "Drucker" + ::msgcat::mcset de "Letter " "Brief" + ::msgcat::mcset de "Legal " "Rechtlich" + ::msgcat::mcset de "A4" "A4" + ::msgcat::mcset de "Grayscale" "Graustufen" + ::msgcat::mcset de "RGB" "Rgb" + ::msgcat::mcset de "Options" "Optionen" + ::msgcat::mcset de "Copies" "Kopien" + ::msgcat::mcset de "Paper" "Papier" + ::msgcat::mcset de "Scale" "Skala" + ::msgcat::mcset de "Orientation" "Ausrichtung" + ::msgcat::mcset de "Portrait" "Porträt" + ::msgcat::mcset de "Landscape" "Landschaft" + ::msgcat::mcset de "Output" "Ausgabe" } \ No newline at end of file diff --git a/library/msgs/el.msg b/library/msgs/el.msg index 7aa6246..0336326 100644 --- a/library/msgs/el.msg +++ b/library/msgs/el.msg @@ -86,19 +86,19 @@ namespace eval ::tk { } #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset el "Print" "Τυπώνω" - ::msgcat::mcset el "Printer" "Εκτυπωτής" - ::msgcat::mcset el "Letter " "Γράμμα" - ::msgcat::mcset el "Legal " "Νομικός" - ::msgcat::mcset el "A4" "Α4" - ::msgcat::mcset el "Grayscale" "Κλίμακα Του Γκρι" - ::msgcat::mcset el "RGB" "Rgb" - ::msgcat::mcset el "Options" "Επιλογές" - ::msgcat::mcset el "Copies" "Αντίγραφα" - ::msgcat::mcset el "Paper" "Χαρτί" - ::msgcat::mcset el "Scale" "Κλίμακα" - ::msgcat::mcset el "Orientation" "Προσανατολισμός" - ::msgcat::mcset el "Portrait" "Προσωπογραφία" - ::msgcat::mcset el "Landscape" "Τοπίο" - ::msgcat::mcset el "Output" "Έξοδος" + ::msgcat::mcset el "Print" "Τυπώνω" + ::msgcat::mcset el "Printer" "Εκτυπωτής" + ::msgcat::mcset el "Letter " "Γράμμα" + ::msgcat::mcset el "Legal " "Νομικός" + ::msgcat::mcset el "A4" "Α4" + ::msgcat::mcset el "Grayscale" "Κλίμακα Του Γκρι" + ::msgcat::mcset el "RGB" "Rgb" + ::msgcat::mcset el "Options" "Επιλογές" + ::msgcat::mcset el "Copies" "Αντίγραφα" + ::msgcat::mcset el "Paper" "Χαρτί" + ::msgcat::mcset el "Scale" "Κλίμακα" + ::msgcat::mcset el "Orientation" "Προσανατολισμός" + ::msgcat::mcset el "Portrait" "Προσωπογραφία" + ::msgcat::mcset el "Landscape" "Τοπίο" + ::msgcat::mcset el "Output" "Έξοδος" } \ No newline at end of file diff --git a/library/msgs/en.msg b/library/msgs/en.msg index 3f0d988..92fa138 100644 --- a/library/msgs/en.msg +++ b/library/msgs/en.msg @@ -92,19 +92,19 @@ namespace eval ::tk { #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset en "Print" - ::msgcat::mcset en "Printer" - ::msgcat::mcset en "Letter " - ::msgcat::mcset en "Legal " - ::msgcat::mcset en "A4" - ::msgcat::mcset en "Grayscale" - ::msgcat::mcset en "RGB" - ::msgcat::mcset en "Options" - ::msgcat::mcset en "Copies" - ::msgcat::mcset en "Paper" - ::msgcat::mcset en "Scale" - ::msgcat::mcset en "Orientation" - ::msgcat::mcset en "Portrait" - ::msgcat::mcset en "Landscape" - ::msgcat::mcset en "Output" + ::msgcat::mcset en "Print" + ::msgcat::mcset en "Printer" + ::msgcat::mcset en "Letter " + ::msgcat::mcset en "Legal " + ::msgcat::mcset en "A4" + ::msgcat::mcset en "Grayscale" + ::msgcat::mcset en "RGB" + ::msgcat::mcset en "Options" + ::msgcat::mcset en "Copies" + ::msgcat::mcset en "Paper" + ::msgcat::mcset en "Scale" + ::msgcat::mcset en "Orientation" + ::msgcat::mcset en "Portrait" + ::msgcat::mcset en "Landscape" + ::msgcat::mcset en "Output" } diff --git a/library/msgs/eo.msg b/library/msgs/eo.msg index 08dfc1e..1492f59 100644 --- a/library/msgs/eo.msg +++ b/library/msgs/eo.msg @@ -75,19 +75,19 @@ namespace eval ::tk { } #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset eo "Print" "Presi" - ::msgcat::mcset eo "Printer" "Presilo" - ::msgcat::mcset eo "Letter " "Letero" - ::msgcat::mcset eo "Legal " "Laŭleĝa" - ::msgcat::mcset eo "A4" "A4" - ::msgcat::mcset eo "Grayscale" "Grizskalo" - ::msgcat::mcset eo "RGB" "RGB" - ::msgcat::mcset eo "Options" "Opcioj" - ::msgcat::mcset eo "Copies" "Kopioj" - ::msgcat::mcset eo "Paper" "Papero" - ::msgcat::mcset eo "Scale" "Skalo" - ::msgcat::mcset eo "Orientation" "Orientiĝo" - ::msgcat::mcset eo "Portrait" "Portreto" - ::msgcat::mcset eo "Landscape" "Pejzaĝo" - ::msgcat::mcset eo "Output" "Eligo" + ::msgcat::mcset eo "Print" "Presi" + ::msgcat::mcset eo "Printer" "Presilo" + ::msgcat::mcset eo "Letter " "Letero" + ::msgcat::mcset eo "Legal " "Laŭleĝa" + ::msgcat::mcset eo "A4" "A4" + ::msgcat::mcset eo "Grayscale" "Grizskalo" + ::msgcat::mcset eo "RGB" "RGB" + ::msgcat::mcset eo "Options" "Opcioj" + ::msgcat::mcset eo "Copies" "Kopioj" + ::msgcat::mcset eo "Paper" "Papero" + ::msgcat::mcset eo "Scale" "Skalo" + ::msgcat::mcset eo "Orientation" "Orientiĝo" + ::msgcat::mcset eo "Portrait" "Portreto" + ::msgcat::mcset eo "Landscape" "Pejzaĝo" + ::msgcat::mcset eo "Output" "Eligo" } \ No newline at end of file diff --git a/library/msgs/es.msg b/library/msgs/es.msg index 724ea3b..8f5d68f 100644 --- a/library/msgs/es.msg +++ b/library/msgs/es.msg @@ -76,19 +76,19 @@ namespace eval ::tk { } #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset es "Print" "Imprimir" - ::msgcat::mcset es "Printer" "Impresora" - ::msgcat::mcset es "Letter " "Carta" - ::msgcat::mcset es "Legal " "Legal" - ::msgcat::mcset es "A4" "A4" - ::msgcat::mcset es "Grayscale" "Escala De Grises" - ::msgcat::mcset es "RGB" "Rgb" - ::msgcat::mcset es "Options" "Opciones" - ::msgcat::mcset es "Copies" "Copias" - ::msgcat::mcset es "Paper" "Papel" - ::msgcat::mcset es "Scale" "Escama" - ::msgcat::mcset es "Orientation" "Orientación" - ::msgcat::mcset es "Portrait" "Retrato" - ::msgcat::mcset es "Landscape" "Paisaje" - ::msgcat::mcset es "Output" "Salida" + ::msgcat::mcset es "Print" "Imprimir" + ::msgcat::mcset es "Printer" "Impresora" + ::msgcat::mcset es "Letter " "Carta" + ::msgcat::mcset es "Legal " "Legal" + ::msgcat::mcset es "A4" "A4" + ::msgcat::mcset es "Grayscale" "Escala De Grises" + ::msgcat::mcset es "RGB" "Rgb" + ::msgcat::mcset es "Options" "Opciones" + ::msgcat::mcset es "Copies" "Copias" + ::msgcat::mcset es "Paper" "Papel" + ::msgcat::mcset es "Scale" "Escama" + ::msgcat::mcset es "Orientation" "Orientación" + ::msgcat::mcset es "Portrait" "Retrato" + ::msgcat::mcset es "Landscape" "Paisaje" + ::msgcat::mcset es "Output" "Salida" } \ No newline at end of file diff --git a/library/msgs/fr.msg b/library/msgs/fr.msg index 0d3ef08..cb4fdf2 100644 --- a/library/msgs/fr.msg +++ b/library/msgs/fr.msg @@ -72,19 +72,19 @@ namespace eval ::tk { } #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset fr "Print" "Imprimer" - ::msgcat::mcset fr "Printer" "Imprimante" - ::msgcat::mcset fr "Letter " "Lettre" - ::msgcat::mcset fr "Legal " "Légal" - ::msgcat::mcset fr "A4" "A4" - ::msgcat::mcset fr "Grayscale" "Niveaux de Gris" - ::msgcat::mcset fr "RGB" "RVB" - ::msgcat::mcset fr "Options" "Options" - ::msgcat::mcset fr "Copies" "Nombre d'exemplaires" - ::msgcat::mcset fr "Paper" "Papier" - ::msgcat::mcset fr "Scale" "Échelle" - ::msgcat::mcset fr "Orientation" "Orientation" - ::msgcat::mcset fr "Portrait" "Portrait" - ::msgcat::mcset fr "Landscape" "Paysage" - ::msgcat::mcset fr "Output" "Sortie" + ::msgcat::mcset fr "Print" "Imprimer" + ::msgcat::mcset fr "Printer" "Imprimante" + ::msgcat::mcset fr "Letter " "Lettre" + ::msgcat::mcset fr "Legal " "Légal" + ::msgcat::mcset fr "A4" "A4" + ::msgcat::mcset fr "Grayscale" "Niveaux de Gris" + ::msgcat::mcset fr "RGB" "RVB" + ::msgcat::mcset fr "Options" "Options" + ::msgcat::mcset fr "Copies" "Nombre d'exemplaires" + ::msgcat::mcset fr "Paper" "Papier" + ::msgcat::mcset fr "Scale" "Échelle" + ::msgcat::mcset fr "Orientation" "Orientation" + ::msgcat::mcset fr "Portrait" "Portrait" + ::msgcat::mcset fr "Landscape" "Paysage" + ::msgcat::mcset fr "Output" "Sortie" } \ No newline at end of file diff --git a/library/msgs/hu.msg b/library/msgs/hu.msg index 5c1d929..543d8bf 100644 --- a/library/msgs/hu.msg +++ b/library/msgs/hu.msg @@ -78,19 +78,19 @@ namespace eval ::tk { } #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset hu "Print" "Nyomtat" - ::msgcat::mcset hu "Printer" "Nyomtató" - ::msgcat::mcset hu "Letter " "Levél" - ::msgcat::mcset hu "Legal " "Törvényes" - ::msgcat::mcset hu "A4" "A4" - ::msgcat::mcset hu "Grayscale" "Szürkeárnyalatos" - ::msgcat::mcset hu "RGB" "Rgb" - ::msgcat::mcset hu "Options" "Beállítások" - ::msgcat::mcset hu "Copies" "Másolatok" - ::msgcat::mcset hu "Paper" "Papír" - ::msgcat::mcset hu "Scale" "Hangsor" - ::msgcat::mcset hu "Orientation" "Tájékozódás" - ::msgcat::mcset hu "Portrait" "Portré" - ::msgcat::mcset hu "Landscape" "Táj" - ::msgcat::mcset hu "Output" "Hozam" + ::msgcat::mcset hu "Print" "Nyomtat" + ::msgcat::mcset hu "Printer" "Nyomtató" + ::msgcat::mcset hu "Letter " "Levél" + ::msgcat::mcset hu "Legal " "Törvényes" + ::msgcat::mcset hu "A4" "A4" + ::msgcat::mcset hu "Grayscale" "Szürkeárnyalatos" + ::msgcat::mcset hu "RGB" "Rgb" + ::msgcat::mcset hu "Options" "Beállítások" + ::msgcat::mcset hu "Copies" "Másolatok" + ::msgcat::mcset hu "Paper" "Papír" + ::msgcat::mcset hu "Scale" "Hangsor" + ::msgcat::mcset hu "Orientation" "Tájékozódás" + ::msgcat::mcset hu "Portrait" "Portré" + ::msgcat::mcset hu "Landscape" "Táj" + ::msgcat::mcset hu "Output" "Hozam" } \ No newline at end of file diff --git a/library/msgs/it.msg b/library/msgs/it.msg index d7d9263..58bf5b0 100644 --- a/library/msgs/it.msg +++ b/library/msgs/it.msg @@ -73,19 +73,19 @@ namespace eval ::tk { } #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset it "Print" "Stampare" - ::msgcat::mcset it "Printer" "Stampante" - ::msgcat::mcset it "Letter " "Lettera" - ::msgcat::mcset it "Legal " "Legale" - ::msgcat::mcset it "A4" "A4" - ::msgcat::mcset it "Grayscale" "Scala Di Grigi" - ::msgcat::mcset it "RGB" "Rgb" - ::msgcat::mcset it "Options" "Opzioni" - ::msgcat::mcset it "Copies" "Copie" - ::msgcat::mcset it "Paper" "Carta" - ::msgcat::mcset it "Scale" "Scala" - ::msgcat::mcset it "Orientation" "Orientamento" - ::msgcat::mcset it "Portrait" "Ritratto" - ::msgcat::mcset it "Landscape" "Paesaggio" - ::msgcat::mcset it "Output" "Prodotto" + ::msgcat::mcset it "Print" "Stampare" + ::msgcat::mcset it "Printer" "Stampante" + ::msgcat::mcset it "Letter " "Lettera" + ::msgcat::mcset it "Legal " "Legale" + ::msgcat::mcset it "A4" "A4" + ::msgcat::mcset it "Grayscale" "Scala Di Grigi" + ::msgcat::mcset it "RGB" "Rgb" + ::msgcat::mcset it "Options" "Opzioni" + ::msgcat::mcset it "Copies" "Copie" + ::msgcat::mcset it "Paper" "Carta" + ::msgcat::mcset it "Scale" "Scala" + ::msgcat::mcset it "Orientation" "Orientamento" + ::msgcat::mcset it "Portrait" "Ritratto" + ::msgcat::mcset it "Landscape" "Paesaggio" + ::msgcat::mcset it "Output" "Prodotto" } \ No newline at end of file diff --git a/library/msgs/nl.msg b/library/msgs/nl.msg index b751824..576d780 100644 --- a/library/msgs/nl.msg +++ b/library/msgs/nl.msg @@ -91,19 +91,19 @@ namespace eval ::tk { } #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset nl "Print" "Afdrukken" - ::msgcat::mcset nl "Printer" "Printer" - ::msgcat::mcset nl "Letter " "Brief" - ::msgcat::mcset nl "Legal " "Legaal" - ::msgcat::mcset nl "A4" "A4" - ::msgcat::mcset nl "Grayscale" "Grijswaarden" - ::msgcat::mcset nl "RGB" "Rgb" - ::msgcat::mcset nl "Options" "Opties" - ::msgcat::mcset nl "Copies" "Kopieën" - ::msgcat::mcset nl "Paper" "Papier" - ::msgcat::mcset nl "Scale" "Schub" - ::msgcat::mcset nl "Orientation" "Oriëntatie" - ::msgcat::mcset nl "Portrait" "Portret" - ::msgcat::mcset nl "Landscape" "Landschap" - ::msgcat::mcset nl "Output" "Uitvoer" + ::msgcat::mcset nl "Print" "Afdrukken" + ::msgcat::mcset nl "Printer" "Printer" + ::msgcat::mcset nl "Letter " "Brief" + ::msgcat::mcset nl "Legal " "Legaal" + ::msgcat::mcset nl "A4" "A4" + ::msgcat::mcset nl "Grayscale" "Grijswaarden" + ::msgcat::mcset nl "RGB" "Rgb" + ::msgcat::mcset nl "Options" "Opties" + ::msgcat::mcset nl "Copies" "Kopieën" + ::msgcat::mcset nl "Paper" "Papier" + ::msgcat::mcset nl "Scale" "Schub" + ::msgcat::mcset nl "Orientation" "Oriëntatie" + ::msgcat::mcset nl "Portrait" "Portret" + ::msgcat::mcset nl "Landscape" "Landschap" + ::msgcat::mcset nl "Output" "Uitvoer" } \ No newline at end of file diff --git a/library/msgs/pl.msg b/library/msgs/pl.msg index d47b834..b367c01 100644 --- a/library/msgs/pl.msg +++ b/library/msgs/pl.msg @@ -91,19 +91,19 @@ namespace eval ::tk { } #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset pl "Print" "Drukować" - ::msgcat::mcset pl "Printer" "Drukarka" - ::msgcat::mcset pl "Letter " "Litera" - ::msgcat::mcset pl "Legal " "Legalny" - ::msgcat::mcset pl "A4" "A4" - ::msgcat::mcset pl "Grayscale" "Skala Szarości" - ::msgcat::mcset pl "RGB" "Rgb" - ::msgcat::mcset pl "Options" "Opcje" - ::msgcat::mcset pl "Copies" "Kopie" - ::msgcat::mcset pl "Paper" "Papier" - ::msgcat::mcset pl "Scale" "Skala" - ::msgcat::mcset pl "Orientation" "Orientacja" - ::msgcat::mcset pl "Portrait" "Portret" - ::msgcat::mcset pl "Landscape" "Krajobraz" - ::msgcat::mcset pl "Output" "Produkt Wyjściowy" + ::msgcat::mcset pl "Print" "Drukować" + ::msgcat::mcset pl "Printer" "Drukarka" + ::msgcat::mcset pl "Letter " "Litera" + ::msgcat::mcset pl "Legal " "Legalny" + ::msgcat::mcset pl "A4" "A4" + ::msgcat::mcset pl "Grayscale" "Skala Szarości" + ::msgcat::mcset pl "RGB" "Rgb" + ::msgcat::mcset pl "Options" "Opcje" + ::msgcat::mcset pl "Copies" "Kopie" + ::msgcat::mcset pl "Paper" "Papier" + ::msgcat::mcset pl "Scale" "Skala" + ::msgcat::mcset pl "Orientation" "Orientacja" + ::msgcat::mcset pl "Portrait" "Portret" + ::msgcat::mcset pl "Landscape" "Krajobraz" + ::msgcat::mcset pl "Output" "Produkt Wyjściowy" } \ No newline at end of file diff --git a/library/msgs/pt.msg b/library/msgs/pt.msg index d4fdfea..cbfc634 100644 --- a/library/msgs/pt.msg +++ b/library/msgs/pt.msg @@ -74,19 +74,19 @@ namespace eval ::tk { } #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset pt "Print" "Imprimir" - ::msgcat::mcset pt "Printer" "Impressora" - ::msgcat::mcset pt "Letter " "Letra" - ::msgcat::mcset pt "Legal " "Legal" - ::msgcat::mcset pt "A4" "A4" - ::msgcat::mcset pt "Grayscale" "Escala De Cinza" - ::msgcat::mcset pt "RGB" "Rgb" - ::msgcat::mcset pt "Options" "Opções" - ::msgcat::mcset pt "Copies" "Exemplares" - ::msgcat::mcset pt "Paper" "Papel" - ::msgcat::mcset pt "Scale" "Escala" - ::msgcat::mcset pt "Orientation" "Orientação" - ::msgcat::mcset pt "Portrait" "Retrato" - ::msgcat::mcset pt "Landscape" "Paisagem" - ::msgcat::mcset pt "Output" "Saída" + ::msgcat::mcset pt "Print" "Imprimir" + ::msgcat::mcset pt "Printer" "Impressora" + ::msgcat::mcset pt "Letter " "Letra" + ::msgcat::mcset pt "Legal " "Legal" + ::msgcat::mcset pt "A4" "A4" + ::msgcat::mcset pt "Grayscale" "Escala De Cinza" + ::msgcat::mcset pt "RGB" "Rgb" + ::msgcat::mcset pt "Options" "Opções" + ::msgcat::mcset pt "Copies" "Exemplares" + ::msgcat::mcset pt "Paper" "Papel" + ::msgcat::mcset pt "Scale" "Escala" + ::msgcat::mcset pt "Orientation" "Orientação" + ::msgcat::mcset pt "Portrait" "Retrato" + ::msgcat::mcset pt "Landscape" "Paisagem" + ::msgcat::mcset pt "Output" "Saída" } \ No newline at end of file diff --git a/library/msgs/ru.msg b/library/msgs/ru.msg index bd7c7b2..d72d42e 100644 --- a/library/msgs/ru.msg +++ b/library/msgs/ru.msg @@ -75,19 +75,19 @@ namespace eval ::tk { #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset ru "Print" "Печатать" - ::msgcat::mcset ru "Printer" "Принтер" - ::msgcat::mcset ru "Letter " "Письмо" - ::msgcat::mcset ru "Legal " "Законный" - ::msgcat::mcset ru "A4" "A4" - ::msgcat::mcset ru "Grayscale" "Серый Масштаб" - ::msgcat::mcset ru "RGB" "Ргб" - ::msgcat::mcset ru "Options" "Параметры" - ::msgcat::mcset ru "Copies" "Копии" - ::msgcat::mcset ru "Paper" "Бумага" - ::msgcat::mcset ru "Scale" "Шкала" - ::msgcat::mcset ru "Orientation" "Ориентация" - ::msgcat::mcset ru "Portrait" "Портрет" - ::msgcat::mcset ru "Landscape" "Ландшафт" - ::msgcat::mcset ru "Output" "Выпуск" + ::msgcat::mcset ru "Print" "Печатать" + ::msgcat::mcset ru "Printer" "Принтер" + ::msgcat::mcset ru "Letter " "Письмо" + ::msgcat::mcset ru "Legal " "Законный" + ::msgcat::mcset ru "A4" "A4" + ::msgcat::mcset ru "Grayscale" "Серый Масштаб" + ::msgcat::mcset ru "RGB" "Ргб" + ::msgcat::mcset ru "Options" "Параметры" + ::msgcat::mcset ru "Copies" "Копии" + ::msgcat::mcset ru "Paper" "Бумага" + ::msgcat::mcset ru "Scale" "Шкала" + ::msgcat::mcset ru "Orientation" "Ориентация" + ::msgcat::mcset ru "Portrait" "Портрет" + ::msgcat::mcset ru "Landscape" "Ландшафт" + ::msgcat::mcset ru "Output" "Выпуск" } \ No newline at end of file diff --git a/library/msgs/sv.msg b/library/msgs/sv.msg index 5858221..c49e01f 100644 --- a/library/msgs/sv.msg +++ b/library/msgs/sv.msg @@ -76,19 +76,19 @@ namespace eval ::tk { } #localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset sv "Print" "Trycka" - ::msgcat::mcset sv "Printer" "Skrivare" - ::msgcat::mcset sv "Letter " "Brev" - ::msgcat::mcset sv "Legal " "Laglig" - ::msgcat::mcset sv "A4" "A4 (På 199" - ::msgcat::mcset sv "Grayscale" "Gråskala" - ::msgcat::mcset sv "RGB" "Rgb" - ::msgcat::mcset sv "Options" "Alternativ" - ::msgcat::mcset sv "Copies" "Kopior" - ::msgcat::mcset sv "Paper" "Papper" - ::msgcat::mcset sv "Scale" "Skala" - ::msgcat::mcset sv "Orientation" "Orientering" - ::msgcat::mcset sv "Portrait" "Porträtt" - ::msgcat::mcset sv "Landscape" "Landskap" - ::msgcat::mcset sv "Output" "Utdata" + ::msgcat::mcset sv "Print" "Trycka" + ::msgcat::mcset sv "Printer" "Skrivare" + ::msgcat::mcset sv "Letter " "Brev" + ::msgcat::mcset sv "Legal " "Laglig" + ::msgcat::mcset sv "A4" "A4 (På 199" + ::msgcat::mcset sv "Grayscale" "Gråskala" + ::msgcat::mcset sv "RGB" "Rgb" + ::msgcat::mcset sv "Options" "Alternativ" + ::msgcat::mcset sv "Copies" "Kopior" + ::msgcat::mcset sv "Paper" "Papper" + ::msgcat::mcset sv "Scale" "Skala" + ::msgcat::mcset sv "Orientation" "Orientering" + ::msgcat::mcset sv "Portrait" "Porträtt" + ::msgcat::mcset sv "Landscape" "Landskap" + ::msgcat::mcset sv "Output" "Utdata" } \ No newline at end of file diff --git a/library/msgs/zh_cn.msg b/library/msgs/zh_cn.msg index 40367af..b699b67 100644 --- a/library/msgs/zh_cn.msg +++ b/library/msgs/zh_cn.msg @@ -92,19 +92,19 @@ namespace eval ::tk { #Kevin Walzer通过微软翻译对打印内容进行本地化 localization of print terms by Kevin Walzer via Microsoft Translator namespace eval ::tk { - ::msgcat::mcset zh_cn "Print" "输出" - ::msgcat::mcset zh_cn "Printer" "输出器" - ::msgcat::mcset zh_cn "Letter " "信 " - ::msgcat::mcset zh_cn "Legal " "合法的 " - ::msgcat::mcset zh_cn "A4" "A4" - ::msgcat::mcset zh_cn "Grayscale" "灰度" - ::msgcat::mcset zh_cn "RGB" "RGB" - ::msgcat::mcset zh_cn "Options" "设置" - ::msgcat::mcset zh_cn "Copies" "复制" - ::msgcat::mcset zh_cn "Paper" "纸" - ::msgcat::mcset zh_cn "Scale" "规模" - ::msgcat::mcset zh_cn "Orientation" "方向" - ::msgcat::mcset zh_cn "Portrait" "竖向" - ::msgcat::mcset zh_cn "Landscape" "横向" - ::msgcat::mcset zh_cn "Output" "输出" + ::msgcat::mcset zh_cn "Print" "输出" + ::msgcat::mcset zh_cn "Printer" "输出器" + ::msgcat::mcset zh_cn "Letter " "信 " + ::msgcat::mcset zh_cn "Legal " "合法的 " + ::msgcat::mcset zh_cn "A4" "A4" + ::msgcat::mcset zh_cn "Grayscale" "灰度" + ::msgcat::mcset zh_cn "RGB" "RGB" + ::msgcat::mcset zh_cn "Options" "设置" + ::msgcat::mcset zh_cn "Copies" "复制" + ::msgcat::mcset zh_cn "Paper" "纸" + ::msgcat::mcset zh_cn "Scale" "规模" + ::msgcat::mcset zh_cn "Orientation" "方向" + ::msgcat::mcset zh_cn "Portrait" "竖向" + ::msgcat::mcset zh_cn "Landscape" "横向" + ::msgcat::mcset zh_cn "Output" "输出" } \ No newline at end of file -- cgit v0.12 From e5b9589c31adba8e64aea7054478a257cc7399b0 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 16 Mar 2022 14:39:10 +0000 Subject: Remove finnish translations for strings not present in 8.6 (delivered msg-file was for 8.7) --- library/msgs/fi.msg | 31 +++---------------------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/library/msgs/fi.msg b/library/msgs/fi.msg index 4818b28..e014cce 100644 --- a/library/msgs/fi.msg +++ b/library/msgs/fi.msg @@ -1,13 +1,12 @@ namespace eval ::tk { - ::msgcat::mcset fi "AaBbYyZz01" "AaBb\u00c4\u00e4\u00d6\u00f601" ::msgcat::mcset fi "&Abort" "&Keskeyt\u00e4" ::msgcat::mcset fi "&About..." "&Tietoja..." ::msgcat::mcset fi "All Files" "Kaikki tiedostot" - ::msgcat::mcset fi "&Apply" "K\u00e4&yt\u00e4" ::msgcat::mcset fi "Application Error" "Ohjelmavirhe" - ::msgcat::mcset fi "&Blue" "&Sininen" + ::msgcat::mcset fi "&Apply" "K\u00e4&yt\u00e4" ::msgcat::mcset fi "Bold" "Lihavoitu" ::msgcat::mcset fi "Bold Italic" "Lihavoitu, kursivoitu" + ::msgcat::mcset fi "&Blue" "&Sininen" ::msgcat::mcset fi "Cancel" "Peruuta" ::msgcat::mcset fi "&Cancel" "&Peruuta" ::msgcat::mcset fi "Cannot change to the directory \"%1\$s\".\nPermission denied." "Ei voitu vaihtaa hakemistoon \"%1\$s\".\nLupa ev\u00e4tty." @@ -18,7 +17,6 @@ namespace eval ::tk { ::msgcat::mcset fi "Console" "Konsoli" ::msgcat::mcset fi "&Copy" "K&opioi" ::msgcat::mcset fi "Cu&t" "&Leikkaa" - ::msgcat::mcset fi "&Decrease Font Size" "&Pienenn\u00e4 kirjasinkokoa" ::msgcat::mcset fi "&Delete" "&Poista" ::msgcat::mcset fi "Details >>" "Lis\u00e4tiedot >>" ::msgcat::mcset fi "Directory \"%1\$s\" does not exist." "Hakemistoa \"%1\$s\" ei ole olemassa." @@ -37,19 +35,14 @@ namespace eval ::tk { ::msgcat::mcset fi "Fi&les:" "Ti&edostot:" ::msgcat::mcset fi "&Filter" "&Suodata" ::msgcat::mcset fi "Fil&ter:" "Suo&data:" - ::msgcat::mcset fi "Fit To Screen Width" "Sovita ruudun kokoon" ::msgcat::mcset fi "Font" "Kirjasin" - ::msgcat::mcset fi "&Font..." "Kir&jasin..." ::msgcat::mcset fi "&Font:" "&Kirjasin:" ::msgcat::mcset fi "Font st&yle:" "Kirjasint&yyli:" ::msgcat::mcset fi "&Green" "&Vihre\u00e4" - ::msgcat::mcset fi "Help" "Ohje" ::msgcat::mcset fi "&Help" "&Ohje" ::msgcat::mcset fi "Hi" "Hei" ::msgcat::mcset fi "&Hide Console" "P&iilota konsoli" - ::msgcat::mcset fi "Hide Fonts" "Piilota kirjasimet" ::msgcat::mcset fi "&Ignore" "&Ohita" - ::msgcat::mcset fi "&Increase Font Size" "&Suurenna kirjasinkokoa" ::msgcat::mcset fi "Invalid file name \"%1\$s\"." "Virheellinen tiedostonimi \"%1\$s\"." ::msgcat::mcset fi "Italic" "Kursivoitu" ::msgcat::mcset fi "Log Files" "Lokitiedostot" @@ -73,16 +66,14 @@ namespace eval ::tk { ::msgcat::mcset fi "Select Log File" "Valitse lokitiedosto" ::msgcat::mcset fi "Select a file to source" "Valitse l\u00e4hdetiedosto" ::msgcat::mcset fi "&Selection:" "&Valinta:" - ::msgcat::mcset fi "Show Fonts" "N\u00e4yt\u00e4 kirjasimet" - ::msgcat::mcset fi "Skip Messages" "J\u00e4t\u00e4 viestit huomiotta" ::msgcat::mcset fi "&Size:" "K&oko:" + ::msgcat::mcset fi "Skip Messages" "J\u00e4t\u00e4 viestit huomiotta" ::msgcat::mcset fi "&Source..." "L&\u00e4hde..." ::msgcat::mcset fi "Stri&keout" "&Yliviivaa" ::msgcat::mcset fi "Tcl Scripts" "Tcl-skriptit" ::msgcat::mcset fi "Tcl for Windows" "Tcl Windowsille" ::msgcat::mcset fi "Text Files" "Tekstitiedostot" ::msgcat::mcset fi "&Underline" "&Alleviivaa" - ::msgcat::mcset fi "Window" "Ikkuna" ::msgcat::mcset fi "&Yes" "&Kyll\u00e4" ::msgcat::mcset fi "abort" "keskeyt\u00e4" ::msgcat::mcset fi "blue" "sininen" @@ -95,20 +86,4 @@ namespace eval ::tk { ::msgcat::mcset fi "red" "punainen" ::msgcat::mcset fi "retry" "yrit\u00e4 uudelleen" ::msgcat::mcset fi "yes" "kyll\u00e4" - - ::msgcat::mcset fi "Print" "Tulosta" - ::msgcat::mcset fi "Printer" "Tulostin" - ::msgcat::mcset fi "Letter " "Letter" - ::msgcat::mcset fi "Legal " "Legal" - ::msgcat::mcset fi "A4" "A4" - ::msgcat::mcset fi "Grayscale" "Harmaas\u00e4vy" - ::msgcat::mcset fi "RGB" "RGB" - ::msgcat::mcset fi "Options" "Asetukset" - ::msgcat::mcset fi "Copies" "Tulosteita" - ::msgcat::mcset fi "Paper" "Paperikoko" - ::msgcat::mcset fi "Scale" "Skaalaus" - ::msgcat::mcset fi "Orientation" "Suunta" - ::msgcat::mcset fi "Portrait" "Pysty" - ::msgcat::mcset fi "Landscape" "Vaaka" - ::msgcat::mcset fi "Output" "Tulos" } -- cgit v0.12 From 663171632ff30a634db7fceec2fe953bf083739a Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 16 Mar 2022 14:39:56 +0000 Subject: Eliminate some write-only variables in MacOSX --- macosx/tkMacOSXKeyboard.c | 4 ++-- macosx/tkMacOSXMenu.c | 4 +--- macosx/tkMacOSXMenubutton.c | 4 ---- macosx/tkMacOSXScrlbr.c | 3 +-- macosx/tkMacOSXWm.c | 2 -- 5 files changed, 4 insertions(+), 13 deletions(-) diff --git a/macosx/tkMacOSXKeyboard.c b/macosx/tkMacOSXKeyboard.c index 9aca9e1..fe2991e 100644 --- a/macosx/tkMacOSXKeyboard.c +++ b/macosx/tkMacOSXKeyboard.c @@ -273,9 +273,9 @@ UpdateKeymaps() for (virt = 0; virt < 128; virt++) { MacKeycode macKC; macKC.v = (keycode_v) {.virt = virt, .o_s = index, .keychar = 0}; - int modifiers = INDEX2CARBON(index), result; + int modifiers = INDEX2CARBON(index); UniChar keychar = 0; - result = KeyDataToUnicode(&keychar, 1, kUCKeyActionDown, virt, + KeyDataToUnicode(&keychar, 1, kUCKeyActionDown, virt, modifiers, NULL); if (keychar == 0x10) { diff --git a/macosx/tkMacOSXMenu.c b/macosx/tkMacOSXMenu.c index 09d91f0..89ca315 100644 --- a/macosx/tkMacOSXMenu.c +++ b/macosx/tkMacOSXMenu.c @@ -1369,7 +1369,7 @@ TkpComputeStandardMenuGeometry( { NSSize menuSize; Tk_Font tkfont, menuFont; - Tk_FontMetrics menuMetrics, entryMetrics, *fmPtr; + Tk_FontMetrics menuMetrics, entryMetrics; int modifierCharWidth, menuModifierCharWidth; int x, y, modifierWidth, labelWidth, indicatorSpace; int windowWidth, windowHeight, accelWidth; @@ -1424,12 +1424,10 @@ TkpComputeStandardMenuGeometry( } if (mePtr->fontPtr == NULL) { tkfont = menuFont; - fmPtr = &menuMetrics; modifierCharWidth = menuModifierCharWidth; } else { tkfont = Tk_GetFontFromObj(menuPtr->tkwin, mePtr->fontPtr); Tk_GetFontMetrics(tkfont, &entryMetrics); - fmPtr = &entryMetrics; modifierCharWidth = ModifierCharWidth(tkfont); } accelWidth = modifierWidth = indicatorSpace = 0; diff --git a/macosx/tkMacOSXMenubutton.c b/macosx/tkMacOSXMenubutton.c index 6291596..03709ce 100644 --- a/macosx/tkMacOSXMenubutton.c +++ b/macosx/tkMacOSXMenubutton.c @@ -375,7 +375,6 @@ DrawMenuButtonImageAndText( Tk_Window tkwin = butPtr->tkwin; Pixmap pixmap; int haveImage = 0, haveText = 0; - int imageWidth = 0, imageHeight = 0; int imageXOffset = 0, imageYOffset = 0; int textXOffset = 0, textYOffset = 0; int width = 0, height = 0; @@ -396,9 +395,6 @@ DrawMenuButtonImageAndText( haveImage = 1; } - imageWidth = width; - imageHeight = height; - haveText = (butPtr->textWidth != 0 && butPtr->textHeight != 0); if (butPtr->compound != COMPOUND_NONE && haveImage && haveText) { int x = 0, y = 0; diff --git a/macosx/tkMacOSXScrlbr.c b/macosx/tkMacOSXScrlbr.c index b6e3298..5cb8e03 100644 --- a/macosx/tkMacOSXScrlbr.c +++ b/macosx/tkMacOSXScrlbr.c @@ -592,7 +592,7 @@ UpdateControlValues( MacDrawable *macWin = (MacDrawable *)Tk_WindowId(scrollPtr->tkwin); double dViewSize; HIRect contrlRect; - short width, height; + short height; NSView *view = TkMacOSXGetNSViewForDrawable(macWin); CGFloat viewHeight = [view bounds].size.height; @@ -606,7 +606,6 @@ UpdateControlValues( contrlRect = NSRectToCGRect(frame); msPtr->info.bounds = contrlRect; - width = contrlRect.size.width; height = contrlRect.size.height - scrollPtr->arrowLength; /* diff --git a/macosx/tkMacOSXWm.c b/macosx/tkMacOSXWm.c index 11b3251..1bf62d9 100644 --- a/macosx/tkMacOSXWm.c +++ b/macosx/tkMacOSXWm.c @@ -4856,14 +4856,12 @@ Tk_TopCoordsToWindow( TkWindow *nextPtr; /* Coordinates of highest child found so far * that contains point. */ int x, y; /* Coordinates in winPtr. */ - Window *children; /* Children of winPtr, or NULL. */ winPtr = (TkWindow *)tkwin; x = rootX; y = rootY; while (1) { nextPtr = NULL; - children = NULL; /* * Container windows cannot have children. So if it is a container, -- cgit v0.12 From 151ab3e6c1878832aac01e2c843d6771c2052901 Mon Sep 17 00:00:00 2001 From: fvogel Date: Sat, 19 Mar 2022 11:15:25 +0000 Subject: Correct legacy comment no longer exact. Since TIP #532 the PAT_NEARBY define was removed. --- generic/tkBind.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generic/tkBind.c b/generic/tkBind.c index 7873d29..e8db70b 100644 --- a/generic/tkBind.c +++ b/generic/tkBind.c @@ -332,7 +332,7 @@ typedef struct PatSeq { /* * Constants that define how close together two events must be in milliseconds - * or pixels to meet the PAT_NEARBY constraint: + * or pixels to be considered close in space or time. */ #define NEARBY_PIXELS 5 -- cgit v0.12 From 3aa5a3b049995a30bba527275f4a52d1885409d1 Mon Sep 17 00:00:00 2001 From: fvogel Date: Sun, 20 Mar 2022 00:41:27 +0000 Subject: Fix error in [df2353f2]: PARENT_RECONFIG_PENDING is a container flag, not a content flag. --- generic/tkPlace.c | 2 +- tests/canvWind.test | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/generic/tkPlace.c b/generic/tkPlace.c index 108097c..3c47476 100644 --- a/generic/tkPlace.c +++ b/generic/tkPlace.c @@ -426,7 +426,7 @@ static void FreeContent( Content *contentPtr) { - if (contentPtr->flags & PARENT_RECONFIG_PENDING) { + if (contentPtr->containerPtr && (contentPtr->containerPtr->flags & PARENT_RECONFIG_PENDING)) { Tcl_CancelIdleCall(RecomputePlacement, contentPtr); } Tk_FreeConfigOptions((char *) contentPtr, contentPtr->optionTable, diff --git a/tests/canvWind.test b/tests/canvWind.test index 9777427..750321e 100644 --- a/tests/canvWind.test +++ b/tests/canvWind.test @@ -139,7 +139,7 @@ test canvWind-1.4 {DisplayWinItem, windows off-screen horizontally} -setup { destroy .t } -result {{1 3} {1 -79} {0 -79} {1 255} {0 255}} -test canvWind-2.1 {DisplayWinItem, window gets destroyed duing } -setup { +test canvWind-2.1 {DisplayWinItem, window gets destroyed during } -setup { destroy .t } -body { toplevel .t @@ -149,7 +149,7 @@ test canvWind-2.1 {DisplayWinItem, window gets destroyed duing } -set set id [.t.c create window 50 50 -window .t.c.f] update bind .t.c.f {destroy .t.c.f} - .t.c coords $id 60 60 ; # crashes! + .t.c coords $id 60 60 ; # was crashing update } -cleanup { destroy .t -- cgit v0.12 From 653e9034912b1b926e4385b0c62700dd179e1033 Mon Sep 17 00:00:00 2001 From: fvogel Date: Sun, 20 Mar 2022 09:31:51 +0000 Subject: Oops. I think this time I get it right. --- generic/tkPlace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generic/tkPlace.c b/generic/tkPlace.c index 3c47476..3212a58 100644 --- a/generic/tkPlace.c +++ b/generic/tkPlace.c @@ -427,7 +427,7 @@ FreeContent( Content *contentPtr) { if (contentPtr->containerPtr && (contentPtr->containerPtr->flags & PARENT_RECONFIG_PENDING)) { - Tcl_CancelIdleCall(RecomputePlacement, contentPtr); + Tcl_CancelIdleCall(RecomputePlacement, contentPtr->containerPtr); } Tk_FreeConfigOptions((char *) contentPtr, contentPtr->optionTable, contentPtr->tkwin); -- cgit v0.12 From 6c49fd113754664017ed71daef94d08e71346e9c Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Sun, 20 Mar 2022 21:30:08 +0000 Subject: Fix testcase main-2.2 after TIP #601 --- tests/main.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/main.test b/tests/main.test index 29725de..6b9f598 100644 --- a/tests/main.test +++ b/tests/main.test @@ -45,7 +45,7 @@ test main-2.2 {Tk_MainEx: -encoding option} -constraints stdio -setup { puts $f {puts [list $argv0 $argv $tcl_interactive]} puts $f {puts [string equal \u20AC €]; exit} close $f - catch {set f [open "|[list [interpreter] -encoding ascii script]" r]} + catch {set f [open "|[list [interpreter] -encoding iso8859-1 script]" r]} } -body { read $f } -cleanup { -- cgit v0.12 From 689cf0354d07b2dd98217e9f836cf734e9f5741e Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 22 Mar 2022 00:11:13 +0000 Subject: Eliminate some compiler warnings --- generic/ttk/ttkTreeview.c | 4 ++-- macosx/tkMacOSXColor.c | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/generic/ttk/ttkTreeview.c b/generic/ttk/ttkTreeview.c index d389bb9..1a300d2 100644 --- a/generic/ttk/ttkTreeview.c +++ b/generic/ttk/ttkTreeview.c @@ -1377,7 +1377,7 @@ TreeviewConfigure(Tcl_Interp *interp, void *recordPtr, int mask) if (mask & COLUMNS_CHANGED) { CellSelectionClear(tv); } - if (tv->tree.nTitleColumns < 0) { + if (tv->tree.nTitleColumns == TCL_INDEX_NONE) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "\"#%" TKSIZET_MODIFIER "u\" is out of range", tv->tree.nTitleColumns)); @@ -2868,7 +2868,7 @@ static int TreeviewIdentifyCommand( break; case I_CELL : - if (item && colno >= 0) { + if (item && colno != TCL_INDEX_NONE) { Tcl_Obj *elem[2]; elem[0] = ItemID(tv, item); elem[1] = Tcl_ObjPrintf("#%" TKSIZET_MODIFIER "u", colno); diff --git a/macosx/tkMacOSXColor.c b/macosx/tkMacOSXColor.c index 135003d..ffb520d 100644 --- a/macosx/tkMacOSXColor.c +++ b/macosx/tkMacOSXColor.c @@ -592,11 +592,10 @@ TkpGetColor( Colormap colormap = tkwin ? Tk_Colormap(tkwin) : noColormap; NSView *view = nil; static Bool initialized = NO; - static NSColorSpace* sRGB = nil; if (!initialized) { initialized = YES; - sRGB = [NSColorSpace sRGBColorSpace]; + (void)[NSColorSpace sRGBColorSpace]; initColorTable(); } if (tkwin) { -- cgit v0.12 From 95307707624282431bdd31fa81ec53bf0a39f4e2 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 22 Mar 2022 08:44:36 +0000 Subject: Correct character counting bug in tkTextIndex.c, when TCL_UTF_MAX=3 --- generic/tkTextIndex.c | 31 ++++++++++++++++++------------- generic/ttk/ttkEntry.c | 2 +- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/generic/tkTextIndex.c b/generic/tkTextIndex.c index 82a1392..c8b0722 100644 --- a/generic/tkTextIndex.c +++ b/generic/tkTextIndex.c @@ -2196,7 +2196,12 @@ TkTextIndexBackChars( if (p == start) { break; } - charCount--; + if ((sizeof(Tcl_UniChar) == 2) && (unsigned)(UCHAR(*p) - 0xF0) <= 5) { + charCount--; /* Characters > U+FFFF count as 2 here */ + } + if (charCount != 0) { + charCount--; + } } } else { if (type & COUNT_INDICES) { @@ -2434,18 +2439,18 @@ StartEnd( } firstChar = 0; } - if (offset == 0) { - if (modifier == TKINDEX_DISPLAY) { - TkTextIndexBackChars(textPtr, indexPtr, 1, indexPtr, - COUNT_DISPLAY_INDICES); - } else { - TkTextIndexBackChars(NULL, indexPtr, 1, indexPtr, - COUNT_INDICES); - } - } else { - indexPtr->byteIndex -= chSize; - } - offset -= chSize; + if (offset == 0) { + if (modifier == TKINDEX_DISPLAY) { + TkTextIndexBackChars(textPtr, indexPtr, 1, indexPtr, + COUNT_DISPLAY_INDICES); + } else { + TkTextIndexBackChars(NULL, indexPtr, 1, indexPtr, + COUNT_INDICES); + } + } else { + indexPtr->byteIndex -= chSize; + } + offset -= chSize; if ((int)offset < 0) { if (indexPtr->byteIndex == 0) { goto done; diff --git a/generic/ttk/ttkEntry.c b/generic/ttk/ttkEntry.c index b0502a4..19732ed 100644 --- a/generic/ttk/ttkEntry.c +++ b/generic/ttk/ttkEntry.c @@ -1308,7 +1308,7 @@ static void EntryDisplay(void *clientData, Drawable d) if (Tcl_GetCharLength(es.placeholderForegroundObj) > 0) { foregroundObj = es.placeholderForegroundObj; } else { - foregroundObj = es.foregroundObj; + foregroundObj = es.foregroundObj; } /* Use placeholder text width */ leftIndex = 0; -- cgit v0.12 From 5bd78cfca346842e144fdf137c3f45fdb085c9ac Mon Sep 17 00:00:00 2001 From: pspjuth Date: Thu, 24 Mar 2022 22:34:26 +0000 Subject: Fix bugs in treeview's "tag cell has" command. --- generic/ttk/ttkTreeview.c | 9 ++++++--- tests/ttk/treetags.test | 11 +++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/generic/ttk/ttkTreeview.c b/generic/ttk/ttkTreeview.c index 1a300d2..2fc70c3 100644 --- a/generic/ttk/ttkTreeview.c +++ b/generic/ttk/ttkTreeview.c @@ -4049,7 +4049,7 @@ static int TreeviewCtagHasCommand( } else if (objc == 6) { /* Test if cell has specified tag */ Ttk_Tag tag = Ttk_GetTagFromObj(tv->tree.tagTable, objv[4]); int result = 0; - if (GetCellFromObj(interp, tv, objv[4], 0, NULL, &cell) != TCL_OK) { + if (GetCellFromObj(interp, tv, objv[5], 0, NULL, &cell) != TCL_OK) { return TCL_ERROR; } if (cell.column == &tv->tree.column0) { @@ -4058,8 +4058,11 @@ static int TreeviewCtagHasCommand( columnNumber = cell.column - tv->tree.columns + 1; } if (columnNumber < cell.item->nTagSets) { - result = Ttk_TagSetContains(cell.item->cellTagSets[columnNumber], - tag); + if (cell.item->cellTagSets[columnNumber] != NULL) { + result = Ttk_TagSetContains( + cell.item->cellTagSets[columnNumber], + tag); + } } Tcl_SetObjResult(interp, Tcl_NewWideIntObj(result)); diff --git a/tests/ttk/treetags.test b/tests/ttk/treetags.test index a7f9cc3..62143a2 100644 --- a/tests/ttk/treetags.test +++ b/tests/ttk/treetags.test @@ -207,6 +207,17 @@ test treetags-4.3 "tag cell has" -body { $tv tag cell has } -returnCodes 1 -result {wrong # args: should be ".tv tag cell has tagName ?cell?"} +test treetags-4.3.1 "tag cell has" -body { + $tv tag cell add tag1 "item1 #2" + set res [$tv tag cell has tag1 "item1 #2"] + lappend res [$tv tag cell has tag1 "item1 #1"] + lappend res [$tv tag cell has tag1 "item1 #3"] + lappend res {*}[$tv tag cell has tag1] + $tv tag cell remove tag1 "item1 B" + lappend res {*}[$tv tag cell has tag1] + lappend res [$tv tag cell has tag1 "item1 #2"] +} -result {1 0 0 {item1 B} 0} + test treetags-4.4 "tag cell add" -body { $tv tag cell add tag1 "item1 A" $tv tag cell add tag1 "item1 #3" -- cgit v0.12 From 332a310b88f7e2df121be42967755bc600f2c1b2 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Fri, 25 Mar 2022 08:43:55 +0000 Subject: Mark two testcases as "knownBug". See [https://core.tcl-lang.org/tcl/tktview?name=c5348d22c|c5348d22c] --- tests/font.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/font.test b/tests/font.test index 77639f6..dca3106 100644 --- a/tests/font.test +++ b/tests/font.test @@ -156,13 +156,13 @@ test font-4.12 {font command: actual} -body { test font-4.13 {font command: actual} -body { font actual {-family times} -- \uDC00 } -match glob -result {*} -test font-4.14 {font command: actual} -constraints {utfcompat win} -body { +test font-4.14 {font command: actual} -constraints {utfcompat win knownBug} -body { font actual {-family times} -family -- \uD800\uDC00 } -result {times} test font-4.15 {font command: actual} -body { font actual {-family times} -- \uDC00\uD800 } -returnCodes 1 -match glob -result {expected a single character but got "*"} -test font-4.16 {font command: actual} -constraints {fullutf win} -body { +test font-4.16 {font command: actual} -constraints {fullutf win knownBug} -body { font actual {-family times} -family -- \U10000 } -result {times} -- cgit v0.12 From d7354274f34de595efa76a3ce4a5f3225ef176c4 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Fri, 1 Apr 2022 13:03:07 +0000 Subject: Eliminate compile warnings, due to the usage of Tcl_ExternalToUtfDString()/Tcl_UtfTExternalDString() macro's in Tcl 9.0 --- generic/tkClipboard.c | 2 +- generic/tkFileFilter.c | 4 ++-- generic/tkInt.h | 13 +++++++++++-- generic/tkMain.c | 4 ++-- generic/ttk/ttkTreeview.c | 2 +- macosx/tkMacOSXBitmap.c | 4 ++-- macosx/tkMacOSXHLEvents.c | 3 ++- unix/tkUnixFont.c | 12 ++++++------ unix/tkUnixKey.c | 2 +- unix/tkUnixSelect.c | 4 ++-- unix/tkUnixSysNotify.c | 4 ++-- unix/tkUnixWm.c | 18 +++++++++--------- win/tkWinClipboard.c | 2 +- win/tkWinFont.c | 16 ++++++++-------- win/tkWinKey.c | 4 ++-- win/tkWinTest.c | 4 ++-- 16 files changed, 54 insertions(+), 44 deletions(-) diff --git a/generic/tkClipboard.c b/generic/tkClipboard.c index 1f4298d..2bf13ff 100644 --- a/generic/tkClipboard.c +++ b/generic/tkClipboard.c @@ -712,7 +712,7 @@ ClipboardGetProc( Tcl_Encoding utf8 = Tcl_GetEncoding(NULL, "utf-8"); Tcl_DString ds; - Tcl_ExternalToUtfDString(utf8, portion, -1, &ds); + Tcl_ExternalToUtfDStringEx(utf8, portion, -1, TCL_ENCODING_NOCOMPLAIN, &ds); Tcl_DStringAppend((Tcl_DString *) clientData, Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)); Tcl_DStringFree(&ds); Tcl_FreeEncoding(utf8); diff --git a/generic/tkFileFilter.c b/generic/tkFileFilter.c index 8a84f8e..99eb626 100644 --- a/generic/tkFileFilter.c +++ b/generic/tkFileFilter.c @@ -286,7 +286,7 @@ AddClause( * be 4 macRoman characters long */ - Tcl_UtfToExternalDString(macRoman, strType, len, &osTypeDS); + Tcl_UtfToExternalDStringEx(macRoman, strType, len, TCL_ENCODING_NOCOMPLAIN, &osTypeDS); len = Tcl_DStringLength(&osTypeDS); Tcl_DStringFree(&osTypeDS); } @@ -385,7 +385,7 @@ AddClause( * macRoman characters long */ - Tcl_UtfToExternalDString(macRoman, strType, len, &osTypeDS); + Tcl_UtfToExternalDStringEx(macRoman, strType, len, TCL_ENCODING_NOCOMPLAIN, &osTypeDS); string = Tcl_DStringValue(&osTypeDS); mfPtr->type = (OSType) string[0] << 24 | (OSType) string[1] << 16 | (OSType) string[2] << 8 | (OSType) string[3]; diff --git a/generic/tkInt.h b/generic/tkInt.h index f1f3fa1..38f830a 100644 --- a/generic/tkInt.h +++ b/generic/tkInt.h @@ -94,8 +94,17 @@ # define TKFLEXARRAY 1 #endif -#if !defined(Tcl_GetParent) && (TCL_MAJOR_VERSION < 9) && (TCL_MINOR_VERSION < 7) -# define Tcl_GetParent Tcl_GetMaster +#if TCL_MAJOR_VERSION < 9 +# undef Tcl_ExternalToUtfDStringEx +# undef Tcl_UtfToExternalDStringEx + /* just assume 'flags' is TCL_ENCODING_NOCOMPLAIN, and return value not used. */ +# define Tcl_ExternalToUtfDStringEx(encoding, data, length, flags, ds) \ + (void)Tcl_ExternalToUtfDString(encoding, data, length, ds) +# define Tcl_UtfToExternalDStringEx(encoding, data, length, flags, ds) \ + (void)Tcl_UtfToExternalDString(encoding, data, length, ds) +# if !defined(Tcl_GetParent) && (TCL_MINOR_VERSION < 7) +# define Tcl_GetParent Tcl_GetMaster +# endif #endif /* diff --git a/generic/tkMain.c b/generic/tkMain.c index 6c8b5e2..0c93b70 100644 --- a/generic/tkMain.c +++ b/generic/tkMain.c @@ -71,7 +71,7 @@ NewNativeObj( Tcl_DStringInit(&ds); Tcl_WCharToUtfDString(string, wcslen(string), &ds); #else - Tcl_ExternalToUtfDString(NULL, (char *)string, -1, &ds); + Tcl_ExternalToUtfDStringEx(NULL, (char *)string, -1, TCL_ENCODING_NOCOMPLAIN, &ds); #endif obj = Tcl_NewStringObj(Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)); Tcl_DStringFree(&ds); @@ -80,7 +80,7 @@ NewNativeObj( /* * Declarations for various library functions and variables (don't want to - * include tkInt.h or tkPort.h here, because people might copy this file out + * include tclInt.h or tclPort.h here, because people might copy this file out * of the Tk source directory to make their own modified versions). Note: do * not declare "exit" here even though a declaration is really needed, because * it will conflict with a declaration elsewhere on some systems. diff --git a/generic/ttk/ttkTreeview.c b/generic/ttk/ttkTreeview.c index 2fc70c3..52fa4ae 100644 --- a/generic/ttk/ttkTreeview.c +++ b/generic/ttk/ttkTreeview.c @@ -2741,7 +2741,7 @@ static int TreeviewHorribleIdentify( TreeItem *item = 0; Tcl_Obj *result; TkSizeT dColumnNumber; - char dcolbuf[16]; + char dcolbuf[32]; int x, y, x1; (void)objc; diff --git a/macosx/tkMacOSXBitmap.c b/macosx/tkMacOSXBitmap.c index b5652b7..4c6f31a 100644 --- a/macosx/tkMacOSXBitmap.c +++ b/macosx/tkMacOSXBitmap.c @@ -205,7 +205,7 @@ OSTypeFromString(const char *s, OSType *t) { Tcl_DString ds; Tcl_Encoding encoding = Tcl_GetEncoding(NULL, "macRoman"); - Tcl_UtfToExternalDString(encoding, s, -1, &ds); + Tcl_UtfToExternalDStringEx(encoding, s, -1, TCL_ENCODING_NOCOMPLAIN, &ds); if (Tcl_DStringLength(&ds) <= 4) { char string[4] = {}; memcpy(string, Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)); @@ -384,7 +384,7 @@ TkMacOSXIconBitmapObjCmd( Tcl_DString ds; Tcl_Encoding encoding = Tcl_GetEncoding(NULL, "macRoman"); - Tcl_UtfToExternalDString(encoding, value, -1, &ds); + Tcl_UtfToExternalDStringEx(encoding, value, -1, TCL_ENCODING_NOCOMPLAIN, &ds); len = Tcl_DStringLength(&ds); Tcl_DStringFree(&ds); Tcl_FreeEncoding(encoding); diff --git a/macosx/tkMacOSXHLEvents.c b/macosx/tkMacOSXHLEvents.c index e781dff..ef6237e 100644 --- a/macosx/tkMacOSXHLEvents.c +++ b/macosx/tkMacOSXHLEvents.c @@ -227,7 +227,8 @@ static const char getSdefProc[] = "::tk::mac::GetDynamicSdef"; if (fileURL == nil) { continue; } - Tcl_ExternalToUtfDString(utf8, [[fileURL path] UTF8String], -1, &pathName); + Tcl_ExternalToUtfDStringEx(utf8, [[fileURL path] UTF8String], -1, + TCL_ENCODING_NOCOMPLAIN, &pathName); Tcl_DStringAppendElement(openCommand, Tcl_DStringValue(&pathName)); Tcl_DStringFree(&pathName); } diff --git a/unix/tkUnixFont.c b/unix/tkUnixFont.c index 8987749..6ef43b7 100644 --- a/unix/tkUnixFont.c +++ b/unix/tkUnixFont.c @@ -1064,8 +1064,8 @@ Tk_MeasureChars( thisSubFontPtr = FindSubFontForChar(fontPtr, ch, &lastSubFontPtr); if (thisSubFontPtr != lastSubFontPtr) { familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDString(familyPtr->encoding, source, - p - source, &runString); + Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, + TCL_ENCODING_NOCOMPLAIN, p - source, &runString); if (familyPtr->isTwoByteFont) { curX += XTextWidth16(lastSubFontPtr->fontStructPtr, (XChar2b *) Tcl_DStringValue(&runString), @@ -1082,8 +1082,8 @@ Tk_MeasureChars( p = next; } familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDString(familyPtr->encoding, source, p - source, - &runString); + Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, p - source, + TCL_ENCODING_NOCOMPLAIN, &runString); if (familyPtr->isTwoByteFont) { curX += XTextWidth16(lastSubFontPtr->fontStructPtr, (XChar2b *) Tcl_DStringValue(&runString), @@ -1331,8 +1331,8 @@ Tk_DrawChars( do_width = (needWidth || (p != end)) ? 1 : 0; familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDString(familyPtr->encoding, source, - p - source, &runString); + Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, + p - source, TCL_ENCODING_NOCOMPLAIN, &runString); if (familyPtr->isTwoByteFont) { XDrawString16(display, drawable, gc, x, y, (XChar2b *) Tcl_DStringValue(&runString), diff --git a/unix/tkUnixKey.c b/unix/tkUnixKey.c index fe0a9a9..008030a 100644 --- a/unix/tkUnixKey.c +++ b/unix/tkUnixKey.c @@ -175,7 +175,7 @@ TkpGetString( len = 0; } Tcl_DStringSetLength(&buf, len); - Tcl_ExternalToUtfDString(NULL, Tcl_DStringValue(&buf), len, dsPtr); + Tcl_ExternalToUtfDStringEx(NULL, Tcl_DStringValue(&buf), len, TCL_ENCODING_NOCOMPLAIN, dsPtr); Tcl_DStringFree(&buf); #endif /* X_HAVE_UTF8_STRING */ } else diff --git a/unix/tkUnixSelect.c b/unix/tkUnixSelect.c index 92c30c9..29a7b2e 100644 --- a/unix/tkUnixSelect.c +++ b/unix/tkUnixSelect.c @@ -620,7 +620,7 @@ TkSelEventProc( } else { encoding = Tcl_GetEncoding(NULL, "iso8859-1"); } - Tcl_ExternalToUtfDString(encoding, propInfo, (int)numItems, &ds); + Tcl_ExternalToUtfDStringEx(encoding, propInfo, numItems, TCL_ENCODING_NOCOMPLAIN, &ds); if (encoding) { Tcl_FreeEncoding(encoding); } @@ -995,7 +995,7 @@ ConvertSelection( } else { encoding = Tcl_GetEncoding(NULL, "iso2022"); } - Tcl_UtfToExternalDString(encoding, (char *) buffer, -1, &ds); + Tcl_UtfToExternalDStringEx(encoding, (char *) buffer, -1, TCL_ENCODING_NOCOMPLAIN, &ds); XChangeProperty(reply.xsel.display, reply.xsel.requestor, property, type, 8, PropModeReplace, (unsigned char *) Tcl_DStringValue(&ds), diff --git a/unix/tkUnixSysNotify.c b/unix/tkUnixSysNotify.c index 3985f0e..cb9606c 100755 --- a/unix/tkUnixSysNotify.c +++ b/unix/tkUnixSysNotify.c @@ -145,8 +145,8 @@ SysNotifyCmd( Tcl_DStringInit(&dst); Tcl_DStringInit(&dsm); enc = Tcl_GetEncoding(NULL, "utf-8"); - Tcl_UtfToExternalDString(enc, title, -1, &dst); - Tcl_UtfToExternalDString(enc, message, -1, &dsm); + Tcl_UtfToExternalDStringEx(enc, title, -1, TCL_ENCODING_NOCOMPLAIN, &dst); + Tcl_UtfToExternalDStringEx(enc, message, -1, TCL_ENCODING_NOCOMPLAIN, &dsm); notify_init(appname); notif = notify_notification_new(Tcl_DStringValue(&dst), Tcl_DStringValue(&dsm), icon, NULL); diff --git a/unix/tkUnixWm.c b/unix/tkUnixWm.c index 173fd68..e57c586 100644 --- a/unix/tkUnixWm.c +++ b/unix/tkUnixWm.c @@ -713,7 +713,7 @@ TkWmMapWindow( UpdateCommand(winPtr); } if (wmPtr->clientMachine != NULL) { - Tcl_UtfToExternalDString(NULL, wmPtr->clientMachine, -1, &ds); + Tcl_UtfToExternalDStringEx(NULL, wmPtr->clientMachine, -1, TCL_ENCODING_NOCOMPLAIN, &ds); if (XStringListToTextProperty(&(Tcl_DStringValue(&ds)), 1, &textProp) != 0) { unsigned long pid = (unsigned long) getpid(); @@ -985,8 +985,8 @@ TkWmSetClass( XClassHint *classPtr; Tcl_DString name, ds; - Tcl_UtfToExternalDString(NULL, winPtr->nameUid, -1, &name); - Tcl_UtfToExternalDString(NULL, winPtr->classUid, -1, &ds); + Tcl_UtfToExternalDStringEx(NULL, winPtr->nameUid, -1, TCL_ENCODING_NOCOMPLAIN, &name); + Tcl_UtfToExternalDStringEx(NULL, winPtr->classUid, -1, TCL_ENCODING_NOCOMPLAIN, &ds); classPtr = XAllocClassHint(); classPtr->res_name = Tcl_DStringValue(&name); classPtr->res_class = Tcl_DStringValue(&ds); @@ -1494,7 +1494,7 @@ WmClientCmd( XTextProperty textProp; Tcl_DString ds; - Tcl_UtfToExternalDString(NULL, wmPtr->clientMachine, -1, &ds); + Tcl_UtfToExternalDStringEx(NULL, wmPtr->clientMachine, -1, TCL_ENCODING_NOCOMPLAIN, &ds); if (XStringListToTextProperty(&(Tcl_DStringValue(&ds)), 1, &textProp) != 0) { unsigned long pid = (unsigned long) getpid(); @@ -4979,7 +4979,7 @@ UpdateTitle( */ string = (wmPtr->title != NULL) ? wmPtr->title : winPtr->nameUid; - Tcl_UtfToExternalDString(NULL, string, -1, &ds); + Tcl_UtfToExternalDStringEx(NULL, string, -1, TCL_ENCODING_NOCOMPLAIN, &ds); XStoreName(winPtr->display, wmPtr->wrapperPtr->window, Tcl_DStringValue(&ds)); Tcl_DStringFree(&ds); @@ -4992,7 +4992,7 @@ UpdateTitle( */ if (wmPtr->iconName != NULL) { - Tcl_UtfToExternalDString(NULL, wmPtr->iconName, -1, &ds); + Tcl_UtfToExternalDStringEx(NULL, wmPtr->iconName, -1, TCL_ENCODING_NOCOMPLAIN, &ds); XSetIconName(winPtr->display, wmPtr->wrapperPtr->window, Tcl_DStringValue(&ds)); Tcl_DStringFree(&ds); @@ -5512,7 +5512,7 @@ SetNetWmType( char *name = Tcl_GetStringFromObj(objv[n], &len); Tcl_UtfToUpper(name); - Tcl_UtfToExternalDString(NULL, name, len, &dsName); + Tcl_UtfToExternalDStringEx(NULL, name, len, TCL_ENCODING_NOCOMPLAIN, &dsName); Tcl_DStringInit(&ds); Tcl_DStringAppend(&ds, "_NET_WM_WINDOW_TYPE_", 20); Tcl_DStringAppend(&ds, Tcl_DStringValue(&dsName), @@ -5576,7 +5576,7 @@ GetNetWmType( const char *name = Tk_GetAtomName(tkwin, atoms[n]); if (strncmp("_NET_WM_WINDOW_TYPE_", name, 20) == 0) { - Tcl_ExternalToUtfDString(NULL, name+20, -1, &ds); + Tcl_ExternalToUtfDStringEx(NULL, name+20, -1, TCL_ENCODING_NOCOMPLAIN, &ds); Tcl_UtfToLower(Tcl_DStringValue(&ds)); Tcl_ListObjAppendElement(interp, typePtr, Tcl_NewStringObj(Tcl_DStringValue(&ds), @@ -7386,7 +7386,7 @@ UpdateCommand( offsets = (int *)ckalloc(sizeof(int) * wmPtr->cmdArgc); Tcl_DStringInit(&cmds); for (i = 0; i < wmPtr->cmdArgc; i++) { - Tcl_UtfToExternalDString(NULL, wmPtr->cmdArgv[i], -1, &ds); + Tcl_UtfToExternalDStringEx(NULL, wmPtr->cmdArgv[i], -1, TCL_ENCODING_NOCOMPLAIN, &ds); offsets[i] = Tcl_DStringLength(&cmds); Tcl_DStringAppend(&cmds, Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)+1); diff --git a/win/tkWinClipboard.c b/win/tkWinClipboard.c index 2f54ff6..18c7344 100644 --- a/win/tkWinClipboard.c +++ b/win/tkWinClipboard.c @@ -132,7 +132,7 @@ TkSelGetSelection( goto error; } data = (char *)GlobalLock(handle); - Tcl_ExternalToUtfDString(encoding, data, -1, &ds); + Tcl_ExternalToUtfDStringEx(encoding, data, -1, TCL_ENCODING_NOCOMPLAIN, &ds); GlobalUnlock(handle); if (encoding) { Tcl_FreeEncoding(encoding); diff --git a/win/tkWinFont.c b/win/tkWinFont.c index 670e8b9..15d042c 100644 --- a/win/tkWinFont.c +++ b/win/tkWinFont.c @@ -849,8 +849,8 @@ Tk_MeasureChars( thisSubFontPtr = FindSubFontForChar(fontPtr, ch, &lastSubFontPtr); if (thisSubFontPtr != lastSubFontPtr) { familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDString(familyPtr->encoding, start, - (int) (p - start), &runString); + Tcl_UtfToExternalDStringEx(familyPtr->encoding, start, + p - start, TCL_ENCODING_NOCOMPLAIN, &runString); size.cx = 0; familyPtr->getTextExtentPoint32Proc(hdc, (WCHAR *)Tcl_DStringValue(&runString), @@ -877,8 +877,8 @@ Tk_MeasureChars( */ familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDString(familyPtr->encoding, start, - (int) (p - start), &runString); + Tcl_UtfToExternalDStringEx(familyPtr->encoding, start, + p - start, TCL_ENCODING_NOCOMPLAIN, &runString); size.cx = 0; familyPtr->getTextExtentPoint32Proc(hdc, (WCHAR *) Tcl_DStringValue(&runString), Tcl_DStringLength(&runString) >> familyPtr->isWideFont, @@ -1493,8 +1493,8 @@ MultiFontTextOut( if ((thisSubFontPtr != lastSubFontPtr) || (p-source > 200)) { if (p > source) { familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDString(familyPtr->encoding, source, - (int) (p - source), &runString); + Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, + p - source, TCL_ENCODING_NOCOMPLAIN, &runString); familyPtr->textOutProc(hdc, (int)(x-(double)tm.tmOverhang/2.0), y, (WCHAR *)Tcl_DStringValue(&runString), Tcl_DStringLength(&runString) >> familyPtr->isWideFont); @@ -1515,8 +1515,8 @@ MultiFontTextOut( } if (p > source) { familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDString(familyPtr->encoding, source, - (int) (p - source), &runString); + Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, + p - source, TCL_ENCODING_NOCOMPLAIN, &runString); familyPtr->textOutProc(hdc, (int)(x-(double)tm.tmOverhang/2.0), y, (WCHAR *)Tcl_DStringValue(&runString), Tcl_DStringLength(&runString) >> familyPtr->isWideFont); diff --git a/win/tkWinKey.c b/win/tkWinKey.c index 9aca1f2..ebd39e0 100644 --- a/win/tkWinKey.c +++ b/win/tkWinKey.c @@ -104,8 +104,8 @@ TkpGetString( if (keyEv->send_event == -1) { TkKeyEvent *ev = (TkKeyEvent *)keyEv; if (ev->nbytes > 0) { - Tcl_ExternalToUtfDString(TkWinGetKeyInputEncoding(), - ev->trans_chars, ev->nbytes, dsPtr); + Tcl_ExternalToUtfDStringEx(TkWinGetKeyInputEncoding(), + ev->trans_chars, ev->nbytes, TCL_ENCODING_NOCOMPLAIN, dsPtr); } } else if (keyEv->send_event == -3) { diff --git a/win/tkWinTest.c b/win/tkWinTest.c index 105ee72..a163c92 100644 --- a/win/tkWinTest.c +++ b/win/tkWinTest.c @@ -381,7 +381,7 @@ TestwineventObjCmd( SendMessageA(control, WM_GETTEXT, (WPARAM)sizeof(buf), (LPARAM) buf); #endif - Tcl_ExternalToUtfDString(NULL, buf, -1, &ds); + Tcl_ExternalToUtfDStringEx(NULL, buf, -1, TCL_ENCODING_NOCOMPLAIN, &ds); Tcl_AppendResult(interp, Tcl_DStringValue(&ds), NULL); Tcl_DStringFree(&ds); break; @@ -396,7 +396,7 @@ TestwineventObjCmd( return TCL_ERROR; } Tcl_DStringInit(&ds); - Tcl_UtfToExternalDString(NULL, Tcl_GetString(objv[4]), -1, &ds); + Tcl_UtfToExternalDStringEx(NULL, Tcl_GetString(objv[4]), -1, TCL_ENCODING_NOCOMPLAIN, &ds); result = SendMessageA(control, WM_SETTEXT, 0, (LPARAM) Tcl_DStringValue(&ds)); Tcl_DStringFree(&ds); -- cgit v0.12 From febcba8fc330403fb595f58acc3570f3d29fe1ed Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Fri, 1 Apr 2022 14:08:57 +0000 Subject: Tcl_GetBoolean -> Tcl_GetBooleanFromObj --- win/tkWinTest.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/win/tkWinTest.c b/win/tkWinTest.c index a202ba5..8a292b3 100644 --- a/win/tkWinTest.c +++ b/win/tkWinTest.c @@ -301,7 +301,7 @@ TestwineventObjCmd( if ((objc == 3) && (strcmp(Tcl_GetString(objv[1]), "debug") == 0)) { int b; - if (Tcl_GetBoolean(interp, Tcl_GetString(objv[2]), &b) != TCL_OK) { + if (Tcl_GetBooleanFromObj(interp, objv[2], &b) != TCL_OK) { return TCL_ERROR; } TkWinDialogDebug(b); -- cgit v0.12 From 43cfbcbda332e1e6b93a41f0ac7a2c98be3bb1f6 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Sun, 3 Apr 2022 11:55:39 +0000 Subject: Fix building against Tcl 8.6 headers --- generic/tkConsole.c | 4 ++-- generic/tkFileFilter.c | 4 ++-- generic/tkInt.h | 9 +++++++-- macosx/tkMacOSXBitmap.c | 4 ++-- macosx/tkMacOSXHLEvents.c | 2 +- unix/tkUnixFont.c | 6 +++--- unix/tkUnixKey.c | 2 +- unix/tkUnixSelect.c | 4 ++-- unix/tkUnixSysNotify.c | 4 ++-- unix/tkUnixWm.c | 18 +++++++++--------- win/tkWinClipboard.c | 2 +- win/tkWinFont.c | 8 ++++---- win/tkWinKey.c | 2 +- win/tkWinTest.c | 4 ++-- 14 files changed, 39 insertions(+), 34 deletions(-) diff --git a/generic/tkConsole.c b/generic/tkConsole.c index 15f4490..4ed4cde 100644 --- a/generic/tkConsole.c +++ b/generic/tkConsole.c @@ -517,8 +517,8 @@ ConsoleOutput( * Assumption is utf-8 Tcl_Encoding is reliably present. */ - const char *bytes - = Tcl_ExternalToUtfDString(utf8, buf, toWrite, &ds); + Tcl_ExternalToUtfDStringEx(utf8, buf, toWrite, TCL_ENCODING_NOCOMPLAIN, &ds); + const char *bytes = Tcl_DStringValue(&ds); int numBytes = Tcl_DStringLength(&ds); Tcl_Obj *cmd = Tcl_NewStringObj("tk::ConsoleOutput", -1); diff --git a/generic/tkFileFilter.c b/generic/tkFileFilter.c index 99eb626..47f8802 100644 --- a/generic/tkFileFilter.c +++ b/generic/tkFileFilter.c @@ -286,7 +286,7 @@ AddClause( * be 4 macRoman characters long */ - Tcl_UtfToExternalDStringEx(macRoman, strType, len, TCL_ENCODING_NOCOMPLAIN, &osTypeDS); + (void)Tcl_UtfToExternalDStringEx(macRoman, strType, len, TCL_ENCODING_NOCOMPLAIN, &osTypeDS); len = Tcl_DStringLength(&osTypeDS); Tcl_DStringFree(&osTypeDS); } @@ -385,7 +385,7 @@ AddClause( * macRoman characters long */ - Tcl_UtfToExternalDStringEx(macRoman, strType, len, TCL_ENCODING_NOCOMPLAIN, &osTypeDS); + (void)Tcl_UtfToExternalDStringEx(macRoman, strType, len, TCL_ENCODING_NOCOMPLAIN, &osTypeDS); string = Tcl_DStringValue(&osTypeDS); mfPtr->type = (OSType) string[0] << 24 | (OSType) string[1] << 16 | (OSType) string[2] << 8 | (OSType) string[3]; diff --git a/generic/tkInt.h b/generic/tkInt.h index 38f830a..1d37dbc 100644 --- a/generic/tkInt.h +++ b/generic/tkInt.h @@ -99,14 +99,19 @@ # undef Tcl_UtfToExternalDStringEx /* just assume 'flags' is TCL_ENCODING_NOCOMPLAIN, and return value not used. */ # define Tcl_ExternalToUtfDStringEx(encoding, data, length, flags, ds) \ - (void)Tcl_ExternalToUtfDString(encoding, data, length, ds) + (Tcl_ExternalToUtfDString(encoding, data, length, ds), TCL_INDEX_NONE) # define Tcl_UtfToExternalDStringEx(encoding, data, length, flags, ds) \ - (void)Tcl_UtfToExternalDString(encoding, data, length, ds) + (Tcl_UtfToExternalDString(encoding, data, length, ds), TCL_INDEX_NONE) # if !defined(Tcl_GetParent) && (TCL_MINOR_VERSION < 7) # define Tcl_GetParent Tcl_GetMaster # endif #endif + +#ifndef TCL_ENCODING_NOCOMPLAIN +# define TCL_ENCODING_NOCOMPLAIN 0 +#endif + /* * Macros used to cast between pointers and integers (e.g. when storing an int * in ClientData), on 64-bit architectures they avoid gcc warning about "cast diff --git a/macosx/tkMacOSXBitmap.c b/macosx/tkMacOSXBitmap.c index 4c6f31a..e26c5bb 100644 --- a/macosx/tkMacOSXBitmap.c +++ b/macosx/tkMacOSXBitmap.c @@ -205,7 +205,7 @@ OSTypeFromString(const char *s, OSType *t) { Tcl_DString ds; Tcl_Encoding encoding = Tcl_GetEncoding(NULL, "macRoman"); - Tcl_UtfToExternalDStringEx(encoding, s, -1, TCL_ENCODING_NOCOMPLAIN, &ds); + (void)Tcl_UtfToExternalDStringEx(encoding, s, -1, TCL_ENCODING_NOCOMPLAIN, &ds); if (Tcl_DStringLength(&ds) <= 4) { char string[4] = {}; memcpy(string, Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)); @@ -384,7 +384,7 @@ TkMacOSXIconBitmapObjCmd( Tcl_DString ds; Tcl_Encoding encoding = Tcl_GetEncoding(NULL, "macRoman"); - Tcl_UtfToExternalDStringEx(encoding, value, -1, TCL_ENCODING_NOCOMPLAIN, &ds); + (void)Tcl_UtfToExternalDStringEx(encoding, value, -1, TCL_ENCODING_NOCOMPLAIN, &ds); len = Tcl_DStringLength(&ds); Tcl_DStringFree(&ds); Tcl_FreeEncoding(encoding); diff --git a/macosx/tkMacOSXHLEvents.c b/macosx/tkMacOSXHLEvents.c index ef6237e..40f9dba 100644 --- a/macosx/tkMacOSXHLEvents.c +++ b/macosx/tkMacOSXHLEvents.c @@ -227,7 +227,7 @@ static const char getSdefProc[] = "::tk::mac::GetDynamicSdef"; if (fileURL == nil) { continue; } - Tcl_ExternalToUtfDStringEx(utf8, [[fileURL path] UTF8String], -1, + (void)Tcl_ExternalToUtfDStringEx(utf8, [[fileURL path] UTF8String], -1, TCL_ENCODING_NOCOMPLAIN, &pathName); Tcl_DStringAppendElement(openCommand, Tcl_DStringValue(&pathName)); Tcl_DStringFree(&pathName); diff --git a/unix/tkUnixFont.c b/unix/tkUnixFont.c index 6ef43b7..1cf7b9b 100644 --- a/unix/tkUnixFont.c +++ b/unix/tkUnixFont.c @@ -1064,7 +1064,7 @@ Tk_MeasureChars( thisSubFontPtr = FindSubFontForChar(fontPtr, ch, &lastSubFontPtr); if (thisSubFontPtr != lastSubFontPtr) { familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, + (void)Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, TCL_ENCODING_NOCOMPLAIN, p - source, &runString); if (familyPtr->isTwoByteFont) { curX += XTextWidth16(lastSubFontPtr->fontStructPtr, @@ -1082,7 +1082,7 @@ Tk_MeasureChars( p = next; } familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, p - source, + (void)Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, p - source, TCL_ENCODING_NOCOMPLAIN, &runString); if (familyPtr->isTwoByteFont) { curX += XTextWidth16(lastSubFontPtr->fontStructPtr, @@ -1331,7 +1331,7 @@ Tk_DrawChars( do_width = (needWidth || (p != end)) ? 1 : 0; familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, + (void)Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, p - source, TCL_ENCODING_NOCOMPLAIN, &runString); if (familyPtr->isTwoByteFont) { XDrawString16(display, drawable, gc, x, y, diff --git a/unix/tkUnixKey.c b/unix/tkUnixKey.c index 008030a..16adcf3 100644 --- a/unix/tkUnixKey.c +++ b/unix/tkUnixKey.c @@ -175,7 +175,7 @@ TkpGetString( len = 0; } Tcl_DStringSetLength(&buf, len); - Tcl_ExternalToUtfDStringEx(NULL, Tcl_DStringValue(&buf), len, TCL_ENCODING_NOCOMPLAIN, dsPtr); + (void)Tcl_ExternalToUtfDStringEx(NULL, Tcl_DStringValue(&buf), len, TCL_ENCODING_NOCOMPLAIN, dsPtr); Tcl_DStringFree(&buf); #endif /* X_HAVE_UTF8_STRING */ } else diff --git a/unix/tkUnixSelect.c b/unix/tkUnixSelect.c index 29a7b2e..6ef8666 100644 --- a/unix/tkUnixSelect.c +++ b/unix/tkUnixSelect.c @@ -620,7 +620,7 @@ TkSelEventProc( } else { encoding = Tcl_GetEncoding(NULL, "iso8859-1"); } - Tcl_ExternalToUtfDStringEx(encoding, propInfo, numItems, TCL_ENCODING_NOCOMPLAIN, &ds); + (void)Tcl_ExternalToUtfDStringEx(encoding, propInfo, numItems, TCL_ENCODING_NOCOMPLAIN, &ds); if (encoding) { Tcl_FreeEncoding(encoding); } @@ -995,7 +995,7 @@ ConvertSelection( } else { encoding = Tcl_GetEncoding(NULL, "iso2022"); } - Tcl_UtfToExternalDStringEx(encoding, (char *) buffer, -1, TCL_ENCODING_NOCOMPLAIN, &ds); + (void)Tcl_UtfToExternalDStringEx(encoding, (char *) buffer, -1, TCL_ENCODING_NOCOMPLAIN, &ds); XChangeProperty(reply.xsel.display, reply.xsel.requestor, property, type, 8, PropModeReplace, (unsigned char *) Tcl_DStringValue(&ds), diff --git a/unix/tkUnixSysNotify.c b/unix/tkUnixSysNotify.c index cb9606c..8f5a972 100755 --- a/unix/tkUnixSysNotify.c +++ b/unix/tkUnixSysNotify.c @@ -145,8 +145,8 @@ SysNotifyCmd( Tcl_DStringInit(&dst); Tcl_DStringInit(&dsm); enc = Tcl_GetEncoding(NULL, "utf-8"); - Tcl_UtfToExternalDStringEx(enc, title, -1, TCL_ENCODING_NOCOMPLAIN, &dst); - Tcl_UtfToExternalDStringEx(enc, message, -1, TCL_ENCODING_NOCOMPLAIN, &dsm); + (void)Tcl_UtfToExternalDStringEx(enc, title, -1, TCL_ENCODING_NOCOMPLAIN, &dst); + (void)Tcl_UtfToExternalDStringEx(enc, message, -1, TCL_ENCODING_NOCOMPLAIN, &dsm); notify_init(appname); notif = notify_notification_new(Tcl_DStringValue(&dst), Tcl_DStringValue(&dsm), icon, NULL); diff --git a/unix/tkUnixWm.c b/unix/tkUnixWm.c index e57c586..3f69f8a 100644 --- a/unix/tkUnixWm.c +++ b/unix/tkUnixWm.c @@ -713,7 +713,7 @@ TkWmMapWindow( UpdateCommand(winPtr); } if (wmPtr->clientMachine != NULL) { - Tcl_UtfToExternalDStringEx(NULL, wmPtr->clientMachine, -1, TCL_ENCODING_NOCOMPLAIN, &ds); + (void)Tcl_UtfToExternalDStringEx(NULL, wmPtr->clientMachine, -1, TCL_ENCODING_NOCOMPLAIN, &ds); if (XStringListToTextProperty(&(Tcl_DStringValue(&ds)), 1, &textProp) != 0) { unsigned long pid = (unsigned long) getpid(); @@ -985,8 +985,8 @@ TkWmSetClass( XClassHint *classPtr; Tcl_DString name, ds; - Tcl_UtfToExternalDStringEx(NULL, winPtr->nameUid, -1, TCL_ENCODING_NOCOMPLAIN, &name); - Tcl_UtfToExternalDStringEx(NULL, winPtr->classUid, -1, TCL_ENCODING_NOCOMPLAIN, &ds); + (void)Tcl_UtfToExternalDStringEx(NULL, winPtr->nameUid, -1, TCL_ENCODING_NOCOMPLAIN, &name); + (void)Tcl_UtfToExternalDStringEx(NULL, winPtr->classUid, -1, TCL_ENCODING_NOCOMPLAIN, &ds); classPtr = XAllocClassHint(); classPtr->res_name = Tcl_DStringValue(&name); classPtr->res_class = Tcl_DStringValue(&ds); @@ -1494,7 +1494,7 @@ WmClientCmd( XTextProperty textProp; Tcl_DString ds; - Tcl_UtfToExternalDStringEx(NULL, wmPtr->clientMachine, -1, TCL_ENCODING_NOCOMPLAIN, &ds); + (void)Tcl_UtfToExternalDStringEx(NULL, wmPtr->clientMachine, -1, TCL_ENCODING_NOCOMPLAIN, &ds); if (XStringListToTextProperty(&(Tcl_DStringValue(&ds)), 1, &textProp) != 0) { unsigned long pid = (unsigned long) getpid(); @@ -4979,7 +4979,7 @@ UpdateTitle( */ string = (wmPtr->title != NULL) ? wmPtr->title : winPtr->nameUid; - Tcl_UtfToExternalDStringEx(NULL, string, -1, TCL_ENCODING_NOCOMPLAIN, &ds); + (void)Tcl_UtfToExternalDStringEx(NULL, string, -1, TCL_ENCODING_NOCOMPLAIN, &ds); XStoreName(winPtr->display, wmPtr->wrapperPtr->window, Tcl_DStringValue(&ds)); Tcl_DStringFree(&ds); @@ -4992,7 +4992,7 @@ UpdateTitle( */ if (wmPtr->iconName != NULL) { - Tcl_UtfToExternalDStringEx(NULL, wmPtr->iconName, -1, TCL_ENCODING_NOCOMPLAIN, &ds); + (void)Tcl_UtfToExternalDStringEx(NULL, wmPtr->iconName, -1, TCL_ENCODING_NOCOMPLAIN, &ds); XSetIconName(winPtr->display, wmPtr->wrapperPtr->window, Tcl_DStringValue(&ds)); Tcl_DStringFree(&ds); @@ -5512,7 +5512,7 @@ SetNetWmType( char *name = Tcl_GetStringFromObj(objv[n], &len); Tcl_UtfToUpper(name); - Tcl_UtfToExternalDStringEx(NULL, name, len, TCL_ENCODING_NOCOMPLAIN, &dsName); + (void)Tcl_UtfToExternalDStringEx(NULL, name, len, TCL_ENCODING_NOCOMPLAIN, &dsName); Tcl_DStringInit(&ds); Tcl_DStringAppend(&ds, "_NET_WM_WINDOW_TYPE_", 20); Tcl_DStringAppend(&ds, Tcl_DStringValue(&dsName), @@ -5576,7 +5576,7 @@ GetNetWmType( const char *name = Tk_GetAtomName(tkwin, atoms[n]); if (strncmp("_NET_WM_WINDOW_TYPE_", name, 20) == 0) { - Tcl_ExternalToUtfDStringEx(NULL, name+20, -1, TCL_ENCODING_NOCOMPLAIN, &ds); + (void)Tcl_ExternalToUtfDStringEx(NULL, name+20, -1, TCL_ENCODING_NOCOMPLAIN, &ds); Tcl_UtfToLower(Tcl_DStringValue(&ds)); Tcl_ListObjAppendElement(interp, typePtr, Tcl_NewStringObj(Tcl_DStringValue(&ds), @@ -7386,7 +7386,7 @@ UpdateCommand( offsets = (int *)ckalloc(sizeof(int) * wmPtr->cmdArgc); Tcl_DStringInit(&cmds); for (i = 0; i < wmPtr->cmdArgc; i++) { - Tcl_UtfToExternalDStringEx(NULL, wmPtr->cmdArgv[i], -1, TCL_ENCODING_NOCOMPLAIN, &ds); + (void)Tcl_UtfToExternalDStringEx(NULL, wmPtr->cmdArgv[i], -1, TCL_ENCODING_NOCOMPLAIN, &ds); offsets[i] = Tcl_DStringLength(&cmds); Tcl_DStringAppend(&cmds, Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)+1); diff --git a/win/tkWinClipboard.c b/win/tkWinClipboard.c index 18c7344..56fece8 100644 --- a/win/tkWinClipboard.c +++ b/win/tkWinClipboard.c @@ -132,7 +132,7 @@ TkSelGetSelection( goto error; } data = (char *)GlobalLock(handle); - Tcl_ExternalToUtfDStringEx(encoding, data, -1, TCL_ENCODING_NOCOMPLAIN, &ds); + (void)Tcl_ExternalToUtfDStringEx(encoding, data, -1, TCL_ENCODING_NOCOMPLAIN, &ds); GlobalUnlock(handle); if (encoding) { Tcl_FreeEncoding(encoding); diff --git a/win/tkWinFont.c b/win/tkWinFont.c index 15d042c..ddee969 100644 --- a/win/tkWinFont.c +++ b/win/tkWinFont.c @@ -849,7 +849,7 @@ Tk_MeasureChars( thisSubFontPtr = FindSubFontForChar(fontPtr, ch, &lastSubFontPtr); if (thisSubFontPtr != lastSubFontPtr) { familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDStringEx(familyPtr->encoding, start, + (void)Tcl_UtfToExternalDStringEx(familyPtr->encoding, start, p - start, TCL_ENCODING_NOCOMPLAIN, &runString); size.cx = 0; familyPtr->getTextExtentPoint32Proc(hdc, @@ -877,7 +877,7 @@ Tk_MeasureChars( */ familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDStringEx(familyPtr->encoding, start, + (void)Tcl_UtfToExternalDStringEx(familyPtr->encoding, start, p - start, TCL_ENCODING_NOCOMPLAIN, &runString); size.cx = 0; familyPtr->getTextExtentPoint32Proc(hdc, (WCHAR *) Tcl_DStringValue(&runString), @@ -1493,7 +1493,7 @@ MultiFontTextOut( if ((thisSubFontPtr != lastSubFontPtr) || (p-source > 200)) { if (p > source) { familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, + (void)Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, p - source, TCL_ENCODING_NOCOMPLAIN, &runString); familyPtr->textOutProc(hdc, (int)(x-(double)tm.tmOverhang/2.0), y, (WCHAR *)Tcl_DStringValue(&runString), @@ -1515,7 +1515,7 @@ MultiFontTextOut( } if (p > source) { familyPtr = lastSubFontPtr->familyPtr; - Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, + (void)Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, p - source, TCL_ENCODING_NOCOMPLAIN, &runString); familyPtr->textOutProc(hdc, (int)(x-(double)tm.tmOverhang/2.0), y, (WCHAR *)Tcl_DStringValue(&runString), diff --git a/win/tkWinKey.c b/win/tkWinKey.c index ebd39e0..a8257af 100644 --- a/win/tkWinKey.c +++ b/win/tkWinKey.c @@ -104,7 +104,7 @@ TkpGetString( if (keyEv->send_event == -1) { TkKeyEvent *ev = (TkKeyEvent *)keyEv; if (ev->nbytes > 0) { - Tcl_ExternalToUtfDStringEx(TkWinGetKeyInputEncoding(), + (void)Tcl_ExternalToUtfDStringEx(TkWinGetKeyInputEncoding(), ev->trans_chars, ev->nbytes, TCL_ENCODING_NOCOMPLAIN, dsPtr); } } else if (keyEv->send_event == -3) { diff --git a/win/tkWinTest.c b/win/tkWinTest.c index a163c92..057395d 100644 --- a/win/tkWinTest.c +++ b/win/tkWinTest.c @@ -381,7 +381,7 @@ TestwineventObjCmd( SendMessageA(control, WM_GETTEXT, (WPARAM)sizeof(buf), (LPARAM) buf); #endif - Tcl_ExternalToUtfDStringEx(NULL, buf, -1, TCL_ENCODING_NOCOMPLAIN, &ds); + (void)Tcl_ExternalToUtfDStringEx(NULL, buf, -1, TCL_ENCODING_NOCOMPLAIN, &ds); Tcl_AppendResult(interp, Tcl_DStringValue(&ds), NULL); Tcl_DStringFree(&ds); break; @@ -396,7 +396,7 @@ TestwineventObjCmd( return TCL_ERROR; } Tcl_DStringInit(&ds); - Tcl_UtfToExternalDStringEx(NULL, Tcl_GetString(objv[4]), -1, TCL_ENCODING_NOCOMPLAIN, &ds); + (void)Tcl_UtfToExternalDStringEx(NULL, Tcl_GetString(objv[4]), -1, TCL_ENCODING_NOCOMPLAIN, &ds); result = SendMessageA(control, WM_SETTEXT, 0, (LPARAM) Tcl_DStringValue(&ds)); Tcl_DStringFree(&ds); -- cgit v0.12 From 7ba1a60f171ee50181a238bc225ce5b99cd633fc Mon Sep 17 00:00:00 2001 From: griffin Date: Mon, 4 Apr 2022 00:07:29 +0000 Subject: Fix for bug [29b5c28ea] --- library/menu.tcl | 3 ++- tests/menu.test | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/library/menu.tcl b/library/menu.tcl index 20b461c..821725a 100644 --- a/library/menu.tcl +++ b/library/menu.tcl @@ -1236,7 +1236,8 @@ if {[tk windowingsystem] ne "win32"} { proc ::tk::PostOverPoint {menu x y {entry {}}} { if {$entry ne ""} { $menu post $x $y $entry - if {[$menu entrycget $entry -state] ne "disabled"} { + if {[$menu type $entry] ni {separator tearoff} && + [$menu entrycget $entry -state] ne "disabled"} { $menu activate $entry GenerateMenuSelect $menu } diff --git a/tests/menu.test b/tests/menu.test index 4993761..07cec7d 100644 --- a/tests/menu.test +++ b/tests/menu.test @@ -3436,6 +3436,28 @@ test menu-22.5 {GetIndexFromCoords: mapped wide window} -setup { deleteWindows } -result 0 +test menu-22.6 {tk_popup on separator entry} -setup { + deleteWindows +} -constraints {x11} -body { + menu .m1 + label .l -text ClickMe! + .m1 add command -label "Example 1" -command bell + .m1 add command -label "Example 2" -command bell + .m1 add separator + .m1 add command -label "Example Other" -command "bell;bell" + tk_popup .m1 100 100 2 + set waiting 0 + tkwait visibility .m1 + after 333 incr waiting + vwait waiting + .m1 invoke 4 + after 333 incr waiting + vwait waiting + destroy .m1 +} -cleanup { + deleteWindows +} -result {} + test menu-23.1 {RecursivelyDeleteMenu} -setup { deleteWindows } -body { -- cgit v0.12 From d796ec527a9d61fbd8f1106803f6a294a426539e Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Mon, 4 Apr 2022 07:42:13 +0000 Subject: Don't use TkSizeT type for tree.nTitleColumns (since it doesn't work in the option table) --- generic/ttk/ttkTreeview.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/generic/ttk/ttkTreeview.c b/generic/ttk/ttkTreeview.c index 52fa4ae..5431a58 100644 --- a/generic/ttk/ttkTreeview.c +++ b/generic/ttk/ttkTreeview.c @@ -467,7 +467,7 @@ typedef struct { Tcl_Obj *heightObj; /* height (rows) */ Tcl_Obj *paddingObj; /* internal padding */ - TkSizeT nTitleColumns; /* -titlecolumns */ + int nTitleColumns; /* -titlecolumns */ int nTitleItems; /* -titleitems */ int striped; /* -striped option */ @@ -896,12 +896,12 @@ static int TreeWidth(Treeview *tv) tv->tree.titleWidth = 0; while (i < tv->tree.nDisplayColumns) { - if (i == tv->tree.nTitleColumns) { + if (i == (TkSizeT)tv->tree.nTitleColumns) { tv->tree.titleWidth = width; } width += tv->tree.displayColumns[i++]->width; } - if (tv->tree.nTitleColumns >= tv->tree.nDisplayColumns) { + if ((TkSizeT)tv->tree.nTitleColumns >= tv->tree.nDisplayColumns) { tv->tree.titleWidth = width; } return width; @@ -1377,9 +1377,9 @@ TreeviewConfigure(Tcl_Interp *interp, void *recordPtr, int mask) if (mask & COLUMNS_CHANGED) { CellSelectionClear(tv); } - if (tv->tree.nTitleColumns == TCL_INDEX_NONE) { + if (tv->tree.nTitleColumns < 0) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( - "\"#%" TKSIZET_MODIFIER "u\" is out of range", + "\"#%d\" is out of range", tv->tree.nTitleColumns)); Tcl_SetErrorCode(interp, "TTK", "TREE", "TITLECOLUMNS", NULL); return TCL_ERROR; @@ -1682,7 +1682,7 @@ static TkSizeT IdentifyDisplayColumn(Treeview *tv, int x, int *x1) TkSizeT colno = FirstColumn(tv); int xpos = tv->tree.treeArea.x; - if (tv->tree.nTitleColumns <= colno) { + if ((TkSizeT)tv->tree.nTitleColumns <= colno) { xpos -= tv->tree.xscroll.first; } @@ -1695,7 +1695,7 @@ static TkSizeT IdentifyDisplayColumn(Treeview *tv, int x, int *x1) } ++colno; xpos = next_xpos; - if (tv->tree.nTitleColumns == colno) { + if ((TkSizeT)tv->tree.nTitleColumns == colno) { xpos -= tv->tree.xscroll.first; } } @@ -1781,7 +1781,7 @@ static int BoundingBox( bbox.x += xpos; bbox.width = column->width; - if (i < tv->tree.nTitleColumns) { + if (i < (TkSizeT)tv->tree.nTitleColumns) { /* Unscrollable column, remove scroll shift */ bbox.x += tv->tree.xscroll.first; } @@ -2018,7 +2018,7 @@ static void DrawHeadings(Treeview *tv, Drawable d) TkSizeT i = FirstColumn(tv); int x = 0; - if (tv->tree.nTitleColumns > i) { + if ((TkSizeT)tv->tree.nTitleColumns > i) { x = tv->tree.titleWidth; i = tv->tree.nTitleColumns; } @@ -2037,7 +2037,7 @@ static void DrawHeadings(Treeview *tv, Drawable d) x0 = tv->tree.headingArea.x; i = FirstColumn(tv); x = 0; - while ((i < tv->tree.nTitleColumns) && (i < tv->tree.nDisplayColumns)) { + while ((i < (TkSizeT)tv->tree.nTitleColumns) && (i < tv->tree.nDisplayColumns)) { TreeColumn *column = tv->tree.displayColumns[i]; Ttk_Box parcel = Ttk_MakeBox(x0+x, y0, column->width, h0); DisplayLayout(tv->tree.headingLayout, @@ -2069,7 +2069,7 @@ static void DrawSeparators(Treeview *tv, Drawable d) if (!column->separator) continue; - if (i >= tv->tree.nTitleColumns) { + if (i >= (TkSizeT)tv->tree.nTitleColumns) { xDraw -= tv->tree.xscroll.first; if (xDraw < tv->tree.titleWidth) continue; } @@ -2194,8 +2194,8 @@ static void DrawCells( xPad = column->separator ? tv->tree.colSeparatorWidth/2 : 0; x += column->width; - if (title && i >= tv->tree.nTitleColumns) break; - if (!title && i < tv->tree.nTitleColumns) continue; + if (title && i >= (TkSizeT)tv->tree.nTitleColumns) break; + if (!title && i < (TkSizeT)tv->tree.nTitleColumns) continue; if (!title && x < tv->tree.titleWidth) continue; if (column->selected) { @@ -2273,7 +2273,7 @@ static void DrawItem( /* Draw row background for non-scrolled area: */ - if (tv->tree.nTitleColumns >= 1) { + if ((TkSizeT)tv->tree.nTitleColumns >= 1) { Ttk_Box rowBox = Ttk_MakeBox(tv->tree.treeArea.x, y, tv->tree.titleWidth, rowHeight); DisplayLayout(tv->tree.rowLayout, &displayItem, state, rowBox, d); @@ -2337,7 +2337,7 @@ static void DrawItem( /* Draw non-scrolled data cells: */ - if (tv->tree.nTitleColumns > 1) { + if ((TkSizeT)tv->tree.nTitleColumns > 1) { DrawCells(tv, item, &displayItem, &displayItemSel, d, xTitle, y, 1); } } @@ -3467,7 +3467,7 @@ static int TreeviewDragCommand( TreeColumn *c = tv->tree.displayColumns[i]; int right = left + c->width; if (c == column) { - if (i < tv->tree.nTitleColumns) { + if (i < (TkSizeT)tv->tree.nTitleColumns) { /* Unscrollable column, remove scroll shift */ right += tv->tree.xscroll.first; } -- cgit v0.12 From d7593d400af18cb2324c012a674e2bac709e768c Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Mon, 4 Apr 2022 15:17:03 +0000 Subject: (Cherry-pick) Fix for bug [29b5c28ea] --- generic/tkCanvWind.c | 6 +++--- library/menu.tcl | 3 ++- tests/menu.test | 22 ++++++++++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/generic/tkCanvWind.c b/generic/tkCanvWind.c index a041589..4be98e2 100644 --- a/generic/tkCanvWind.c +++ b/generic/tkCanvWind.c @@ -571,9 +571,9 @@ DisplayWinItem( if (winItemPtr->tkwin == NULL) { return; } - + Tcl_Preserve(canvas); - + if (state == TK_STATE_NULL) { state = Canvas(canvas)->canvas_state; } @@ -629,7 +629,7 @@ DisplayWinItem( if (winItemPtr->tkwin) { Tk_MapWindow(winItemPtr->tkwin); } - + } else { Tk_MaintainGeometry(winItemPtr->tkwin, canvasTkwin, x, y, width, height); diff --git a/library/menu.tcl b/library/menu.tcl index 823fd69..03b1032 100644 --- a/library/menu.tcl +++ b/library/menu.tcl @@ -1242,7 +1242,8 @@ if {[tk windowingsystem] ne "win32"} { proc ::tk::PostOverPoint {menu x y {entry {}}} { if {$entry ne ""} { $menu post $x $y $entry - if {[$menu entrycget $entry -state] ne "disabled"} { + if {[$menu type $entry] ni {separator tearoff} && + [$menu entrycget $entry -state] ne "disabled"} { $menu activate $entry GenerateMenuSelect $menu } diff --git a/tests/menu.test b/tests/menu.test index 571e453..10ad66f 100644 --- a/tests/menu.test +++ b/tests/menu.test @@ -3420,6 +3420,28 @@ test menu-22.5 {GetIndexFromCoords: mapped wide window} -setup { deleteWindows } -result 0 +test menu-22.6 {tk_popup on separator entry} -setup { + deleteWindows +} -constraints {x11} -body { + menu .m1 + label .l -text ClickMe! + .m1 add command -label "Example 1" -command bell + .m1 add command -label "Example 2" -command bell + .m1 add separator + .m1 add command -label "Example Other" -command "bell;bell" + tk_popup .m1 100 100 2 + set waiting 0 + tkwait visibility .m1 + after 333 incr waiting + vwait waiting + .m1 invoke 4 + after 333 incr waiting + vwait waiting + destroy .m1 +} -cleanup { + deleteWindows +} -result {} + test menu-23.1 {RecursivelyDeleteMenu} -setup { deleteWindows } -body { -- cgit v0.12 From b5cf891c4265da5c14957229f829daee5357936d Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Mon, 4 Apr 2022 21:04:32 +0000 Subject: Fix test failure (entry.test and others) in UNIX builds without xft --- unix/tkUnixFont.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unix/tkUnixFont.c b/unix/tkUnixFont.c index 1cf7b9b..d706887 100644 --- a/unix/tkUnixFont.c +++ b/unix/tkUnixFont.c @@ -1065,7 +1065,7 @@ Tk_MeasureChars( if (thisSubFontPtr != lastSubFontPtr) { familyPtr = lastSubFontPtr->familyPtr; (void)Tcl_UtfToExternalDStringEx(familyPtr->encoding, source, - TCL_ENCODING_NOCOMPLAIN, p - source, &runString); + p - source, TCL_ENCODING_NOCOMPLAIN, &runString); if (familyPtr->isTwoByteFont) { curX += XTextWidth16(lastSubFontPtr->fontStructPtr, (XChar2b *) Tcl_DStringValue(&runString), -- cgit v0.12 From b551efdee5768dd7fce2e0fe05406c37a53d4f6b Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Mon, 4 Apr 2022 21:07:38 +0000 Subject: No need to #define TCL_ENCODING_NOCOMPLAIN --- generic/tkInt.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/generic/tkInt.h b/generic/tkInt.h index 1d37dbc..eb9d971 100644 --- a/generic/tkInt.h +++ b/generic/tkInt.h @@ -107,11 +107,6 @@ # endif #endif - -#ifndef TCL_ENCODING_NOCOMPLAIN -# define TCL_ENCODING_NOCOMPLAIN 0 -#endif - /* * Macros used to cast between pointers and integers (e.g. when storing an int * in ClientData), on 64-bit architectures they avoid gcc warning about "cast -- cgit v0.12