Import Tk 8.6.10
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user