diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | generic/tkInt.decls | 2 | ||||
-rw-r--r-- | generic/tkMain.c | 22 | ||||
-rw-r--r-- | generic/tkStubInit.c | 4 | ||||
-rw-r--r-- | generic/tkTextDisp.c | 2 | ||||
-rw-r--r-- | generic/tkWindow.c | 2 | ||||
-rw-r--r-- | unix/tkUnixPort.h | 9 | ||||
-rw-r--r-- | win/tkWinPort.h | 2 |
8 files changed, 49 insertions, 3 deletions
@@ -1,3 +1,12 @@ +2012-05-31 Jan Nijtmans <nijtmans@users.sf.net> + + * generic/tkWindow.c: Simpify determination whether we are running on cygwin. + * generic/tkStubInit.c: Export Tk_GetHINSTANCE, TkSetPixmapColormap and + * generic/tkInt.decls: TkpPrintWindowId on the Cygwin dll, sync stub table + with Tk 8.6 win32 version. + * generic/tk*Decls.h: re-generated + * win/Makefile.in: Fix "make genstubs" when cross-compiling on UNIX + 2012-05-29 Donal K. Fellows <dkf@users.sf.net> * generic/tkInt.decls (TkMacOSXDrawable): Added OSX-specific mechanism diff --git a/generic/tkInt.decls b/generic/tkInt.decls index 480f596..66a11c6 100644 --- a/generic/tkInt.decls +++ b/generic/tkInt.decls @@ -814,7 +814,7 @@ declare 36 win { UINT message, WPARAM wParam, LPARAM lParam) } -# new for 8.4.20+, Cygwin only +# new for 8.4.20+/8.5.12+, Cygwin only declare 37 win { void TkCreateXEventSource(void) } diff --git a/generic/tkMain.c b/generic/tkMain.c index a48ddd4..4932d36 100644 --- a/generic/tkMain.c +++ b/generic/tkMain.c @@ -102,6 +102,7 @@ static int WinIsTty(int fd) { * always claim to be running on a tty. This probably isn't the right way * to do it. */ + handle = GetStdHandle(STD_INPUT_HANDLE + fd); /* * If it's a bad or closed handle, then it's been connected to a wish @@ -181,6 +182,27 @@ Tk_MainEx( abort(); } +#if defined(__WIN32__) && !defined(STATIC_BUILD) + if (tclStubsPtr->reserved9) { + /* We are running win32 Tk under Cygwin, so let's check + * whether the env("DISPLAY") variable or the -display + * argument is set. If so, we really want to run the + * Tk_MainEx function of libtk.dll, not this one. */ + if (Tcl_GetVar2(interp, "env", "DISPLAY", TCL_GLOBAL_ONLY)) { + loadCygwinTk: + Tcl_Panic("Should load libtk.dll now, not yet implemented"); + } else { + int i; + + for (i = 1; i < argc; ++i) { + if (!_tcscmp(argv[i], TEXT("-display"))) { + goto loadCygwinTk; + } + } + } + } +#endif + Tcl_InitMemory(interp); is.interp = interp; diff --git a/generic/tkStubInit.c b/generic/tkStubInit.c index 34cf671..de5e00e 100644 --- a/generic/tkStubInit.c +++ b/generic/tkStubInit.c @@ -80,7 +80,9 @@ TkpSync(Display *display) #define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 0x00000004 int __stdcall GetModuleHandleExW(unsigned int, const char *, void *); -static void *Tk_GetHINSTANCE() +TkIntStubs tkIntStubs; + +void *Tk_GetHINSTANCE() { void *hInstance = NULL; diff --git a/generic/tkTextDisp.c b/generic/tkTextDisp.c index b66bf71..1b41e31 100644 --- a/generic/tkTextDisp.c +++ b/generic/tkTextDisp.c @@ -18,6 +18,8 @@ #ifdef __WIN32__ #include "tkWinInt.h" +#elif defined(__CYGWIN__) +#include "tkUnixInt.h" #endif #ifdef MAC_OSX_TK diff --git a/generic/tkWindow.c b/generic/tkWindow.c index b2c5310..90e53f0 100644 --- a/generic/tkWindow.c +++ b/generic/tkWindow.c @@ -16,7 +16,7 @@ #ifdef __WIN32__ #include "tkWinInt.h" -#elif !(defined(__WIN32__) || defined(__CYGWIN__) || defined(MAC_OSX_TK)) +#elif !defined(MAC_OSX_TK) #include "tkUnixInt.h" #endif diff --git a/unix/tkUnixPort.h b/unix/tkUnixPort.h index bc432e7..12010f4 100644 --- a/unix/tkUnixPort.h +++ b/unix/tkUnixPort.h @@ -137,6 +137,14 @@ desty, width, height); #endif + /* + * The TkPutImage macro strips off the color table information, which isn't + * needed for X. + */ + +# define TkPutImage(colors, ncolors, display, pixels, gc, image, srcx, srcy, destx, desty, width, height) \ + XPutImage(display, pixels, gc, image, srcx, srcy, destx, \ + desty, width, height); /* * Supply macros for seek offsets, if they're not already provided by @@ -185,6 +193,7 @@ * This macro stores a representation of the window handle in a string. * This should perhaps use the real size of an XID. */ + #ifndef __CYGWIN__ #define TkpPrintWindowId(buf,w) \ sprintf((buf), "%#08lx", (unsigned long) (w)) diff --git a/win/tkWinPort.h b/win/tkWinPort.h index 1b999ab..75c7d22 100644 --- a/win/tkWinPort.h +++ b/win/tkWinPort.h @@ -102,6 +102,8 @@ * under Windows. */ +#define TkFreeWindowId(dispPtr,w) +#define TkInitXId(dispPtr) #define XFlush(display) #define XGrabServer(display) #define XUngrabServer(display) |