Import Tk 8.6.10

This commit is contained in:
Steve Dower
2020-09-24 22:55:34 +01:00
parent 5ba5cbc9af
commit 42c69189d9
365 changed files with 24323 additions and 12832 deletions

View File

@@ -23,7 +23,7 @@
* the current thread.
*/
typedef struct ThreadSpecificData {
typedef struct {
int initialized;
} ThreadSpecificData;
static Tcl_ThreadDataKey dataKey;
@@ -166,7 +166,7 @@ TkpOpenDisplay(
if (display == NULL) {
/*fprintf(stderr,"event=%d error=%d major=%d minor=%d reason=%d\nDisabling xkb\n",
event, error, major, minor, reason);*/
display = XOpenDisplay(displayNameStr);
display = XOpenDisplay(displayNameStr);
} else {
use_xkb = TK_DISPLAY_USE_XKB;
/*fprintf(stderr, "Using xkb %d.%d\n", major, minor);*/
@@ -186,6 +186,31 @@ TkpOpenDisplay(
#endif
Tcl_CreateFileHandler(ConnectionNumber(display), TCL_READABLE,
DisplayFileProc, dispPtr);
/*
* Observed weird WidthMMOfScreen() in X on Wayland on a
* Fedora 30/i386 running in a VM. Fallback to 75 dpi,
* otherwise many other strange things may happen later.
* See: [https://core.tcl-lang.org/tk/tktview?name=a01b6f7227]
*/
if (WidthMMOfScreen(DefaultScreenOfDisplay(display)) <= 0) {
int mm;
mm = WidthOfScreen(DefaultScreenOfDisplay(display)) * (25.4 / 75.0);
WidthMMOfScreen(DefaultScreenOfDisplay(display)) = mm;
}
if (HeightMMOfScreen(DefaultScreenOfDisplay(display)) <= 0) {
int mm;
mm = HeightOfScreen(DefaultScreenOfDisplay(display)) * (25.4 / 75.0);
HeightMMOfScreen(DefaultScreenOfDisplay(display)) = mm;
}
/*
* Key map info must be available immediately, because of "send event".
*/
TkpInitKeymapInfo(dispPtr);
return dispPtr;
}