Tk Source Code

Check-in [74f3185b]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Change XSetDashes signature and many others to match Xorg, needed for Cygwin. Add .PHONY targets, and various quoting issues (Makefile.in)
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | core-8-4-branch
Files: files | file ages | folders
SHA1: 74f3185b76294804001c0560ff2fd1cf5d253533
User & Date: jan.nijtmans 2012-06-01 22:29:19
Context
2012-06-07
04:30
Change XChangeWindowAttributes signature and many others to match Xorg, needed for Cygwin check-in: b5e6b38e user: jan.nijtmans tags: core-8-4-branch
2012-06-05
13:12
merge core-8-4-branch Closed-Leaf check-in: 61bf2ca3 user: jan.nijtmans tags: bug-3508771
04:46
Change XSetDashes signature and many others to match Xorg, needed for Cygwin check-in: c1a8b045 user: jan.nijtmans tags: core-8-5-branch
2012-06-01
22:29
Change XSetDashes signature and many others to match Xorg, needed for Cygwin. Add .PHONY targets, and various quoting issues (Makefile.in) check-in: 74f3185b user: jan.nijtmans tags: core-8-4-branch
2012-05-29
15:08
Change XFillRectangle(s)/XDrawLines(s) signature to match Xorg, needed for Cygwin. Generate same pkgIndex.tcl file for win32 and cygwin, one that is equally useable for both. check-in: 4b760eba user: jan.nijtmans tags: core-8-4-branch
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ChangeLog.








1
2
3
4
5
6
7
8







2012-05-09  Jan Nijtmans  <[email protected]>

	* generic/tkInt.decls:   Change XFillRectangle(s)/XDrawLines(s) signature
	* generic/tkIntXlibDeclsDecls.h: to match Xorg, needed for Cygwin.
	* xlib/xdraw.c:
	* mac/tkMacDraw.c:
	* macosx/tkMacOSXDraw.c:
	* win/tkWinDraw.c:
>
>
>
>
>
>
>
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2012-06-02  Jan Nijtmans  <[email protected]>

	* generic/tkInt.decls:   Change XSetDashes signature and many others
	* generic/tkIntXlibDeclsDecls.h: to match Xorg, needed for Cygwin.
	* unix/Makefile.in:      Add .PHONY targets, and various quoting issues
	* win/Makefile.in:       (Backported from Tcl 8.5)

2012-05-29  Jan Nijtmans  <[email protected]>

	* generic/tkInt.decls:   Change XFillRectangle(s)/XDrawLines(s) signature
	* generic/tkIntXlibDeclsDecls.h: to match Xorg, needed for Cygwin.
	* xlib/xdraw.c:
	* mac/tkMacDraw.c:
	* macosx/tkMacOSXDraw.c:
	* win/tkWinDraw.c:

Changes to generic/tkInt.decls.

1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075

interface tkIntXlib

################################
# X functions for Windows

declare 0 win {
    void XSetDashes(Display *display, GC gc, int dash_offset,
	    _Xconst char *dash_list, int n)
}
declare 1 win {
    XModifierKeymap *XGetModifierMapping(Display *d)
}
declare 2 win {
    XImage *XCreateImage(Display *d, Visual *v, unsigned int ui1, int i1,







|







1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075

interface tkIntXlib

################################
# X functions for Windows

declare 0 win {
    int XSetDashes(Display *display, GC gc, int dash_offset,
	    _Xconst char *dash_list, int n)
}
declare 1 win {
    XModifierKeymap *XGetModifierMapping(Display *d)
}
declare 2 win {
    XImage *XCreateImage(Display *d, Visual *v, unsigned int ui1, int i1,
1091
1092
1093
1094
1095
1096
1097
1098

1099
1100
1101
1102
1103
1104
1105
}
declare 7 win {
    Cursor XCreatePixmapCursor(Display *d, Pixmap p1, Pixmap p2,
	    XColor *x1, XColor *x2, unsigned int ui1, unsigned int ui2)
}
declare 8 win {
    Cursor XCreateGlyphCursor(Display *d, Font f1, Font f2,
	    unsigned int ui1, unsigned int ui2, XColor *x1, XColor *x2)

}
declare 9 win {
    GContext XGContextFromGC(GC g)
}
declare 10 win {
    XHostAddress *XListHosts(Display *d, int *i, Bool *b)
}







|
>







1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
}
declare 7 win {
    Cursor XCreatePixmapCursor(Display *d, Pixmap p1, Pixmap p2,
	    XColor *x1, XColor *x2, unsigned int ui1, unsigned int ui2)
}
declare 8 win {
    Cursor XCreateGlyphCursor(Display *d, Font f1, Font f2,
	    unsigned int ui1, unsigned int ui2, XColor _Xconst *x1,
	    XColor _Xconst *x2)
}
declare 9 win {
    GContext XGContextFromGC(GC g)
}
declare 10 win {
    XHostAddress *XListHosts(Display *d, int *i, Bool *b)
}
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
declare 17 win {
    Status XGetWMColormapWindows(Display *d, Window w, Window **wpp, int *ip)
}
declare 18 win {
    Status XAllocColor(Display *d, Colormap c, XColor *xp)
}
declare 19 win {
    void XBell(Display *d, int i)
}
declare 20 win {
    void XChangeProperty(Display *d, Window w, Atom a1, Atom a2, int i1,
	    int i2, _Xconst unsigned char *c, int i3)
}
declare 21 win {
    void XChangeWindowAttributes(Display *d, Window w, unsigned long ul,







|







1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
declare 17 win {
    Status XGetWMColormapWindows(Display *d, Window w, Window **wpp, int *ip)
}
declare 18 win {
    Status XAllocColor(Display *d, Colormap c, XColor *xp)
}
declare 19 win {
    int XBell(Display *d, int i)
}
declare 20 win {
    void XChangeProperty(Display *d, Window w, Atom a1, Atom a2, int i1,
	    int i2, _Xconst unsigned char *c, int i3)
}
declare 21 win {
    void XChangeWindowAttributes(Display *d, Window w, unsigned long ul,
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
	    unsigned int ui2, int i3, int i4, unsigned long ul)
}
declare 26 win {
    Pixmap XCreateBitmapFromData(Display *display, Drawable d,
	    _Xconst char *data, unsigned int width, unsigned int height)
}
declare 27 win {
    void XDefineCursor(Display *d, Window w, Cursor c)
}
declare 28 win {
    void XDeleteProperty(Display *d, Window w, Atom a)
}
declare 29 win {
    void XDestroyWindow(Display *d, Window w)
}







|







1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
	    unsigned int ui2, int i3, int i4, unsigned long ul)
}
declare 26 win {
    Pixmap XCreateBitmapFromData(Display *display, Drawable d,
	    _Xconst char *data, unsigned int width, unsigned int height)
}
declare 27 win {
    int XDefineCursor(Display *d, Window w, Cursor c)
}
declare 28 win {
    void XDeleteProperty(Display *d, Window w, Atom a)
}
declare 29 win {
    void XDestroyWindow(Display *d, Window w)
}
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
declare 35 win {
    int XFillRectangles(Display *d, Drawable dr, GC g, XRectangle *x, int i)
}
declare 36 win {
    void XForceScreenSaver(Display *d, int i)
}
declare 37 win {
    void XFreeColormap(Display *d, Colormap c)
}
declare 38 win {
    void XFreeColors(Display *d, Colormap c,
	    unsigned long *ulp, int i, unsigned long ul)
}
declare 39 win {
    void XFreeCursor(Display *d, Cursor c)
}
declare 40 win {
    void XFreeModifiermap(XModifierKeymap *x)
}
declare 41 win {
    Status XGetGeometry(Display *d, Drawable dr, Window *w, int *i1,
	    int *i2, unsigned int *ui1, unsigned int *ui2, unsigned int *ui3,
	    unsigned int *ui4)
}
declare 42 win {







|


|






|







1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
declare 35 win {
    int XFillRectangles(Display *d, Drawable dr, GC g, XRectangle *x, int i)
}
declare 36 win {
    void XForceScreenSaver(Display *d, int i)
}
declare 37 win {
    int XFreeColormap(Display *d, Colormap c)
}
declare 38 win {
    int XFreeColors(Display *d, Colormap c,
	    unsigned long *ulp, int i, unsigned long ul)
}
declare 39 win {
    void XFreeCursor(Display *d, Cursor c)
}
declare 40 win {
    int XFreeModifiermap(XModifierKeymap *x)
}
declare 41 win {
    Status XGetGeometry(Display *d, Drawable dr, Window *w, int *i1,
	    int *i2, unsigned int *ui1, unsigned int *ui2, unsigned int *ui3,
	    unsigned int *ui4)
}
declare 42 win {
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
declare 60 win {
    void XSelectInput(Display *d, Window w, long l)
}
declare 61 win {
    Status XSendEvent(Display *d, Window w, Bool b, long l, XEvent *x)
}
declare 62 win {
    void XSetCommand(Display *d, Window w, char **c, int i)
}
declare 63 win {
    void XSetIconName(Display *d, Window w, _Xconst char *c)
}
declare 64 win {
    void XSetInputFocus(Display *d, Window w, int i, Time t)
}
declare 65 win {
    void XSetSelectionOwner(Display *d, Atom a, Window w, Time t)
}
declare 66 win {
    void XSetWindowBackground(Display *d, Window w, unsigned long ul)
}
declare 67 win {
    void XSetWindowBackgroundPixmap(Display *d, Window w, Pixmap p)
}







|








|







1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
declare 60 win {
    void XSelectInput(Display *d, Window w, long l)
}
declare 61 win {
    Status XSendEvent(Display *d, Window w, Bool b, long l, XEvent *x)
}
declare 62 win {
    int XSetCommand(Display *d, Window w, char **c, int i)
}
declare 63 win {
    void XSetIconName(Display *d, Window w, _Xconst char *c)
}
declare 64 win {
    void XSetInputFocus(Display *d, Window w, int i, Time t)
}
declare 65 win {
    int XSetSelectionOwner(Display *d, Atom a, Window w, Time t)
}
declare 66 win {
    void XSetWindowBackground(Display *d, Window w, unsigned long ul)
}
declare 67 win {
    void XSetWindowBackgroundPixmap(Display *d, Window w, Pixmap p)
}
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
    Bool XTranslateCoordinates(Display *d, Window w1, Window w2, int i1,
	    int i2, int *i3, int *i4, Window *w3)
}
declare 73 win {
    void XUngrabKeyboard(Display *d, Time t)
}
declare 74 win {
    void XUngrabPointer(Display *d, Time t)
}
declare 75 win {
    void XUnmapWindow(Display *d, Window w)
}
declare 76 win {
    void XWindowEvent(Display *d, Window w, long l, XEvent *x)
}
declare 77 win {
    void XDestroyIC(XIC x)
}
declare 78 win {
    Bool XFilterEvent(XEvent *x, Window w)
}
declare 79 win {
    int XmbLookupString(XIC xi, XKeyPressedEvent *xk, char *c, int i,
	    KeySym *k, Status *s)
}
declare 80 win {
    void TkPutImage(unsigned long *colors, int ncolors, Display *display,
	    Drawable d, GC gc, XImage *image, int src_x, int src_y,
	    int dest_x, int dest_y, unsigned int width, unsigned int height)
}
# This slot is reserved for use by the clipping rectangle patch:
#  declare 81 win {
#      XSetClipRectangles(Display *display, GC gc, int clip_x_origin,
#  	    int clip_y_origin, XRectangle rectangles[], int n, int ordering)







|


















|







1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
    Bool XTranslateCoordinates(Display *d, Window w1, Window w2, int i1,
	    int i2, int *i3, int *i4, Window *w3)
}
declare 73 win {
    void XUngrabKeyboard(Display *d, Time t)
}
declare 74 win {
    int XUngrabPointer(Display *d, Time t)
}
declare 75 win {
    void XUnmapWindow(Display *d, Window w)
}
declare 76 win {
    void XWindowEvent(Display *d, Window w, long l, XEvent *x)
}
declare 77 win {
    void XDestroyIC(XIC x)
}
declare 78 win {
    Bool XFilterEvent(XEvent *x, Window w)
}
declare 79 win {
    int XmbLookupString(XIC xi, XKeyPressedEvent *xk, char *c, int i,
	    KeySym *k, Status *s)
}
declare 80 win {
    int TkPutImage(unsigned long *colors, int ncolors, Display *display,
	    Drawable d, GC gc, XImage *image, int src_x, int src_y,
	    int dest_x, int dest_y, unsigned int width, unsigned int height)
}
# This slot is reserved for use by the clipping rectangle patch:
#  declare 81 win {
#      XSetClipRectangles(Display *display, GC gc, int clip_x_origin,
#  	    int clip_y_origin, XRectangle rectangles[], int n, int ordering)
1421
1422
1423
1424
1425
1426
1427




1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
    Status XStringListToTextProperty(char **list, int count,
	    XTextProperty *text_prop_return)
}
declare 104 win {
    int XDrawLine(Display *d, Drawable dr, GC g, int x1, int y1,
	    int x2, int y2)
}




declare 106 win {
    int XFillRectangle(Display *display, Drawable d, GC gc,
	    int x, int y, unsigned int width, unsigned int height)
}
declare 105 win {
    void XWarpPointer(Display *d, Window s, Window dw, int sx, int sy,
	    unsigned int sw, unsigned int sh, int dx, int dy)
}

################################
# X functions for Mac and Aqua

declare 0 {mac aqua} {
    void XSetDashes(Display *display, GC gc, int dash_offset,
	    _Xconst char *dash_list, int n)
}
declare 1 {mac aqua} {
    XModifierKeymap *XGetModifierMapping(Display *d)
}
declare 2 {mac aqua} {
    XImage *XCreateImage(Display *d, Visual *v, unsigned int ui1, int i1,







>
>
>
>




<
<
<
<





|







1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436




1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
    Status XStringListToTextProperty(char **list, int count,
	    XTextProperty *text_prop_return)
}
declare 104 win {
    int XDrawLine(Display *d, Drawable dr, GC g, int x1, int y1,
	    int x2, int y2)
}
declare 105 win {
    int XWarpPointer(Display *d, Window s, Window dw, int sx, int sy,
	    unsigned int sw, unsigned int sh, int dx, int dy)
}
declare 106 win {
    int XFillRectangle(Display *display, Drawable d, GC gc,
	    int x, int y, unsigned int width, unsigned int height)
}





################################
# X functions for Mac and Aqua

declare 0 {mac aqua} {
    int XSetDashes(Display *display, GC gc, int dash_offset,
	    _Xconst char *dash_list, int n)
}
declare 1 {mac aqua} {
    XModifierKeymap *XGetModifierMapping(Display *d)
}
declare 2 {mac aqua} {
    XImage *XCreateImage(Display *d, Visual *v, unsigned int ui1, int i1,
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
declare 11 {mac aqua} {
    XErrorHandler XSetErrorHandler(XErrorHandler x)
}
declare 12 {mac aqua} {
    Status XAllocColor(Display *d, Colormap c, XColor *xp)
}
declare 13 {mac aqua} {
    void XBell(Display *d, int i)
}
declare 14 {mac aqua} {
    void XChangeProperty(Display *d, Window w, Atom a1, Atom a2, int i1,
	    int i2, _Xconst unsigned char *c, int i3)
}
declare 15 {mac aqua} {
    void XChangeWindowAttributes(Display *d, Window w, unsigned long ul,







|







1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
declare 11 {mac aqua} {
    XErrorHandler XSetErrorHandler(XErrorHandler x)
}
declare 12 {mac aqua} {
    Status XAllocColor(Display *d, Colormap c, XColor *xp)
}
declare 13 {mac aqua} {
    int XBell(Display *d, int i)
}
declare 14 {mac aqua} {
    void XChangeProperty(Display *d, Window w, Atom a1, Atom a2, int i1,
	    int i2, _Xconst unsigned char *c, int i3)
}
declare 15 {mac aqua} {
    void XChangeWindowAttributes(Display *d, Window w, unsigned long ul,
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
	    unsigned int ui2, int i3, int i4, unsigned long ul)
}
declare 19 {mac aqua} {
    Pixmap XCreateBitmapFromData(Display *display, Drawable d,
	    _Xconst char *data, unsigned int width, unsigned int height)
}
declare 20 {mac aqua} {
    void XDefineCursor(Display *d, Window w, Cursor c)
}
declare 21 {mac aqua} {
    void XDestroyWindow(Display *d, Window w)
}
declare 22 {mac aqua} {
    void XDrawArc(Display *d, Drawable dr, GC g, int i1, int i2,
	    unsigned int ui1, unsigned int ui2, int i3, int i4)







|







1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
	    unsigned int ui2, int i3, int i4, unsigned long ul)
}
declare 19 {mac aqua} {
    Pixmap XCreateBitmapFromData(Display *display, Drawable d,
	    _Xconst char *data, unsigned int width, unsigned int height)
}
declare 20 {mac aqua} {
    int XDefineCursor(Display *d, Window w, Cursor c)
}
declare 21 {mac aqua} {
    void XDestroyWindow(Display *d, Window w)
}
declare 22 {mac aqua} {
    void XDrawArc(Display *d, Drawable dr, GC g, int i1, int i2,
	    unsigned int ui1, unsigned int ui2, int i3, int i4)
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
    void XFillPolygon(Display *d, Drawable dr, GC g, XPoint *x,
	    int i1, int i2, int i3)
}
declare 27 {mac aqua} {
    int XFillRectangles(Display *d, Drawable dr, GC g, XRectangle *x, int i)
}
declare 28 {mac aqua} {
    void XFreeColormap(Display *d, Colormap c)
}
declare 29 {mac aqua} {
    void XFreeColors(Display *d, Colormap c,
	    unsigned long *ulp, int i, unsigned long ul)
}
declare 30 {mac aqua} {
    void XFreeModifiermap(XModifierKeymap *x)
}
declare 31 {mac aqua} {
    Status XGetGeometry(Display *d, Drawable dr, Window *w, int *i1,
	    int *i2, unsigned int *ui1, unsigned int *ui2, unsigned int *ui3,
	    unsigned int *ui4)
}
declare 32 {mac aqua} {







|


|



|







1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
    void XFillPolygon(Display *d, Drawable dr, GC g, XPoint *x,
	    int i1, int i2, int i3)
}
declare 27 {mac aqua} {
    int XFillRectangles(Display *d, Drawable dr, GC g, XRectangle *x, int i)
}
declare 28 {mac aqua} {
    int XFreeColormap(Display *d, Colormap c)
}
declare 29 {mac aqua} {
    int XFreeColors(Display *d, Colormap c,
	    unsigned long *ulp, int i, unsigned long ul)
}
declare 30 {mac aqua} {
    int XFreeModifiermap(XModifierKeymap *x)
}
declare 31 {mac aqua} {
    Status XGetGeometry(Display *d, Drawable dr, Window *w, int *i1,
	    int *i2, unsigned int *ui1, unsigned int *ui2, unsigned int *ui3,
	    unsigned int *ui4)
}
declare 32 {mac aqua} {
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
declare 45 {mac aqua} {
    void XSetIconName(Display *d, Window w, _Xconst char *c)
}
declare 46 {mac aqua} {
    void XSetInputFocus(Display *d, Window w, int i, Time t)
}
declare 47 {mac aqua} {
    void XSetSelectionOwner(Display *d, Atom a, Window w, Time t)
}
declare 48 {mac aqua} {
    void XSetWindowBackground(Display *d, Window w, unsigned long ul)
}
declare 49 {mac aqua} {
    void XSetWindowBackgroundPixmap(Display *d, Window w, Pixmap p)
}







|







1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
declare 45 {mac aqua} {
    void XSetIconName(Display *d, Window w, _Xconst char *c)
}
declare 46 {mac aqua} {
    void XSetInputFocus(Display *d, Window w, int i, Time t)
}
declare 47 {mac aqua} {
    int XSetSelectionOwner(Display *d, Atom a, Window w, Time t)
}
declare 48 {mac aqua} {
    void XSetWindowBackground(Display *d, Window w, unsigned long ul)
}
declare 49 {mac aqua} {
    void XSetWindowBackgroundPixmap(Display *d, Window w, Pixmap p)
}
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
declare 53 {mac aqua} {
    void XSetWindowColormap(Display *d, Window w, Colormap c)
}
declare 54 {mac aqua} {
    void XUngrabKeyboard(Display *d, Time t)
}
declare 55 {mac aqua} {
    void XUngrabPointer(Display *d, Time t)
}
declare 56 {mac aqua} {
    void XUnmapWindow(Display *d, Window w)
}
declare 57 {mac aqua} {
    void TkPutImage(unsigned long *colors, int ncolors, Display *display,
	    Drawable d, GC gc, XImage *image, int src_x, int src_y,
	    int dest_x, int dest_y, unsigned int width, unsigned int height)
}
declare 58 {mac aqua} {
    Status XParseColor(Display *display, Colormap map,
          _Xconst char *spec, XColor *colorPtr)
}







|





|







1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
declare 53 {mac aqua} {
    void XSetWindowColormap(Display *d, Window w, Colormap c)
}
declare 54 {mac aqua} {
    void XUngrabKeyboard(Display *d, Time t)
}
declare 55 {mac aqua} {
    int XUngrabPointer(Display *d, Time t)
}
declare 56 {mac aqua} {
    void XUnmapWindow(Display *d, Window w)
}
declare 57 {mac aqua} {
    int TkPutImage(unsigned long *colors, int ncolors, Display *display,
	    Drawable d, GC gc, XImage *image, int src_x, int src_y,
	    int dest_x, int dest_y, unsigned int width, unsigned int height)
}
declare 58 {mac aqua} {
    Status XParseColor(Display *display, Colormap map,
          _Xconst char *spec, XColor *colorPtr)
}
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
    void XDrawPoint(Display *display, Drawable d, GC gc, int x, int y)
}
declare 86 {mac aqua} {
    void XDrawPoints(Display *display, Drawable d, GC gc, XPoint *points,
	    int npoints, int mode)
}
declare 87 {mac aqua} {
    void XWarpPointer(Display *display, Window src_w, Window dest_w,
	    int src_x, int src_y, unsigned int src_width,
	    unsigned int src_height, int dest_x, int dest_y)
}
declare 88 {mac aqua} {
    void XQueryColor(Display *display, Colormap colormap, XColor *def_in_out)
}
declare 89 {mac aqua} {







|







1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
    void XDrawPoint(Display *display, Drawable d, GC gc, int x, int y)
}
declare 86 {mac aqua} {
    void XDrawPoints(Display *display, Drawable d, GC gc, XPoint *points,
	    int npoints, int mode)
}
declare 87 {mac aqua} {
    int XWarpPointer(Display *display, Window src_w, Window dest_w,
	    int src_x, int src_y, unsigned int src_width,
	    unsigned int src_height, int dest_x, int dest_y)
}
declare 88 {mac aqua} {
    void XQueryColor(Display *display, Colormap colormap, XColor *def_in_out)
}
declare 89 {mac aqua} {

Changes to generic/tkIntXlibDecls.h.

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

/*
 * Exported function declarations:
 */

#if defined(__WIN32__) /* WIN */
/* 0 */
EXTERN void		XSetDashes _ANSI_ARGS_((Display *display, GC gc,
				int dash_offset, _Xconst char *dash_list,
				int n));
/* 1 */
EXTERN XModifierKeymap * XGetModifierMapping _ANSI_ARGS_((Display *d));
/* 2 */
EXTERN XImage *		XCreateImage _ANSI_ARGS_((Display *d, Visual *v,
				unsigned int ui1, int i1, int i2, char *cp,







|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

/*
 * Exported function declarations:
 */

#if defined(__WIN32__) /* WIN */
/* 0 */
EXTERN int		XSetDashes _ANSI_ARGS_((Display *display, GC gc,
				int dash_offset, _Xconst char *dash_list,
				int n));
/* 1 */
EXTERN XModifierKeymap * XGetModifierMapping _ANSI_ARGS_((Display *d));
/* 2 */
EXTERN XImage *		XCreateImage _ANSI_ARGS_((Display *d, Visual *v,
				unsigned int ui1, int i1, int i2, char *cp,
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/* 7 */
EXTERN Cursor		XCreatePixmapCursor _ANSI_ARGS_((Display *d,
				Pixmap p1, Pixmap p2, XColor *x1, XColor *x2,
				unsigned int ui1, unsigned int ui2));
/* 8 */
EXTERN Cursor		XCreateGlyphCursor _ANSI_ARGS_((Display *d, Font f1,
				Font f2, unsigned int ui1, unsigned int ui2,
				XColor *x1, XColor *x2));
/* 9 */
EXTERN GContext		XGContextFromGC _ANSI_ARGS_((GC g));
/* 10 */
EXTERN XHostAddress *	XListHosts _ANSI_ARGS_((Display *d, int *i, Bool *b));
/* 11 */
EXTERN KeySym		XKeycodeToKeysym _ANSI_ARGS_((Display *d,
				unsigned int k, int i));







|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/* 7 */
EXTERN Cursor		XCreatePixmapCursor _ANSI_ARGS_((Display *d,
				Pixmap p1, Pixmap p2, XColor *x1, XColor *x2,
				unsigned int ui1, unsigned int ui2));
/* 8 */
EXTERN Cursor		XCreateGlyphCursor _ANSI_ARGS_((Display *d, Font f1,
				Font f2, unsigned int ui1, unsigned int ui2,
				XColor _Xconst *x1, XColor _Xconst *x2));
/* 9 */
EXTERN GContext		XGContextFromGC _ANSI_ARGS_((GC g));
/* 10 */
EXTERN XHostAddress *	XListHosts _ANSI_ARGS_((Display *d, int *i, Bool *b));
/* 11 */
EXTERN KeySym		XKeycodeToKeysym _ANSI_ARGS_((Display *d,
				unsigned int k, int i));
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/* 17 */
EXTERN Status		XGetWMColormapWindows _ANSI_ARGS_((Display *d,
				Window w, Window **wpp, int *ip));
/* 18 */
EXTERN Status		XAllocColor _ANSI_ARGS_((Display *d, Colormap c,
				XColor *xp));
/* 19 */
EXTERN void		XBell _ANSI_ARGS_((Display *d, int i));
/* 20 */
EXTERN void		XChangeProperty _ANSI_ARGS_((Display *d, Window w,
				Atom a1, Atom a2, int i1, int i2,
				_Xconst unsigned char *c, int i3));
/* 21 */
EXTERN void		XChangeWindowAttributes _ANSI_ARGS_((Display *d,
				Window w, unsigned long ul,







|







89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/* 17 */
EXTERN Status		XGetWMColormapWindows _ANSI_ARGS_((Display *d,
				Window w, Window **wpp, int *ip));
/* 18 */
EXTERN Status		XAllocColor _ANSI_ARGS_((Display *d, Colormap c,
				XColor *xp));
/* 19 */
EXTERN int		XBell _ANSI_ARGS_((Display *d, int i));
/* 20 */
EXTERN void		XChangeProperty _ANSI_ARGS_((Display *d, Window w,
				Atom a1, Atom a2, int i1, int i2,
				_Xconst unsigned char *c, int i3));
/* 21 */
EXTERN void		XChangeWindowAttributes _ANSI_ARGS_((Display *d,
				Window w, unsigned long ul,
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
				unsigned int ui1, unsigned int ui2, int i3,
				int i4, unsigned long ul));
/* 26 */
EXTERN Pixmap		XCreateBitmapFromData _ANSI_ARGS_((Display *display,
				Drawable d, _Xconst char *data,
				unsigned int width, unsigned int height));
/* 27 */
EXTERN void		XDefineCursor _ANSI_ARGS_((Display *d, Window w,
				Cursor c));
/* 28 */
EXTERN void		XDeleteProperty _ANSI_ARGS_((Display *d, Window w,
				Atom a));
/* 29 */
EXTERN void		XDestroyWindow _ANSI_ARGS_((Display *d, Window w));
/* 30 */







|







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
				unsigned int ui1, unsigned int ui2, int i3,
				int i4, unsigned long ul));
/* 26 */
EXTERN Pixmap		XCreateBitmapFromData _ANSI_ARGS_((Display *display,
				Drawable d, _Xconst char *data,
				unsigned int width, unsigned int height));
/* 27 */
EXTERN int		XDefineCursor _ANSI_ARGS_((Display *d, Window w,
				Cursor c));
/* 28 */
EXTERN void		XDeleteProperty _ANSI_ARGS_((Display *d, Window w,
				Atom a));
/* 29 */
EXTERN void		XDestroyWindow _ANSI_ARGS_((Display *d, Window w));
/* 30 */
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
				GC g, XPoint *x, int i1, int i2, int i3));
/* 35 */
EXTERN int		XFillRectangles _ANSI_ARGS_((Display *d, Drawable dr,
				GC g, XRectangle *x, int i));
/* 36 */
EXTERN void		XForceScreenSaver _ANSI_ARGS_((Display *d, int i));
/* 37 */
EXTERN void		XFreeColormap _ANSI_ARGS_((Display *d, Colormap c));
/* 38 */
EXTERN void		XFreeColors _ANSI_ARGS_((Display *d, Colormap c,
				unsigned long *ulp, int i, unsigned long ul));
/* 39 */
EXTERN void		XFreeCursor _ANSI_ARGS_((Display *d, Cursor c));
/* 40 */
EXTERN void		XFreeModifiermap _ANSI_ARGS_((XModifierKeymap *x));
/* 41 */
EXTERN Status		XGetGeometry _ANSI_ARGS_((Display *d, Drawable dr,
				Window *w, int *i1, int *i2,
				unsigned int *ui1, unsigned int *ui2,
				unsigned int *ui3, unsigned int *ui4));
/* 42 */
EXTERN void		XGetInputFocus _ANSI_ARGS_((Display *d, Window *w,







|

|




|







149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
				GC g, XPoint *x, int i1, int i2, int i3));
/* 35 */
EXTERN int		XFillRectangles _ANSI_ARGS_((Display *d, Drawable dr,
				GC g, XRectangle *x, int i));
/* 36 */
EXTERN void		XForceScreenSaver _ANSI_ARGS_((Display *d, int i));
/* 37 */
EXTERN int		XFreeColormap _ANSI_ARGS_((Display *d, Colormap c));
/* 38 */
EXTERN int		XFreeColors _ANSI_ARGS_((Display *d, Colormap c,
				unsigned long *ulp, int i, unsigned long ul));
/* 39 */
EXTERN void		XFreeCursor _ANSI_ARGS_((Display *d, Cursor c));
/* 40 */
EXTERN int		XFreeModifiermap _ANSI_ARGS_((XModifierKeymap *x));
/* 41 */
EXTERN Status		XGetGeometry _ANSI_ARGS_((Display *d, Drawable dr,
				Window *w, int *i1, int *i2,
				unsigned int *ui1, unsigned int *ui2,
				unsigned int *ui3, unsigned int *ui4));
/* 42 */
EXTERN void		XGetInputFocus _ANSI_ARGS_((Display *d, Window *w,
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
/* 60 */
EXTERN void		XSelectInput _ANSI_ARGS_((Display *d, Window w,
				long l));
/* 61 */
EXTERN Status		XSendEvent _ANSI_ARGS_((Display *d, Window w, Bool b,
				long l, XEvent *x));
/* 62 */
EXTERN void		XSetCommand _ANSI_ARGS_((Display *d, Window w,
				char **c, int i));
/* 63 */
EXTERN void		XSetIconName _ANSI_ARGS_((Display *d, Window w,
				_Xconst char *c));
/* 64 */
EXTERN void		XSetInputFocus _ANSI_ARGS_((Display *d, Window w,
				int i, Time t));
/* 65 */
EXTERN void		XSetSelectionOwner _ANSI_ARGS_((Display *d, Atom a,
				Window w, Time t));
/* 66 */
EXTERN void		XSetWindowBackground _ANSI_ARGS_((Display *d,
				Window w, unsigned long ul));
/* 67 */
EXTERN void		XSetWindowBackgroundPixmap _ANSI_ARGS_((Display *d,
				Window w, Pixmap p));







|








|







224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
/* 60 */
EXTERN void		XSelectInput _ANSI_ARGS_((Display *d, Window w,
				long l));
/* 61 */
EXTERN Status		XSendEvent _ANSI_ARGS_((Display *d, Window w, Bool b,
				long l, XEvent *x));
/* 62 */
EXTERN int		XSetCommand _ANSI_ARGS_((Display *d, Window w,
				char **c, int i));
/* 63 */
EXTERN void		XSetIconName _ANSI_ARGS_((Display *d, Window w,
				_Xconst char *c));
/* 64 */
EXTERN void		XSetInputFocus _ANSI_ARGS_((Display *d, Window w,
				int i, Time t));
/* 65 */
EXTERN int		XSetSelectionOwner _ANSI_ARGS_((Display *d, Atom a,
				Window w, Time t));
/* 66 */
EXTERN void		XSetWindowBackground _ANSI_ARGS_((Display *d,
				Window w, unsigned long ul));
/* 67 */
EXTERN void		XSetWindowBackgroundPixmap _ANSI_ARGS_((Display *d,
				Window w, Pixmap p));
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
/* 72 */
EXTERN Bool		XTranslateCoordinates _ANSI_ARGS_((Display *d,
				Window w1, Window w2, int i1, int i2,
				int *i3, int *i4, Window *w3));
/* 73 */
EXTERN void		XUngrabKeyboard _ANSI_ARGS_((Display *d, Time t));
/* 74 */
EXTERN void		XUngrabPointer _ANSI_ARGS_((Display *d, Time t));
/* 75 */
EXTERN void		XUnmapWindow _ANSI_ARGS_((Display *d, Window w));
/* 76 */
EXTERN void		XWindowEvent _ANSI_ARGS_((Display *d, Window w,
				long l, XEvent *x));
/* 77 */
EXTERN void		XDestroyIC _ANSI_ARGS_((XIC x));
/* 78 */
EXTERN Bool		XFilterEvent _ANSI_ARGS_((XEvent *x, Window w));
/* 79 */
EXTERN int		XmbLookupString _ANSI_ARGS_((XIC xi,
				XKeyPressedEvent *xk, char *c, int i,
				KeySym *k, Status *s));
/* 80 */
EXTERN void		TkPutImage _ANSI_ARGS_((unsigned long *colors,
				int ncolors, Display *display, Drawable d,
				GC gc, XImage *image, int src_x, int src_y,
				int dest_x, int dest_y, unsigned int width,
				unsigned int height));
/* Slot 81 is reserved */
/* 82 */
EXTERN Status		XParseColor _ANSI_ARGS_((Display *display,







|














|







260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
/* 72 */
EXTERN Bool		XTranslateCoordinates _ANSI_ARGS_((Display *d,
				Window w1, Window w2, int i1, int i2,
				int *i3, int *i4, Window *w3));
/* 73 */
EXTERN void		XUngrabKeyboard _ANSI_ARGS_((Display *d, Time t));
/* 74 */
EXTERN int		XUngrabPointer _ANSI_ARGS_((Display *d, Time t));
/* 75 */
EXTERN void		XUnmapWindow _ANSI_ARGS_((Display *d, Window w));
/* 76 */
EXTERN void		XWindowEvent _ANSI_ARGS_((Display *d, Window w,
				long l, XEvent *x));
/* 77 */
EXTERN void		XDestroyIC _ANSI_ARGS_((XIC x));
/* 78 */
EXTERN Bool		XFilterEvent _ANSI_ARGS_((XEvent *x, Window w));
/* 79 */
EXTERN int		XmbLookupString _ANSI_ARGS_((XIC xi,
				XKeyPressedEvent *xk, char *c, int i,
				KeySym *k, Status *s));
/* 80 */
EXTERN int		TkPutImage _ANSI_ARGS_((unsigned long *colors,
				int ncolors, Display *display, Drawable d,
				GC gc, XImage *image, int src_x, int src_y,
				int dest_x, int dest_y, unsigned int width,
				unsigned int height));
/* Slot 81 is reserved */
/* 82 */
EXTERN Status		XParseColor _ANSI_ARGS_((Display *display,
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
/* 103 */
EXTERN Status		XStringListToTextProperty _ANSI_ARGS_((char **list,
				int count, XTextProperty *text_prop_return));
/* 104 */
EXTERN int		XDrawLine _ANSI_ARGS_((Display *d, Drawable dr, GC g,
				int x1, int y1, int x2, int y2));
/* 105 */
EXTERN void		XWarpPointer _ANSI_ARGS_((Display *d, Window s,
				Window dw, int sx, int sy, unsigned int sw,
				unsigned int sh, int dx, int dy));
/* 106 */
EXTERN int		XFillRectangle _ANSI_ARGS_((Display *display,
				Drawable d, GC gc, int x, int y,
				unsigned int width, unsigned int height));
#endif /* WIN */
#ifdef MAC_TCL
/* 0 */
EXTERN void		XSetDashes _ANSI_ARGS_((Display *display, GC gc,
				int dash_offset, _Xconst char *dash_list,
				int n));
/* 1 */
EXTERN XModifierKeymap * XGetModifierMapping _ANSI_ARGS_((Display *d));
/* 2 */
EXTERN XImage *		XCreateImage _ANSI_ARGS_((Display *d, Visual *v,
				unsigned int ui1, int i1, int i2, char *cp,







|









|







352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
/* 103 */
EXTERN Status		XStringListToTextProperty _ANSI_ARGS_((char **list,
				int count, XTextProperty *text_prop_return));
/* 104 */
EXTERN int		XDrawLine _ANSI_ARGS_((Display *d, Drawable dr, GC g,
				int x1, int y1, int x2, int y2));
/* 105 */
EXTERN int		XWarpPointer _ANSI_ARGS_((Display *d, Window s,
				Window dw, int sx, int sy, unsigned int sw,
				unsigned int sh, int dx, int dy));
/* 106 */
EXTERN int		XFillRectangle _ANSI_ARGS_((Display *display,
				Drawable d, GC gc, int x, int y,
				unsigned int width, unsigned int height));
#endif /* WIN */
#ifdef MAC_TCL
/* 0 */
EXTERN int		XSetDashes _ANSI_ARGS_((Display *display, GC gc,
				int dash_offset, _Xconst char *dash_list,
				int n));
/* 1 */
EXTERN XModifierKeymap * XGetModifierMapping _ANSI_ARGS_((Display *d));
/* 2 */
EXTERN XImage *		XCreateImage _ANSI_ARGS_((Display *d, Visual *v,
				unsigned int ui1, int i1, int i2, char *cp,
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
EXTERN Window		XRootWindow _ANSI_ARGS_((Display *d, int i));
/* 11 */
EXTERN XErrorHandler	XSetErrorHandler _ANSI_ARGS_((XErrorHandler x));
/* 12 */
EXTERN Status		XAllocColor _ANSI_ARGS_((Display *d, Colormap c,
				XColor *xp));
/* 13 */
EXTERN void		XBell _ANSI_ARGS_((Display *d, int i));
/* 14 */
EXTERN void		XChangeProperty _ANSI_ARGS_((Display *d, Window w,
				Atom a1, Atom a2, int i1, int i2,
				_Xconst unsigned char *c, int i3));
/* 15 */
EXTERN void		XChangeWindowAttributes _ANSI_ARGS_((Display *d,
				Window w, unsigned long ul,







|







398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
EXTERN Window		XRootWindow _ANSI_ARGS_((Display *d, int i));
/* 11 */
EXTERN XErrorHandler	XSetErrorHandler _ANSI_ARGS_((XErrorHandler x));
/* 12 */
EXTERN Status		XAllocColor _ANSI_ARGS_((Display *d, Colormap c,
				XColor *xp));
/* 13 */
EXTERN int		XBell _ANSI_ARGS_((Display *d, int i));
/* 14 */
EXTERN void		XChangeProperty _ANSI_ARGS_((Display *d, Window w,
				Atom a1, Atom a2, int i1, int i2,
				_Xconst unsigned char *c, int i3));
/* 15 */
EXTERN void		XChangeWindowAttributes _ANSI_ARGS_((Display *d,
				Window w, unsigned long ul,
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
				unsigned int ui1, unsigned int ui2, int i3,
				int i4, unsigned long ul));
/* 19 */
EXTERN Pixmap		XCreateBitmapFromData _ANSI_ARGS_((Display *display,
				Drawable d, _Xconst char *data,
				unsigned int width, unsigned int height));
/* 20 */
EXTERN void		XDefineCursor _ANSI_ARGS_((Display *d, Window w,
				Cursor c));
/* 21 */
EXTERN void		XDestroyWindow _ANSI_ARGS_((Display *d, Window w));
/* 22 */
EXTERN void		XDrawArc _ANSI_ARGS_((Display *d, Drawable dr, GC g,
				int i1, int i2, unsigned int ui1,
				unsigned int ui2, int i3, int i4));







|







425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
				unsigned int ui1, unsigned int ui2, int i3,
				int i4, unsigned long ul));
/* 19 */
EXTERN Pixmap		XCreateBitmapFromData _ANSI_ARGS_((Display *display,
				Drawable d, _Xconst char *data,
				unsigned int width, unsigned int height));
/* 20 */
EXTERN int		XDefineCursor _ANSI_ARGS_((Display *d, Window w,
				Cursor c));
/* 21 */
EXTERN void		XDestroyWindow _ANSI_ARGS_((Display *d, Window w));
/* 22 */
EXTERN void		XDrawArc _ANSI_ARGS_((Display *d, Drawable dr, GC g,
				int i1, int i2, unsigned int ui1,
				unsigned int ui2, int i3, int i4));
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
/* 26 */
EXTERN void		XFillPolygon _ANSI_ARGS_((Display *d, Drawable dr,
				GC g, XPoint *x, int i1, int i2, int i3));
/* 27 */
EXTERN int		XFillRectangles _ANSI_ARGS_((Display *d, Drawable dr,
				GC g, XRectangle *x, int i));
/* 28 */
EXTERN void		XFreeColormap _ANSI_ARGS_((Display *d, Colormap c));
/* 29 */
EXTERN void		XFreeColors _ANSI_ARGS_((Display *d, Colormap c,
				unsigned long *ulp, int i, unsigned long ul));
/* 30 */
EXTERN void		XFreeModifiermap _ANSI_ARGS_((XModifierKeymap *x));
/* 31 */
EXTERN Status		XGetGeometry _ANSI_ARGS_((Display *d, Drawable dr,
				Window *w, int *i1, int *i2,
				unsigned int *ui1, unsigned int *ui2,
				unsigned int *ui3, unsigned int *ui4));
/* 32 */
EXTERN int		XGetWindowProperty _ANSI_ARGS_((Display *d, Window w,







|

|


|







451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
/* 26 */
EXTERN void		XFillPolygon _ANSI_ARGS_((Display *d, Drawable dr,
				GC g, XPoint *x, int i1, int i2, int i3));
/* 27 */
EXTERN int		XFillRectangles _ANSI_ARGS_((Display *d, Drawable dr,
				GC g, XRectangle *x, int i));
/* 28 */
EXTERN int		XFreeColormap _ANSI_ARGS_((Display *d, Colormap c));
/* 29 */
EXTERN int		XFreeColors _ANSI_ARGS_((Display *d, Colormap c,
				unsigned long *ulp, int i, unsigned long ul));
/* 30 */
EXTERN int		XFreeModifiermap _ANSI_ARGS_((XModifierKeymap *x));
/* 31 */
EXTERN Status		XGetGeometry _ANSI_ARGS_((Display *d, Drawable dr,
				Window *w, int *i1, int *i2,
				unsigned int *ui1, unsigned int *ui2,
				unsigned int *ui3, unsigned int *ui4));
/* 32 */
EXTERN int		XGetWindowProperty _ANSI_ARGS_((Display *d, Window w,
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
/* 45 */
EXTERN void		XSetIconName _ANSI_ARGS_((Display *d, Window w,
				_Xconst char *c));
/* 46 */
EXTERN void		XSetInputFocus _ANSI_ARGS_((Display *d, Window w,
				int i, Time t));
/* 47 */
EXTERN void		XSetSelectionOwner _ANSI_ARGS_((Display *d, Atom a,
				Window w, Time t));
/* 48 */
EXTERN void		XSetWindowBackground _ANSI_ARGS_((Display *d,
				Window w, unsigned long ul));
/* 49 */
EXTERN void		XSetWindowBackgroundPixmap _ANSI_ARGS_((Display *d,
				Window w, Pixmap p));







|







510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
/* 45 */
EXTERN void		XSetIconName _ANSI_ARGS_((Display *d, Window w,
				_Xconst char *c));
/* 46 */
EXTERN void		XSetInputFocus _ANSI_ARGS_((Display *d, Window w,
				int i, Time t));
/* 47 */
EXTERN int		XSetSelectionOwner _ANSI_ARGS_((Display *d, Atom a,
				Window w, Time t));
/* 48 */
EXTERN void		XSetWindowBackground _ANSI_ARGS_((Display *d,
				Window w, unsigned long ul));
/* 49 */
EXTERN void		XSetWindowBackgroundPixmap _ANSI_ARGS_((Display *d,
				Window w, Pixmap p));
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
				Window w, unsigned int ui));
/* 53 */
EXTERN void		XSetWindowColormap _ANSI_ARGS_((Display *d, Window w,
				Colormap c));
/* 54 */
EXTERN void		XUngrabKeyboard _ANSI_ARGS_((Display *d, Time t));
/* 55 */
EXTERN void		XUngrabPointer _ANSI_ARGS_((Display *d, Time t));
/* 56 */
EXTERN void		XUnmapWindow _ANSI_ARGS_((Display *d, Window w));
/* 57 */
EXTERN void		TkPutImage _ANSI_ARGS_((unsigned long *colors,
				int ncolors, Display *display, Drawable d,
				GC gc, XImage *image, int src_x, int src_y,
				int dest_x, int dest_y, unsigned int width,
				unsigned int height));
/* 58 */
EXTERN Status		XParseColor _ANSI_ARGS_((Display *display,
				Colormap map, _Xconst char *spec,







|



|







533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
				Window w, unsigned int ui));
/* 53 */
EXTERN void		XSetWindowColormap _ANSI_ARGS_((Display *d, Window w,
				Colormap c));
/* 54 */
EXTERN void		XUngrabKeyboard _ANSI_ARGS_((Display *d, Time t));
/* 55 */
EXTERN int		XUngrabPointer _ANSI_ARGS_((Display *d, Time t));
/* 56 */
EXTERN void		XUnmapWindow _ANSI_ARGS_((Display *d, Window w));
/* 57 */
EXTERN int		TkPutImage _ANSI_ARGS_((unsigned long *colors,
				int ncolors, Display *display, Drawable d,
				GC gc, XImage *image, int src_x, int src_y,
				int dest_x, int dest_y, unsigned int width,
				unsigned int height));
/* 58 */
EXTERN Status		XParseColor _ANSI_ARGS_((Display *display,
				Colormap map, _Xconst char *spec,
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
EXTERN void		XDrawPoint _ANSI_ARGS_((Display *display, Drawable d,
				GC gc, int x, int y));
/* 86 */
EXTERN void		XDrawPoints _ANSI_ARGS_((Display *display,
				Drawable d, GC gc, XPoint *points,
				int npoints, int mode));
/* 87 */
EXTERN void		XWarpPointer _ANSI_ARGS_((Display *display,
				Window src_w, Window dest_w, int src_x,
				int src_y, unsigned int src_width,
				unsigned int src_height, int dest_x,
				int dest_y));
/* 88 */
EXTERN void		XQueryColor _ANSI_ARGS_((Display *display,
				Colormap colormap, XColor *def_in_out));
/* 89 */
EXTERN void		XQueryColors _ANSI_ARGS_((Display *display,
				Colormap colormap, XColor *defs_in_out,
				int ncolors));
/* 90 */
EXTERN Status		XQueryTree _ANSI_ARGS_((Display *d, Window w1,
				Window *w2, Window *w3, Window **w4,
				unsigned int *ui));
#endif /* MAC_TCL */
#ifdef MAC_OSX_TK /* AQUA */
/* 0 */
EXTERN void		XSetDashes _ANSI_ARGS_((Display *display, GC gc,
				int dash_offset, _Xconst char *dash_list,
				int n));
/* 1 */
EXTERN XModifierKeymap * XGetModifierMapping _ANSI_ARGS_((Display *d));
/* 2 */
EXTERN XImage *		XCreateImage _ANSI_ARGS_((Display *d, Visual *v,
				unsigned int ui1, int i1, int i2, char *cp,







|


















|







633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
EXTERN void		XDrawPoint _ANSI_ARGS_((Display *display, Drawable d,
				GC gc, int x, int y));
/* 86 */
EXTERN void		XDrawPoints _ANSI_ARGS_((Display *display,
				Drawable d, GC gc, XPoint *points,
				int npoints, int mode));
/* 87 */
EXTERN int		XWarpPointer _ANSI_ARGS_((Display *display,
				Window src_w, Window dest_w, int src_x,
				int src_y, unsigned int src_width,
				unsigned int src_height, int dest_x,
				int dest_y));
/* 88 */
EXTERN void		XQueryColor _ANSI_ARGS_((Display *display,
				Colormap colormap, XColor *def_in_out));
/* 89 */
EXTERN void		XQueryColors _ANSI_ARGS_((Display *display,
				Colormap colormap, XColor *defs_in_out,
				int ncolors));
/* 90 */
EXTERN Status		XQueryTree _ANSI_ARGS_((Display *d, Window w1,
				Window *w2, Window *w3, Window **w4,
				unsigned int *ui));
#endif /* MAC_TCL */
#ifdef MAC_OSX_TK /* AQUA */
/* 0 */
EXTERN int		XSetDashes _ANSI_ARGS_((Display *display, GC gc,
				int dash_offset, _Xconst char *dash_list,
				int n));
/* 1 */
EXTERN XModifierKeymap * XGetModifierMapping _ANSI_ARGS_((Display *d));
/* 2 */
EXTERN XImage *		XCreateImage _ANSI_ARGS_((Display *d, Visual *v,
				unsigned int ui1, int i1, int i2, char *cp,
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
EXTERN Window		XRootWindow _ANSI_ARGS_((Display *d, int i));
/* 11 */
EXTERN XErrorHandler	XSetErrorHandler _ANSI_ARGS_((XErrorHandler x));
/* 12 */
EXTERN Status		XAllocColor _ANSI_ARGS_((Display *d, Colormap c,
				XColor *xp));
/* 13 */
EXTERN void		XBell _ANSI_ARGS_((Display *d, int i));
/* 14 */
EXTERN void		XChangeProperty _ANSI_ARGS_((Display *d, Window w,
				Atom a1, Atom a2, int i1, int i2,
				_Xconst unsigned char *c, int i3));
/* 15 */
EXTERN void		XChangeWindowAttributes _ANSI_ARGS_((Display *d,
				Window w, unsigned long ul,







|







688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
EXTERN Window		XRootWindow _ANSI_ARGS_((Display *d, int i));
/* 11 */
EXTERN XErrorHandler	XSetErrorHandler _ANSI_ARGS_((XErrorHandler x));
/* 12 */
EXTERN Status		XAllocColor _ANSI_ARGS_((Display *d, Colormap c,
				XColor *xp));
/* 13 */
EXTERN int		XBell _ANSI_ARGS_((Display *d, int i));
/* 14 */
EXTERN void		XChangeProperty _ANSI_ARGS_((Display *d, Window w,
				Atom a1, Atom a2, int i1, int i2,
				_Xconst unsigned char *c, int i3));
/* 15 */
EXTERN void		XChangeWindowAttributes _ANSI_ARGS_((Display *d,
				Window w, unsigned long ul,
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
				unsigned int ui1, unsigned int ui2, int i3,
				int i4, unsigned long ul));
/* 19 */
EXTERN Pixmap		XCreateBitmapFromData _ANSI_ARGS_((Display *display,
				Drawable d, _Xconst char *data,
				unsigned int width, unsigned int height));
/* 20 */
EXTERN void		XDefineCursor _ANSI_ARGS_((Display *d, Window w,
				Cursor c));
/* 21 */
EXTERN void		XDestroyWindow _ANSI_ARGS_((Display *d, Window w));
/* 22 */
EXTERN void		XDrawArc _ANSI_ARGS_((Display *d, Drawable dr, GC g,
				int i1, int i2, unsigned int ui1,
				unsigned int ui2, int i3, int i4));







|







715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
				unsigned int ui1, unsigned int ui2, int i3,
				int i4, unsigned long ul));
/* 19 */
EXTERN Pixmap		XCreateBitmapFromData _ANSI_ARGS_((Display *display,
				Drawable d, _Xconst char *data,
				unsigned int width, unsigned int height));
/* 20 */
EXTERN int		XDefineCursor _ANSI_ARGS_((Display *d, Window w,
				Cursor c));
/* 21 */
EXTERN void		XDestroyWindow _ANSI_ARGS_((Display *d, Window w));
/* 22 */
EXTERN void		XDrawArc _ANSI_ARGS_((Display *d, Drawable dr, GC g,
				int i1, int i2, unsigned int ui1,
				unsigned int ui2, int i3, int i4));
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
/* 26 */
EXTERN void		XFillPolygon _ANSI_ARGS_((Display *d, Drawable dr,
				GC g, XPoint *x, int i1, int i2, int i3));
/* 27 */
EXTERN int		XFillRectangles _ANSI_ARGS_((Display *d, Drawable dr,
				GC g, XRectangle *x, int i));
/* 28 */
EXTERN void		XFreeColormap _ANSI_ARGS_((Display *d, Colormap c));
/* 29 */
EXTERN void		XFreeColors _ANSI_ARGS_((Display *d, Colormap c,
				unsigned long *ulp, int i, unsigned long ul));
/* 30 */
EXTERN void		XFreeModifiermap _ANSI_ARGS_((XModifierKeymap *x));
/* 31 */
EXTERN Status		XGetGeometry _ANSI_ARGS_((Display *d, Drawable dr,
				Window *w, int *i1, int *i2,
				unsigned int *ui1, unsigned int *ui2,
				unsigned int *ui3, unsigned int *ui4));
/* 32 */
EXTERN int		XGetWindowProperty _ANSI_ARGS_((Display *d, Window w,







|

|


|







741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
/* 26 */
EXTERN void		XFillPolygon _ANSI_ARGS_((Display *d, Drawable dr,
				GC g, XPoint *x, int i1, int i2, int i3));
/* 27 */
EXTERN int		XFillRectangles _ANSI_ARGS_((Display *d, Drawable dr,
				GC g, XRectangle *x, int i));
/* 28 */
EXTERN int		XFreeColormap _ANSI_ARGS_((Display *d, Colormap c));
/* 29 */
EXTERN int		XFreeColors _ANSI_ARGS_((Display *d, Colormap c,
				unsigned long *ulp, int i, unsigned long ul));
/* 30 */
EXTERN int		XFreeModifiermap _ANSI_ARGS_((XModifierKeymap *x));
/* 31 */
EXTERN Status		XGetGeometry _ANSI_ARGS_((Display *d, Drawable dr,
				Window *w, int *i1, int *i2,
				unsigned int *ui1, unsigned int *ui2,
				unsigned int *ui3, unsigned int *ui4));
/* 32 */
EXTERN int		XGetWindowProperty _ANSI_ARGS_((Display *d, Window w,
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
/* 45 */
EXTERN void		XSetIconName _ANSI_ARGS_((Display *d, Window w,
				_Xconst char *c));
/* 46 */
EXTERN void		XSetInputFocus _ANSI_ARGS_((Display *d, Window w,
				int i, Time t));
/* 47 */
EXTERN void		XSetSelectionOwner _ANSI_ARGS_((Display *d, Atom a,
				Window w, Time t));
/* 48 */
EXTERN void		XSetWindowBackground _ANSI_ARGS_((Display *d,
				Window w, unsigned long ul));
/* 49 */
EXTERN void		XSetWindowBackgroundPixmap _ANSI_ARGS_((Display *d,
				Window w, Pixmap p));







|







800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
/* 45 */
EXTERN void		XSetIconName _ANSI_ARGS_((Display *d, Window w,
				_Xconst char *c));
/* 46 */
EXTERN void		XSetInputFocus _ANSI_ARGS_((Display *d, Window w,
				int i, Time t));
/* 47 */
EXTERN int		XSetSelectionOwner _ANSI_ARGS_((Display *d, Atom a,
				Window w, Time t));
/* 48 */
EXTERN void		XSetWindowBackground _ANSI_ARGS_((Display *d,
				Window w, unsigned long ul));
/* 49 */
EXTERN void		XSetWindowBackgroundPixmap _ANSI_ARGS_((Display *d,
				Window w, Pixmap p));
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
				Window w, unsigned int ui));
/* 53 */
EXTERN void		XSetWindowColormap _ANSI_ARGS_((Display *d, Window w,
				Colormap c));
/* 54 */
EXTERN void		XUngrabKeyboard _ANSI_ARGS_((Display *d, Time t));
/* 55 */
EXTERN void		XUngrabPointer _ANSI_ARGS_((Display *d, Time t));
/* 56 */
EXTERN void		XUnmapWindow _ANSI_ARGS_((Display *d, Window w));
/* 57 */
EXTERN void		TkPutImage _ANSI_ARGS_((unsigned long *colors,
				int ncolors, Display *display, Drawable d,
				GC gc, XImage *image, int src_x, int src_y,
				int dest_x, int dest_y, unsigned int width,
				unsigned int height));
/* 58 */
EXTERN Status		XParseColor _ANSI_ARGS_((Display *display,
				Colormap map, _Xconst char *spec,







|



|







823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
				Window w, unsigned int ui));
/* 53 */
EXTERN void		XSetWindowColormap _ANSI_ARGS_((Display *d, Window w,
				Colormap c));
/* 54 */
EXTERN void		XUngrabKeyboard _ANSI_ARGS_((Display *d, Time t));
/* 55 */
EXTERN int		XUngrabPointer _ANSI_ARGS_((Display *d, Time t));
/* 56 */
EXTERN void		XUnmapWindow _ANSI_ARGS_((Display *d, Window w));
/* 57 */
EXTERN int		TkPutImage _ANSI_ARGS_((unsigned long *colors,
				int ncolors, Display *display, Drawable d,
				GC gc, XImage *image, int src_x, int src_y,
				int dest_x, int dest_y, unsigned int width,
				unsigned int height));
/* 58 */
EXTERN Status		XParseColor _ANSI_ARGS_((Display *display,
				Colormap map, _Xconst char *spec,
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
EXTERN void		XDrawPoint _ANSI_ARGS_((Display *display, Drawable d,
				GC gc, int x, int y));
/* 86 */
EXTERN void		XDrawPoints _ANSI_ARGS_((Display *display,
				Drawable d, GC gc, XPoint *points,
				int npoints, int mode));
/* 87 */
EXTERN void		XWarpPointer _ANSI_ARGS_((Display *display,
				Window src_w, Window dest_w, int src_x,
				int src_y, unsigned int src_width,
				unsigned int src_height, int dest_x,
				int dest_y));
/* 88 */
EXTERN void		XQueryColor _ANSI_ARGS_((Display *display,
				Colormap colormap, XColor *def_in_out));







|







923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
EXTERN void		XDrawPoint _ANSI_ARGS_((Display *display, Drawable d,
				GC gc, int x, int y));
/* 86 */
EXTERN void		XDrawPoints _ANSI_ARGS_((Display *display,
				Drawable d, GC gc, XPoint *points,
				int npoints, int mode));
/* 87 */
EXTERN int		XWarpPointer _ANSI_ARGS_((Display *display,
				Window src_w, Window dest_w, int src_x,
				int src_y, unsigned int src_width,
				unsigned int src_height, int dest_x,
				int dest_y));
/* 88 */
EXTERN void		XQueryColor _ANSI_ARGS_((Display *display,
				Colormap colormap, XColor *def_in_out));
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
#endif /* AQUA */

typedef struct TkIntXlibStubs {
    int magic;
    struct TkIntXlibStubHooks *hooks;

#if defined(__WIN32__) /* WIN */
    void (*xSetDashes) _ANSI_ARGS_((Display *display, GC gc, int dash_offset, _Xconst char *dash_list, int n)); /* 0 */
    XModifierKeymap * (*xGetModifierMapping) _ANSI_ARGS_((Display *d)); /* 1 */
    XImage * (*xCreateImage) _ANSI_ARGS_((Display *d, Visual *v, unsigned int ui1, int i1, int i2, char *cp, unsigned int ui2, unsigned int ui3, int i3, int i4)); /* 2 */
    XImage * (*xGetImage) _ANSI_ARGS_((Display *d, Drawable dr, int i1, int i2, unsigned int ui1, unsigned int ui2, unsigned long ul, int i3)); /* 3 */
    char * (*xGetAtomName) _ANSI_ARGS_((Display *d, Atom a)); /* 4 */
    char * (*xKeysymToString) _ANSI_ARGS_((KeySym k)); /* 5 */
    Colormap (*xCreateColormap) _ANSI_ARGS_((Display *d, Window w, Visual *v, int i)); /* 6 */
    Cursor (*xCreatePixmapCursor) _ANSI_ARGS_((Display *d, Pixmap p1, Pixmap p2, XColor *x1, XColor *x2, unsigned int ui1, unsigned int ui2)); /* 7 */
    Cursor (*xCreateGlyphCursor) _ANSI_ARGS_((Display *d, Font f1, Font f2, unsigned int ui1, unsigned int ui2, XColor *x1, XColor *x2)); /* 8 */
    GContext (*xGContextFromGC) _ANSI_ARGS_((GC g)); /* 9 */
    XHostAddress * (*xListHosts) _ANSI_ARGS_((Display *d, int *i, Bool *b)); /* 10 */
    KeySym (*xKeycodeToKeysym) _ANSI_ARGS_((Display *d, unsigned int k, int i)); /* 11 */
    KeySym (*xStringToKeysym) _ANSI_ARGS_((_Xconst char *c)); /* 12 */
    Window (*xRootWindow) _ANSI_ARGS_((Display *d, int i)); /* 13 */
    XErrorHandler (*xSetErrorHandler) _ANSI_ARGS_((XErrorHandler x)); /* 14 */
    Status (*xIconifyWindow) _ANSI_ARGS_((Display *d, Window w, int i)); /* 15 */
    Status (*xWithdrawWindow) _ANSI_ARGS_((Display *d, Window w, int i)); /* 16 */
    Status (*xGetWMColormapWindows) _ANSI_ARGS_((Display *d, Window w, Window **wpp, int *ip)); /* 17 */
    Status (*xAllocColor) _ANSI_ARGS_((Display *d, Colormap c, XColor *xp)); /* 18 */
    void (*xBell) _ANSI_ARGS_((Display *d, int i)); /* 19 */
    void (*xChangeProperty) _ANSI_ARGS_((Display *d, Window w, Atom a1, Atom a2, int i1, int i2, _Xconst unsigned char *c, int i3)); /* 20 */
    void (*xChangeWindowAttributes) _ANSI_ARGS_((Display *d, Window w, unsigned long ul, XSetWindowAttributes *x)); /* 21 */
    void (*xClearWindow) _ANSI_ARGS_((Display *d, Window w)); /* 22 */
    void (*xConfigureWindow) _ANSI_ARGS_((Display *d, Window w, unsigned int i, XWindowChanges *x)); /* 23 */
    void (*xCopyArea) _ANSI_ARGS_((Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 24 */
    void (*xCopyPlane) _ANSI_ARGS_((Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4, unsigned long ul)); /* 25 */
    Pixmap (*xCreateBitmapFromData) _ANSI_ARGS_((Display *display, Drawable d, _Xconst char *data, unsigned int width, unsigned int height)); /* 26 */
    void (*xDefineCursor) _ANSI_ARGS_((Display *d, Window w, Cursor c)); /* 27 */
    void (*xDeleteProperty) _ANSI_ARGS_((Display *d, Window w, Atom a)); /* 28 */
    void (*xDestroyWindow) _ANSI_ARGS_((Display *d, Window w)); /* 29 */
    void (*xDrawArc) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 30 */
    int (*xDrawLines) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2)); /* 31 */
    void (*xDrawRectangle) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2)); /* 32 */
    void (*xFillArc) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 33 */
    void (*xFillPolygon) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2, int i3)); /* 34 */
    int (*xFillRectangles) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XRectangle *x, int i)); /* 35 */
    void (*xForceScreenSaver) _ANSI_ARGS_((Display *d, int i)); /* 36 */
    void (*xFreeColormap) _ANSI_ARGS_((Display *d, Colormap c)); /* 37 */
    void (*xFreeColors) _ANSI_ARGS_((Display *d, Colormap c, unsigned long *ulp, int i, unsigned long ul)); /* 38 */
    void (*xFreeCursor) _ANSI_ARGS_((Display *d, Cursor c)); /* 39 */
    void (*xFreeModifiermap) _ANSI_ARGS_((XModifierKeymap *x)); /* 40 */
    Status (*xGetGeometry) _ANSI_ARGS_((Display *d, Drawable dr, Window *w, int *i1, int *i2, unsigned int *ui1, unsigned int *ui2, unsigned int *ui3, unsigned int *ui4)); /* 41 */
    void (*xGetInputFocus) _ANSI_ARGS_((Display *d, Window *w, int *i)); /* 42 */
    int (*xGetWindowProperty) _ANSI_ARGS_((Display *d, Window w, Atom a1, long l1, long l2, Bool b, Atom a2, Atom *ap, int *ip, unsigned long *ulp1, unsigned long *ulp2, unsigned char **cpp)); /* 43 */
    Status (*xGetWindowAttributes) _ANSI_ARGS_((Display *d, Window w, XWindowAttributes *x)); /* 44 */
    int (*xGrabKeyboard) _ANSI_ARGS_((Display *d, Window w, Bool b, int i1, int i2, Time t)); /* 45 */
    int (*xGrabPointer) _ANSI_ARGS_((Display *d, Window w1, Bool b, unsigned int ui, int i1, int i2, Window w2, Cursor c, Time t)); /* 46 */
    KeyCode (*xKeysymToKeycode) _ANSI_ARGS_((Display *d, KeySym k)); /* 47 */







|







|










|







|









|
|

|







948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
#endif /* AQUA */

typedef struct TkIntXlibStubs {
    int magic;
    struct TkIntXlibStubHooks *hooks;

#if defined(__WIN32__) /* WIN */
    int (*xSetDashes) _ANSI_ARGS_((Display *display, GC gc, int dash_offset, _Xconst char *dash_list, int n)); /* 0 */
    XModifierKeymap * (*xGetModifierMapping) _ANSI_ARGS_((Display *d)); /* 1 */
    XImage * (*xCreateImage) _ANSI_ARGS_((Display *d, Visual *v, unsigned int ui1, int i1, int i2, char *cp, unsigned int ui2, unsigned int ui3, int i3, int i4)); /* 2 */
    XImage * (*xGetImage) _ANSI_ARGS_((Display *d, Drawable dr, int i1, int i2, unsigned int ui1, unsigned int ui2, unsigned long ul, int i3)); /* 3 */
    char * (*xGetAtomName) _ANSI_ARGS_((Display *d, Atom a)); /* 4 */
    char * (*xKeysymToString) _ANSI_ARGS_((KeySym k)); /* 5 */
    Colormap (*xCreateColormap) _ANSI_ARGS_((Display *d, Window w, Visual *v, int i)); /* 6 */
    Cursor (*xCreatePixmapCursor) _ANSI_ARGS_((Display *d, Pixmap p1, Pixmap p2, XColor *x1, XColor *x2, unsigned int ui1, unsigned int ui2)); /* 7 */
    Cursor (*xCreateGlyphCursor) _ANSI_ARGS_((Display *d, Font f1, Font f2, unsigned int ui1, unsigned int ui2, XColor _Xconst *x1, XColor _Xconst *x2)); /* 8 */
    GContext (*xGContextFromGC) _ANSI_ARGS_((GC g)); /* 9 */
    XHostAddress * (*xListHosts) _ANSI_ARGS_((Display *d, int *i, Bool *b)); /* 10 */
    KeySym (*xKeycodeToKeysym) _ANSI_ARGS_((Display *d, unsigned int k, int i)); /* 11 */
    KeySym (*xStringToKeysym) _ANSI_ARGS_((_Xconst char *c)); /* 12 */
    Window (*xRootWindow) _ANSI_ARGS_((Display *d, int i)); /* 13 */
    XErrorHandler (*xSetErrorHandler) _ANSI_ARGS_((XErrorHandler x)); /* 14 */
    Status (*xIconifyWindow) _ANSI_ARGS_((Display *d, Window w, int i)); /* 15 */
    Status (*xWithdrawWindow) _ANSI_ARGS_((Display *d, Window w, int i)); /* 16 */
    Status (*xGetWMColormapWindows) _ANSI_ARGS_((Display *d, Window w, Window **wpp, int *ip)); /* 17 */
    Status (*xAllocColor) _ANSI_ARGS_((Display *d, Colormap c, XColor *xp)); /* 18 */
    int (*xBell) _ANSI_ARGS_((Display *d, int i)); /* 19 */
    void (*xChangeProperty) _ANSI_ARGS_((Display *d, Window w, Atom a1, Atom a2, int i1, int i2, _Xconst unsigned char *c, int i3)); /* 20 */
    void (*xChangeWindowAttributes) _ANSI_ARGS_((Display *d, Window w, unsigned long ul, XSetWindowAttributes *x)); /* 21 */
    void (*xClearWindow) _ANSI_ARGS_((Display *d, Window w)); /* 22 */
    void (*xConfigureWindow) _ANSI_ARGS_((Display *d, Window w, unsigned int i, XWindowChanges *x)); /* 23 */
    void (*xCopyArea) _ANSI_ARGS_((Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 24 */
    void (*xCopyPlane) _ANSI_ARGS_((Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4, unsigned long ul)); /* 25 */
    Pixmap (*xCreateBitmapFromData) _ANSI_ARGS_((Display *display, Drawable d, _Xconst char *data, unsigned int width, unsigned int height)); /* 26 */
    int (*xDefineCursor) _ANSI_ARGS_((Display *d, Window w, Cursor c)); /* 27 */
    void (*xDeleteProperty) _ANSI_ARGS_((Display *d, Window w, Atom a)); /* 28 */
    void (*xDestroyWindow) _ANSI_ARGS_((Display *d, Window w)); /* 29 */
    void (*xDrawArc) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 30 */
    int (*xDrawLines) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2)); /* 31 */
    void (*xDrawRectangle) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2)); /* 32 */
    void (*xFillArc) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 33 */
    void (*xFillPolygon) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2, int i3)); /* 34 */
    int (*xFillRectangles) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XRectangle *x, int i)); /* 35 */
    void (*xForceScreenSaver) _ANSI_ARGS_((Display *d, int i)); /* 36 */
    int (*xFreeColormap) _ANSI_ARGS_((Display *d, Colormap c)); /* 37 */
    int (*xFreeColors) _ANSI_ARGS_((Display *d, Colormap c, unsigned long *ulp, int i, unsigned long ul)); /* 38 */
    void (*xFreeCursor) _ANSI_ARGS_((Display *d, Cursor c)); /* 39 */
    int (*xFreeModifiermap) _ANSI_ARGS_((XModifierKeymap *x)); /* 40 */
    Status (*xGetGeometry) _ANSI_ARGS_((Display *d, Drawable dr, Window *w, int *i1, int *i2, unsigned int *ui1, unsigned int *ui2, unsigned int *ui3, unsigned int *ui4)); /* 41 */
    void (*xGetInputFocus) _ANSI_ARGS_((Display *d, Window *w, int *i)); /* 42 */
    int (*xGetWindowProperty) _ANSI_ARGS_((Display *d, Window w, Atom a1, long l1, long l2, Bool b, Atom a2, Atom *ap, int *ip, unsigned long *ulp1, unsigned long *ulp2, unsigned char **cpp)); /* 43 */
    Status (*xGetWindowAttributes) _ANSI_ARGS_((Display *d, Window w, XWindowAttributes *x)); /* 44 */
    int (*xGrabKeyboard) _ANSI_ARGS_((Display *d, Window w, Bool b, int i1, int i2, Time t)); /* 45 */
    int (*xGrabPointer) _ANSI_ARGS_((Display *d, Window w1, Bool b, unsigned int ui, int i1, int i2, Window w2, Cursor c, Time t)); /* 46 */
    KeyCode (*xKeysymToKeycode) _ANSI_ARGS_((Display *d, KeySym k)); /* 47 */
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
    Bool (*xQueryPointer) _ANSI_ARGS_((Display *d, Window w1, Window *w2, Window *w3, int *i1, int *i2, int *i3, int *i4, unsigned int *ui)); /* 55 */
    Status (*xQueryTree) _ANSI_ARGS_((Display *d, Window w1, Window *w2, Window *w3, Window **w4, unsigned int *ui)); /* 56 */
    void (*xRaiseWindow) _ANSI_ARGS_((Display *d, Window w)); /* 57 */
    void (*xRefreshKeyboardMapping) _ANSI_ARGS_((XMappingEvent *x)); /* 58 */
    void (*xResizeWindow) _ANSI_ARGS_((Display *d, Window w, unsigned int ui1, unsigned int ui2)); /* 59 */
    void (*xSelectInput) _ANSI_ARGS_((Display *d, Window w, long l)); /* 60 */
    Status (*xSendEvent) _ANSI_ARGS_((Display *d, Window w, Bool b, long l, XEvent *x)); /* 61 */
    void (*xSetCommand) _ANSI_ARGS_((Display *d, Window w, char **c, int i)); /* 62 */
    void (*xSetIconName) _ANSI_ARGS_((Display *d, Window w, _Xconst char *c)); /* 63 */
    void (*xSetInputFocus) _ANSI_ARGS_((Display *d, Window w, int i, Time t)); /* 64 */
    void (*xSetSelectionOwner) _ANSI_ARGS_((Display *d, Atom a, Window w, Time t)); /* 65 */
    void (*xSetWindowBackground) _ANSI_ARGS_((Display *d, Window w, unsigned long ul)); /* 66 */
    void (*xSetWindowBackgroundPixmap) _ANSI_ARGS_((Display *d, Window w, Pixmap p)); /* 67 */
    void (*xSetWindowBorder) _ANSI_ARGS_((Display *d, Window w, unsigned long ul)); /* 68 */
    void (*xSetWindowBorderPixmap) _ANSI_ARGS_((Display *d, Window w, Pixmap p)); /* 69 */
    void (*xSetWindowBorderWidth) _ANSI_ARGS_((Display *d, Window w, unsigned int ui)); /* 70 */
    void (*xSetWindowColormap) _ANSI_ARGS_((Display *d, Window w, Colormap c)); /* 71 */
    Bool (*xTranslateCoordinates) _ANSI_ARGS_((Display *d, Window w1, Window w2, int i1, int i2, int *i3, int *i4, Window *w3)); /* 72 */
    void (*xUngrabKeyboard) _ANSI_ARGS_((Display *d, Time t)); /* 73 */
    void (*xUngrabPointer) _ANSI_ARGS_((Display *d, Time t)); /* 74 */
    void (*xUnmapWindow) _ANSI_ARGS_((Display *d, Window w)); /* 75 */
    void (*xWindowEvent) _ANSI_ARGS_((Display *d, Window w, long l, XEvent *x)); /* 76 */
    void (*xDestroyIC) _ANSI_ARGS_((XIC x)); /* 77 */
    Bool (*xFilterEvent) _ANSI_ARGS_((XEvent *x, Window w)); /* 78 */
    int (*xmbLookupString) _ANSI_ARGS_((XIC xi, XKeyPressedEvent *xk, char *c, int i, KeySym *k, Status *s)); /* 79 */
    void (*tkPutImage) _ANSI_ARGS_((unsigned long *colors, int ncolors, Display *display, Drawable d, GC gc, XImage *image, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height)); /* 80 */
    VOID *reserved81;
    Status (*xParseColor) _ANSI_ARGS_((Display *display, Colormap map, _Xconst char *spec, XColor *colorPtr)); /* 82 */
    GC (*xCreateGC) _ANSI_ARGS_((Display *display, Drawable d, unsigned long valuemask, XGCValues *values)); /* 83 */
    void (*xFreeGC) _ANSI_ARGS_((Display *display, GC gc)); /* 84 */
    Atom (*xInternAtom) _ANSI_ARGS_((Display *display, _Xconst char *atom_name, Bool only_if_exists)); /* 85 */
    void (*xSetBackground) _ANSI_ARGS_((Display *display, GC gc, unsigned long foreground)); /* 86 */
    void (*xSetForeground) _ANSI_ARGS_((Display *display, GC gc, unsigned long foreground)); /* 87 */







|


|








|





|







1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
    Bool (*xQueryPointer) _ANSI_ARGS_((Display *d, Window w1, Window *w2, Window *w3, int *i1, int *i2, int *i3, int *i4, unsigned int *ui)); /* 55 */
    Status (*xQueryTree) _ANSI_ARGS_((Display *d, Window w1, Window *w2, Window *w3, Window **w4, unsigned int *ui)); /* 56 */
    void (*xRaiseWindow) _ANSI_ARGS_((Display *d, Window w)); /* 57 */
    void (*xRefreshKeyboardMapping) _ANSI_ARGS_((XMappingEvent *x)); /* 58 */
    void (*xResizeWindow) _ANSI_ARGS_((Display *d, Window w, unsigned int ui1, unsigned int ui2)); /* 59 */
    void (*xSelectInput) _ANSI_ARGS_((Display *d, Window w, long l)); /* 60 */
    Status (*xSendEvent) _ANSI_ARGS_((Display *d, Window w, Bool b, long l, XEvent *x)); /* 61 */
    int (*xSetCommand) _ANSI_ARGS_((Display *d, Window w, char **c, int i)); /* 62 */
    void (*xSetIconName) _ANSI_ARGS_((Display *d, Window w, _Xconst char *c)); /* 63 */
    void (*xSetInputFocus) _ANSI_ARGS_((Display *d, Window w, int i, Time t)); /* 64 */
    int (*xSetSelectionOwner) _ANSI_ARGS_((Display *d, Atom a, Window w, Time t)); /* 65 */
    void (*xSetWindowBackground) _ANSI_ARGS_((Display *d, Window w, unsigned long ul)); /* 66 */
    void (*xSetWindowBackgroundPixmap) _ANSI_ARGS_((Display *d, Window w, Pixmap p)); /* 67 */
    void (*xSetWindowBorder) _ANSI_ARGS_((Display *d, Window w, unsigned long ul)); /* 68 */
    void (*xSetWindowBorderPixmap) _ANSI_ARGS_((Display *d, Window w, Pixmap p)); /* 69 */
    void (*xSetWindowBorderWidth) _ANSI_ARGS_((Display *d, Window w, unsigned int ui)); /* 70 */
    void (*xSetWindowColormap) _ANSI_ARGS_((Display *d, Window w, Colormap c)); /* 71 */
    Bool (*xTranslateCoordinates) _ANSI_ARGS_((Display *d, Window w1, Window w2, int i1, int i2, int *i3, int *i4, Window *w3)); /* 72 */
    void (*xUngrabKeyboard) _ANSI_ARGS_((Display *d, Time t)); /* 73 */
    int (*xUngrabPointer) _ANSI_ARGS_((Display *d, Time t)); /* 74 */
    void (*xUnmapWindow) _ANSI_ARGS_((Display *d, Window w)); /* 75 */
    void (*xWindowEvent) _ANSI_ARGS_((Display *d, Window w, long l, XEvent *x)); /* 76 */
    void (*xDestroyIC) _ANSI_ARGS_((XIC x)); /* 77 */
    Bool (*xFilterEvent) _ANSI_ARGS_((XEvent *x, Window w)); /* 78 */
    int (*xmbLookupString) _ANSI_ARGS_((XIC xi, XKeyPressedEvent *xk, char *c, int i, KeySym *k, Status *s)); /* 79 */
    int (*tkPutImage) _ANSI_ARGS_((unsigned long *colors, int ncolors, Display *display, Drawable d, GC gc, XImage *image, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height)); /* 80 */
    VOID *reserved81;
    Status (*xParseColor) _ANSI_ARGS_((Display *display, Colormap map, _Xconst char *spec, XColor *colorPtr)); /* 82 */
    GC (*xCreateGC) _ANSI_ARGS_((Display *display, Drawable d, unsigned long valuemask, XGCValues *values)); /* 83 */
    void (*xFreeGC) _ANSI_ARGS_((Display *display, GC gc)); /* 84 */
    Atom (*xInternAtom) _ANSI_ARGS_((Display *display, _Xconst char *atom_name, Bool only_if_exists)); /* 85 */
    void (*xSetBackground) _ANSI_ARGS_((Display *display, GC gc, unsigned long foreground)); /* 86 */
    void (*xSetForeground) _ANSI_ARGS_((Display *display, GC gc, unsigned long foreground)); /* 87 */
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064





























































































1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
    void (*xSetLineAttributes) _ANSI_ARGS_((Display *display, GC gc, unsigned int line_width, int line_style, int cap_style, int join_style)); /* 98 */
    int (*_XInitImageFuncPtrs) _ANSI_ARGS_((XImage *image)); /* 99 */
    XIC (*xCreateIC) _ANSI_ARGS_((void)); /* 100 */
    XVisualInfo * (*xGetVisualInfo) _ANSI_ARGS_((Display *display, long vinfo_mask, XVisualInfo *vinfo_template, int *nitems_return)); /* 101 */
    void (*xSetWMClientMachine) _ANSI_ARGS_((Display *display, Window w, XTextProperty *text_prop)); /* 102 */
    Status (*xStringListToTextProperty) _ANSI_ARGS_((char **list, int count, XTextProperty *text_prop_return)); /* 103 */
    int (*xDrawLine) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int x1, int y1, int x2, int y2)); /* 104 */
    void (*xWarpPointer) _ANSI_ARGS_((Display *d, Window s, Window dw, int sx, int sy, unsigned int sw, unsigned int sh, int dx, int dy)); /* 105 */
    int (*xFillRectangle) _ANSI_ARGS_((Display *display, Drawable d, GC gc, int x, int y, unsigned int width, unsigned int height)); /* 106 */
#endif /* WIN */
#ifdef MAC_TCL
    void (*xSetDashes) _ANSI_ARGS_((Display *display, GC gc, int dash_offset, _Xconst char *dash_list, int n)); /* 0 */





























































































    XModifierKeymap * (*xGetModifierMapping) _ANSI_ARGS_((Display *d)); /* 1 */
    XImage * (*xCreateImage) _ANSI_ARGS_((Display *d, Visual *v, unsigned int ui1, int i1, int i2, char *cp, unsigned int ui2, unsigned int ui3, int i3, int i4)); /* 2 */
    XImage * (*xGetImage) _ANSI_ARGS_((Display *d, Drawable dr, int i1, int i2, unsigned int ui1, unsigned int ui2, unsigned long ul, int i3)); /* 3 */
    char * (*xGetAtomName) _ANSI_ARGS_((Display *d, Atom a)); /* 4 */
    char * (*xKeysymToString) _ANSI_ARGS_((KeySym k)); /* 5 */
    Colormap (*xCreateColormap) _ANSI_ARGS_((Display *d, Window w, Visual *v, int i)); /* 6 */
    GContext (*xGContextFromGC) _ANSI_ARGS_((GC g)); /* 7 */
    KeySym (*xKeycodeToKeysym) _ANSI_ARGS_((Display *d, KeyCode k, int i)); /* 8 */
    KeySym (*xStringToKeysym) _ANSI_ARGS_((_Xconst char *c)); /* 9 */
    Window (*xRootWindow) _ANSI_ARGS_((Display *d, int i)); /* 10 */
    XErrorHandler (*xSetErrorHandler) _ANSI_ARGS_((XErrorHandler x)); /* 11 */
    Status (*xAllocColor) _ANSI_ARGS_((Display *d, Colormap c, XColor *xp)); /* 12 */
    void (*xBell) _ANSI_ARGS_((Display *d, int i)); /* 13 */
    void (*xChangeProperty) _ANSI_ARGS_((Display *d, Window w, Atom a1, Atom a2, int i1, int i2, _Xconst unsigned char *c, int i3)); /* 14 */
    void (*xChangeWindowAttributes) _ANSI_ARGS_((Display *d, Window w, unsigned long ul, XSetWindowAttributes *x)); /* 15 */
    void (*xConfigureWindow) _ANSI_ARGS_((Display *d, Window w, unsigned int i, XWindowChanges *x)); /* 16 */
    void (*xCopyArea) _ANSI_ARGS_((Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 17 */
    void (*xCopyPlane) _ANSI_ARGS_((Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4, unsigned long ul)); /* 18 */
    Pixmap (*xCreateBitmapFromData) _ANSI_ARGS_((Display *display, Drawable d, _Xconst char *data, unsigned int width, unsigned int height)); /* 19 */
    void (*xDefineCursor) _ANSI_ARGS_((Display *d, Window w, Cursor c)); /* 20 */
    void (*xDestroyWindow) _ANSI_ARGS_((Display *d, Window w)); /* 21 */
    void (*xDrawArc) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 22 */
    int (*xDrawLines) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2)); /* 23 */
    void (*xDrawRectangle) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2)); /* 24 */
    void (*xFillArc) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 25 */
    void (*xFillPolygon) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2, int i3)); /* 26 */
    int (*xFillRectangles) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XRectangle *x, int i)); /* 27 */
    void (*xFreeColormap) _ANSI_ARGS_((Display *d, Colormap c)); /* 28 */
    void (*xFreeColors) _ANSI_ARGS_((Display *d, Colormap c, unsigned long *ulp, int i, unsigned long ul)); /* 29 */
    void (*xFreeModifiermap) _ANSI_ARGS_((XModifierKeymap *x)); /* 30 */
    Status (*xGetGeometry) _ANSI_ARGS_((Display *d, Drawable dr, Window *w, int *i1, int *i2, unsigned int *ui1, unsigned int *ui2, unsigned int *ui3, unsigned int *ui4)); /* 31 */
    int (*xGetWindowProperty) _ANSI_ARGS_((Display *d, Window w, Atom a1, long l1, long l2, Bool b, Atom a2, Atom *ap, int *ip, unsigned long *ulp1, unsigned long *ulp2, unsigned char **cpp)); /* 32 */
    int (*xGrabKeyboard) _ANSI_ARGS_((Display *d, Window w, Bool b, int i1, int i2, Time t)); /* 33 */
    int (*xGrabPointer) _ANSI_ARGS_((Display *d, Window w1, Bool b, unsigned int ui, int i1, int i2, Window w2, Cursor c, Time t)); /* 34 */
    KeyCode (*xKeysymToKeycode) _ANSI_ARGS_((Display *d, KeySym k)); /* 35 */
    void (*xMapWindow) _ANSI_ARGS_((Display *d, Window w)); /* 36 */
    void (*xMoveResizeWindow) _ANSI_ARGS_((Display *d, Window w, int i1, int i2, unsigned int ui1, unsigned int ui2)); /* 37 */
    void (*xMoveWindow) _ANSI_ARGS_((Display *d, Window w, int i1, int i2)); /* 38 */
    Bool (*xQueryPointer) _ANSI_ARGS_((Display *d, Window w1, Window *w2, Window *w3, int *i1, int *i2, int *i3, int *i4, unsigned int *ui)); /* 39 */
    void (*xRaiseWindow) _ANSI_ARGS_((Display *d, Window w)); /* 40 */
    void (*xRefreshKeyboardMapping) _ANSI_ARGS_((XMappingEvent *x)); /* 41 */
    void (*xResizeWindow) _ANSI_ARGS_((Display *d, Window w, unsigned int ui1, unsigned int ui2)); /* 42 */
    void (*xSelectInput) _ANSI_ARGS_((Display *d, Window w, long l)); /* 43 */
    Status (*xSendEvent) _ANSI_ARGS_((Display *d, Window w, Bool b, long l, XEvent *x)); /* 44 */
    void (*xSetIconName) _ANSI_ARGS_((Display *d, Window w, _Xconst char *c)); /* 45 */
    void (*xSetInputFocus) _ANSI_ARGS_((Display *d, Window w, int i, Time t)); /* 46 */
    void (*xSetSelectionOwner) _ANSI_ARGS_((Display *d, Atom a, Window w, Time t)); /* 47 */
    void (*xSetWindowBackground) _ANSI_ARGS_((Display *d, Window w, unsigned long ul)); /* 48 */
    void (*xSetWindowBackgroundPixmap) _ANSI_ARGS_((Display *d, Window w, Pixmap p)); /* 49 */
    void (*xSetWindowBorder) _ANSI_ARGS_((Display *d, Window w, unsigned long ul)); /* 50 */
    void (*xSetWindowBorderPixmap) _ANSI_ARGS_((Display *d, Window w, Pixmap p)); /* 51 */
    void (*xSetWindowBorderWidth) _ANSI_ARGS_((Display *d, Window w, unsigned int ui)); /* 52 */
    void (*xSetWindowColormap) _ANSI_ARGS_((Display *d, Window w, Colormap c)); /* 53 */
    void (*xUngrabKeyboard) _ANSI_ARGS_((Display *d, Time t)); /* 54 */
    void (*xUngrabPointer) _ANSI_ARGS_((Display *d, Time t)); /* 55 */
    void (*xUnmapWindow) _ANSI_ARGS_((Display *d, Window w)); /* 56 */
    void (*tkPutImage) _ANSI_ARGS_((unsigned long *colors, int ncolors, Display *display, Drawable d, GC gc, XImage *image, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height)); /* 57 */
    Status (*xParseColor) _ANSI_ARGS_((Display *display, Colormap map, _Xconst char *spec, XColor *colorPtr)); /* 58 */
    GC (*xCreateGC) _ANSI_ARGS_((Display *display, Drawable d, unsigned long valuemask, XGCValues *values)); /* 59 */
    void (*xFreeGC) _ANSI_ARGS_((Display *display, GC gc)); /* 60 */
    Atom (*xInternAtom) _ANSI_ARGS_((Display *display, _Xconst char *atom_name, Bool only_if_exists)); /* 61 */
    void (*xSetBackground) _ANSI_ARGS_((Display *display, GC gc, unsigned long foreground)); /* 62 */
    void (*xSetForeground) _ANSI_ARGS_((Display *display, GC gc, unsigned long foreground)); /* 63 */
    void (*xSetClipMask) _ANSI_ARGS_((Display *display, GC gc, Pixmap pixmap)); /* 64 */







|



|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>












|






|







|
|
|
















|







|

|







1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
    void (*xSetLineAttributes) _ANSI_ARGS_((Display *display, GC gc, unsigned int line_width, int line_style, int cap_style, int join_style)); /* 98 */
    int (*_XInitImageFuncPtrs) _ANSI_ARGS_((XImage *image)); /* 99 */
    XIC (*xCreateIC) _ANSI_ARGS_((void)); /* 100 */
    XVisualInfo * (*xGetVisualInfo) _ANSI_ARGS_((Display *display, long vinfo_mask, XVisualInfo *vinfo_template, int *nitems_return)); /* 101 */
    void (*xSetWMClientMachine) _ANSI_ARGS_((Display *display, Window w, XTextProperty *text_prop)); /* 102 */
    Status (*xStringListToTextProperty) _ANSI_ARGS_((char **list, int count, XTextProperty *text_prop_return)); /* 103 */
    int (*xDrawLine) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int x1, int y1, int x2, int y2)); /* 104 */
    int (*xWarpPointer) _ANSI_ARGS_((Display *d, Window s, Window dw, int sx, int sy, unsigned int sw, unsigned int sh, int dx, int dy)); /* 105 */
    int (*xFillRectangle) _ANSI_ARGS_((Display *display, Drawable d, GC gc, int x, int y, unsigned int width, unsigned int height)); /* 106 */
#endif /* WIN */
#ifdef MAC_TCL
    int (*xSetDashes) _ANSI_ARGS_((Display *display, GC gc, int dash_offset, _Xconst char *dash_list, int n)); /* 0 */
    XModifierKeymap * (*xGetModifierMapping) _ANSI_ARGS_((Display *d)); /* 1 */
    XImage * (*xCreateImage) _ANSI_ARGS_((Display *d, Visual *v, unsigned int ui1, int i1, int i2, char *cp, unsigned int ui2, unsigned int ui3, int i3, int i4)); /* 2 */
    XImage * (*xGetImage) _ANSI_ARGS_((Display *d, Drawable dr, int i1, int i2, unsigned int ui1, unsigned int ui2, unsigned long ul, int i3)); /* 3 */
    char * (*xGetAtomName) _ANSI_ARGS_((Display *d, Atom a)); /* 4 */
    char * (*xKeysymToString) _ANSI_ARGS_((KeySym k)); /* 5 */
    Colormap (*xCreateColormap) _ANSI_ARGS_((Display *d, Window w, Visual *v, int i)); /* 6 */
    GContext (*xGContextFromGC) _ANSI_ARGS_((GC g)); /* 7 */
    KeySym (*xKeycodeToKeysym) _ANSI_ARGS_((Display *d, KeyCode k, int i)); /* 8 */
    KeySym (*xStringToKeysym) _ANSI_ARGS_((_Xconst char *c)); /* 9 */
    Window (*xRootWindow) _ANSI_ARGS_((Display *d, int i)); /* 10 */
    XErrorHandler (*xSetErrorHandler) _ANSI_ARGS_((XErrorHandler x)); /* 11 */
    Status (*xAllocColor) _ANSI_ARGS_((Display *d, Colormap c, XColor *xp)); /* 12 */
    int (*xBell) _ANSI_ARGS_((Display *d, int i)); /* 13 */
    void (*xChangeProperty) _ANSI_ARGS_((Display *d, Window w, Atom a1, Atom a2, int i1, int i2, _Xconst unsigned char *c, int i3)); /* 14 */
    void (*xChangeWindowAttributes) _ANSI_ARGS_((Display *d, Window w, unsigned long ul, XSetWindowAttributes *x)); /* 15 */
    void (*xConfigureWindow) _ANSI_ARGS_((Display *d, Window w, unsigned int i, XWindowChanges *x)); /* 16 */
    void (*xCopyArea) _ANSI_ARGS_((Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 17 */
    void (*xCopyPlane) _ANSI_ARGS_((Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4, unsigned long ul)); /* 18 */
    Pixmap (*xCreateBitmapFromData) _ANSI_ARGS_((Display *display, Drawable d, _Xconst char *data, unsigned int width, unsigned int height)); /* 19 */
    int (*xDefineCursor) _ANSI_ARGS_((Display *d, Window w, Cursor c)); /* 20 */
    void (*xDestroyWindow) _ANSI_ARGS_((Display *d, Window w)); /* 21 */
    void (*xDrawArc) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 22 */
    int (*xDrawLines) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2)); /* 23 */
    void (*xDrawRectangle) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2)); /* 24 */
    void (*xFillArc) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 25 */
    void (*xFillPolygon) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2, int i3)); /* 26 */
    int (*xFillRectangles) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XRectangle *x, int i)); /* 27 */
    int (*xFreeColormap) _ANSI_ARGS_((Display *d, Colormap c)); /* 28 */
    int (*xFreeColors) _ANSI_ARGS_((Display *d, Colormap c, unsigned long *ulp, int i, unsigned long ul)); /* 29 */
    int (*xFreeModifiermap) _ANSI_ARGS_((XModifierKeymap *x)); /* 30 */
    Status (*xGetGeometry) _ANSI_ARGS_((Display *d, Drawable dr, Window *w, int *i1, int *i2, unsigned int *ui1, unsigned int *ui2, unsigned int *ui3, unsigned int *ui4)); /* 31 */
    int (*xGetWindowProperty) _ANSI_ARGS_((Display *d, Window w, Atom a1, long l1, long l2, Bool b, Atom a2, Atom *ap, int *ip, unsigned long *ulp1, unsigned long *ulp2, unsigned char **cpp)); /* 32 */
    int (*xGrabKeyboard) _ANSI_ARGS_((Display *d, Window w, Bool b, int i1, int i2, Time t)); /* 33 */
    int (*xGrabPointer) _ANSI_ARGS_((Display *d, Window w1, Bool b, unsigned int ui, int i1, int i2, Window w2, Cursor c, Time t)); /* 34 */
    KeyCode (*xKeysymToKeycode) _ANSI_ARGS_((Display *d, KeySym k)); /* 35 */
    void (*xMapWindow) _ANSI_ARGS_((Display *d, Window w)); /* 36 */
    void (*xMoveResizeWindow) _ANSI_ARGS_((Display *d, Window w, int i1, int i2, unsigned int ui1, unsigned int ui2)); /* 37 */
    void (*xMoveWindow) _ANSI_ARGS_((Display *d, Window w, int i1, int i2)); /* 38 */
    Bool (*xQueryPointer) _ANSI_ARGS_((Display *d, Window w1, Window *w2, Window *w3, int *i1, int *i2, int *i3, int *i4, unsigned int *ui)); /* 39 */
    void (*xRaiseWindow) _ANSI_ARGS_((Display *d, Window w)); /* 40 */
    void (*xRefreshKeyboardMapping) _ANSI_ARGS_((XMappingEvent *x)); /* 41 */
    void (*xResizeWindow) _ANSI_ARGS_((Display *d, Window w, unsigned int ui1, unsigned int ui2)); /* 42 */
    void (*xSelectInput) _ANSI_ARGS_((Display *d, Window w, long l)); /* 43 */
    Status (*xSendEvent) _ANSI_ARGS_((Display *d, Window w, Bool b, long l, XEvent *x)); /* 44 */
    void (*xSetIconName) _ANSI_ARGS_((Display *d, Window w, _Xconst char *c)); /* 45 */
    void (*xSetInputFocus) _ANSI_ARGS_((Display *d, Window w, int i, Time t)); /* 46 */
    int (*xSetSelectionOwner) _ANSI_ARGS_((Display *d, Atom a, Window w, Time t)); /* 47 */
    void (*xSetWindowBackground) _ANSI_ARGS_((Display *d, Window w, unsigned long ul)); /* 48 */
    void (*xSetWindowBackgroundPixmap) _ANSI_ARGS_((Display *d, Window w, Pixmap p)); /* 49 */
    void (*xSetWindowBorder) _ANSI_ARGS_((Display *d, Window w, unsigned long ul)); /* 50 */
    void (*xSetWindowBorderPixmap) _ANSI_ARGS_((Display *d, Window w, Pixmap p)); /* 51 */
    void (*xSetWindowBorderWidth) _ANSI_ARGS_((Display *d, Window w, unsigned int ui)); /* 52 */
    void (*xSetWindowColormap) _ANSI_ARGS_((Display *d, Window w, Colormap c)); /* 53 */
    void (*xUngrabKeyboard) _ANSI_ARGS_((Display *d, Time t)); /* 54 */
    int (*xUngrabPointer) _ANSI_ARGS_((Display *d, Time t)); /* 55 */
    void (*xUnmapWindow) _ANSI_ARGS_((Display *d, Window w)); /* 56 */
    int (*tkPutImage) _ANSI_ARGS_((unsigned long *colors, int ncolors, Display *display, Drawable d, GC gc, XImage *image, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height)); /* 57 */
    Status (*xParseColor) _ANSI_ARGS_((Display *display, Colormap map, _Xconst char *spec, XColor *colorPtr)); /* 58 */
    GC (*xCreateGC) _ANSI_ARGS_((Display *display, Drawable d, unsigned long valuemask, XGCValues *values)); /* 59 */
    void (*xFreeGC) _ANSI_ARGS_((Display *display, GC gc)); /* 60 */
    Atom (*xInternAtom) _ANSI_ARGS_((Display *display, _Xconst char *atom_name, Bool only_if_exists)); /* 61 */
    void (*xSetBackground) _ANSI_ARGS_((Display *display, GC gc, unsigned long foreground)); /* 62 */
    void (*xSetForeground) _ANSI_ARGS_((Display *display, GC gc, unsigned long foreground)); /* 63 */
    void (*xSetClipMask) _ANSI_ARGS_((Display *display, GC gc, Pixmap pixmap)); /* 64 */
    void (*xSetClipOrigin) _ANSI_ARGS_((Display *display, GC gc, int clip_x_origin, int clip_y_origin)); /* 65 */
    void (*xSetTSOrigin) _ANSI_ARGS_((Display *display, GC gc, int ts_x_origin, int ts_y_origin)); /* 66 */
    void (*xChangeGC) _ANSI_ARGS_((Display *d, GC gc, unsigned long mask, XGCValues *values)); /* 67 */
    void (*xSetFont) _ANSI_ARGS_((Display *display, GC gc, Font font)); /* 68 */
    void (*xSetArcMode) _ANSI_ARGS_((Display *display, GC gc, int arc_mode)); /* 69 */
    void (*xSetStipple) _ANSI_ARGS_((Display *display, GC gc, Pixmap stipple)); /* 70 */
    void (*xSetFillRule) _ANSI_ARGS_((Display *display, GC gc, int fill_rule)); /* 71 */
    void (*xSetFillStyle) _ANSI_ARGS_((Display *display, GC gc, int fill_style)); /* 72 */
    void (*xSetFunction) _ANSI_ARGS_((Display *display, GC gc, int function)); /* 73 */
    void (*xSetLineAttributes) _ANSI_ARGS_((Display *display, GC gc, unsigned int line_width, int line_style, int cap_style, int join_style)); /* 74 */
    int (*_XInitImageFuncPtrs) _ANSI_ARGS_((XImage *image)); /* 75 */
    XIC (*xCreateIC) _ANSI_ARGS_((void)); /* 76 */
    XVisualInfo * (*xGetVisualInfo) _ANSI_ARGS_((Display *display, long vinfo_mask, XVisualInfo *vinfo_template, int *nitems_return)); /* 77 */
    void (*xSetWMClientMachine) _ANSI_ARGS_((Display *display, Window w, XTextProperty *text_prop)); /* 78 */
    Status (*xStringListToTextProperty) _ANSI_ARGS_((char **list, int count, XTextProperty *text_prop_return)); /* 79 */
    void (*xDrawSegments) _ANSI_ARGS_((Display *display, Drawable d, GC gc, XSegment *segments, int nsegments)); /* 80 */
    void (*xForceScreenSaver) _ANSI_ARGS_((Display *display, int mode)); /* 81 */
    int (*xDrawLine) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int x1, int y1, int x2, int y2)); /* 82 */
    int (*xFillRectangle) _ANSI_ARGS_((Display *display, Drawable d, GC gc, int x, int y, unsigned int width, unsigned int height)); /* 83 */
    void (*xClearWindow) _ANSI_ARGS_((Display *d, Window w)); /* 84 */
    void (*xDrawPoint) _ANSI_ARGS_((Display *display, Drawable d, GC gc, int x, int y)); /* 85 */
    void (*xDrawPoints) _ANSI_ARGS_((Display *display, Drawable d, GC gc, XPoint *points, int npoints, int mode)); /* 86 */
    int (*xWarpPointer) _ANSI_ARGS_((Display *display, Window src_w, Window dest_w, int src_x, int src_y, unsigned int src_width, unsigned int src_height, int dest_x, int dest_y)); /* 87 */
    void (*xQueryColor) _ANSI_ARGS_((Display *display, Colormap colormap, XColor *def_in_out)); /* 88 */
    void (*xQueryColors) _ANSI_ARGS_((Display *display, Colormap colormap, XColor *defs_in_out, int ncolors)); /* 89 */
    Status (*xQueryTree) _ANSI_ARGS_((Display *d, Window w1, Window *w2, Window *w3, Window **w4, unsigned int *ui)); /* 90 */
#endif /* MAC_TCL */
#ifdef MAC_OSX_TK /* AQUA */
    int (*xSetDashes) _ANSI_ARGS_((Display *display, GC gc, int dash_offset, _Xconst char *dash_list, int n)); /* 0 */
    XModifierKeymap * (*xGetModifierMapping) _ANSI_ARGS_((Display *d)); /* 1 */
    XImage * (*xCreateImage) _ANSI_ARGS_((Display *d, Visual *v, unsigned int ui1, int i1, int i2, char *cp, unsigned int ui2, unsigned int ui3, int i3, int i4)); /* 2 */
    XImage * (*xGetImage) _ANSI_ARGS_((Display *d, Drawable dr, int i1, int i2, unsigned int ui1, unsigned int ui2, unsigned long ul, int i3)); /* 3 */
    char * (*xGetAtomName) _ANSI_ARGS_((Display *d, Atom a)); /* 4 */
    char * (*xKeysymToString) _ANSI_ARGS_((KeySym k)); /* 5 */
    Colormap (*xCreateColormap) _ANSI_ARGS_((Display *d, Window w, Visual *v, int i)); /* 6 */
    GContext (*xGContextFromGC) _ANSI_ARGS_((GC g)); /* 7 */
    KeySym (*xKeycodeToKeysym) _ANSI_ARGS_((Display *d, KeyCode k, int i)); /* 8 */
    KeySym (*xStringToKeysym) _ANSI_ARGS_((_Xconst char *c)); /* 9 */
    Window (*xRootWindow) _ANSI_ARGS_((Display *d, int i)); /* 10 */
    XErrorHandler (*xSetErrorHandler) _ANSI_ARGS_((XErrorHandler x)); /* 11 */
    Status (*xAllocColor) _ANSI_ARGS_((Display *d, Colormap c, XColor *xp)); /* 12 */
    int (*xBell) _ANSI_ARGS_((Display *d, int i)); /* 13 */
    void (*xChangeProperty) _ANSI_ARGS_((Display *d, Window w, Atom a1, Atom a2, int i1, int i2, _Xconst unsigned char *c, int i3)); /* 14 */
    void (*xChangeWindowAttributes) _ANSI_ARGS_((Display *d, Window w, unsigned long ul, XSetWindowAttributes *x)); /* 15 */
    void (*xConfigureWindow) _ANSI_ARGS_((Display *d, Window w, unsigned int i, XWindowChanges *x)); /* 16 */
    void (*xCopyArea) _ANSI_ARGS_((Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 17 */
    void (*xCopyPlane) _ANSI_ARGS_((Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4, unsigned long ul)); /* 18 */
    Pixmap (*xCreateBitmapFromData) _ANSI_ARGS_((Display *display, Drawable d, _Xconst char *data, unsigned int width, unsigned int height)); /* 19 */
    int (*xDefineCursor) _ANSI_ARGS_((Display *d, Window w, Cursor c)); /* 20 */
    void (*xDestroyWindow) _ANSI_ARGS_((Display *d, Window w)); /* 21 */
    void (*xDrawArc) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 22 */
    int (*xDrawLines) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2)); /* 23 */
    void (*xDrawRectangle) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2)); /* 24 */
    void (*xFillArc) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 25 */
    void (*xFillPolygon) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2, int i3)); /* 26 */
    int (*xFillRectangles) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XRectangle *x, int i)); /* 27 */
    int (*xFreeColormap) _ANSI_ARGS_((Display *d, Colormap c)); /* 28 */
    int (*xFreeColors) _ANSI_ARGS_((Display *d, Colormap c, unsigned long *ulp, int i, unsigned long ul)); /* 29 */
    int (*xFreeModifiermap) _ANSI_ARGS_((XModifierKeymap *x)); /* 30 */
    Status (*xGetGeometry) _ANSI_ARGS_((Display *d, Drawable dr, Window *w, int *i1, int *i2, unsigned int *ui1, unsigned int *ui2, unsigned int *ui3, unsigned int *ui4)); /* 31 */
    int (*xGetWindowProperty) _ANSI_ARGS_((Display *d, Window w, Atom a1, long l1, long l2, Bool b, Atom a2, Atom *ap, int *ip, unsigned long *ulp1, unsigned long *ulp2, unsigned char **cpp)); /* 32 */
    int (*xGrabKeyboard) _ANSI_ARGS_((Display *d, Window w, Bool b, int i1, int i2, Time t)); /* 33 */
    int (*xGrabPointer) _ANSI_ARGS_((Display *d, Window w1, Bool b, unsigned int ui, int i1, int i2, Window w2, Cursor c, Time t)); /* 34 */
    KeyCode (*xKeysymToKeycode) _ANSI_ARGS_((Display *d, KeySym k)); /* 35 */
    void (*xMapWindow) _ANSI_ARGS_((Display *d, Window w)); /* 36 */
    void (*xMoveResizeWindow) _ANSI_ARGS_((Display *d, Window w, int i1, int i2, unsigned int ui1, unsigned int ui2)); /* 37 */
    void (*xMoveWindow) _ANSI_ARGS_((Display *d, Window w, int i1, int i2)); /* 38 */
    Bool (*xQueryPointer) _ANSI_ARGS_((Display *d, Window w1, Window *w2, Window *w3, int *i1, int *i2, int *i3, int *i4, unsigned int *ui)); /* 39 */
    void (*xRaiseWindow) _ANSI_ARGS_((Display *d, Window w)); /* 40 */
    void (*xRefreshKeyboardMapping) _ANSI_ARGS_((XMappingEvent *x)); /* 41 */
    void (*xResizeWindow) _ANSI_ARGS_((Display *d, Window w, unsigned int ui1, unsigned int ui2)); /* 42 */
    void (*xSelectInput) _ANSI_ARGS_((Display *d, Window w, long l)); /* 43 */
    Status (*xSendEvent) _ANSI_ARGS_((Display *d, Window w, Bool b, long l, XEvent *x)); /* 44 */
    void (*xSetIconName) _ANSI_ARGS_((Display *d, Window w, _Xconst char *c)); /* 45 */
    void (*xSetInputFocus) _ANSI_ARGS_((Display *d, Window w, int i, Time t)); /* 46 */
    int (*xSetSelectionOwner) _ANSI_ARGS_((Display *d, Atom a, Window w, Time t)); /* 47 */
    void (*xSetWindowBackground) _ANSI_ARGS_((Display *d, Window w, unsigned long ul)); /* 48 */
    void (*xSetWindowBackgroundPixmap) _ANSI_ARGS_((Display *d, Window w, Pixmap p)); /* 49 */
    void (*xSetWindowBorder) _ANSI_ARGS_((Display *d, Window w, unsigned long ul)); /* 50 */
    void (*xSetWindowBorderPixmap) _ANSI_ARGS_((Display *d, Window w, Pixmap p)); /* 51 */
    void (*xSetWindowBorderWidth) _ANSI_ARGS_((Display *d, Window w, unsigned int ui)); /* 52 */
    void (*xSetWindowColormap) _ANSI_ARGS_((Display *d, Window w, Colormap c)); /* 53 */
    void (*xUngrabKeyboard) _ANSI_ARGS_((Display *d, Time t)); /* 54 */
    int (*xUngrabPointer) _ANSI_ARGS_((Display *d, Time t)); /* 55 */
    void (*xUnmapWindow) _ANSI_ARGS_((Display *d, Window w)); /* 56 */
    int (*tkPutImage) _ANSI_ARGS_((unsigned long *colors, int ncolors, Display *display, Drawable d, GC gc, XImage *image, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height)); /* 57 */
    Status (*xParseColor) _ANSI_ARGS_((Display *display, Colormap map, _Xconst char *spec, XColor *colorPtr)); /* 58 */
    GC (*xCreateGC) _ANSI_ARGS_((Display *display, Drawable d, unsigned long valuemask, XGCValues *values)); /* 59 */
    void (*xFreeGC) _ANSI_ARGS_((Display *display, GC gc)); /* 60 */
    Atom (*xInternAtom) _ANSI_ARGS_((Display *display, _Xconst char *atom_name, Bool only_if_exists)); /* 61 */
    void (*xSetBackground) _ANSI_ARGS_((Display *display, GC gc, unsigned long foreground)); /* 62 */
    void (*xSetForeground) _ANSI_ARGS_((Display *display, GC gc, unsigned long foreground)); /* 63 */
    void (*xSetClipMask) _ANSI_ARGS_((Display *display, GC gc, Pixmap pixmap)); /* 64 */
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
    void (*xDrawSegments) _ANSI_ARGS_((Display *display, Drawable d, GC gc, XSegment *segments, int nsegments)); /* 80 */
    void (*xForceScreenSaver) _ANSI_ARGS_((Display *display, int mode)); /* 81 */
    int (*xDrawLine) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int x1, int y1, int x2, int y2)); /* 82 */
    int (*xFillRectangle) _ANSI_ARGS_((Display *display, Drawable d, GC gc, int x, int y, unsigned int width, unsigned int height)); /* 83 */
    void (*xClearWindow) _ANSI_ARGS_((Display *d, Window w)); /* 84 */
    void (*xDrawPoint) _ANSI_ARGS_((Display *display, Drawable d, GC gc, int x, int y)); /* 85 */
    void (*xDrawPoints) _ANSI_ARGS_((Display *display, Drawable d, GC gc, XPoint *points, int npoints, int mode)); /* 86 */
    void (*xWarpPointer) _ANSI_ARGS_((Display *display, Window src_w, Window dest_w, int src_x, int src_y, unsigned int src_width, unsigned int src_height, int dest_x, int dest_y)); /* 87 */
    void (*xQueryColor) _ANSI_ARGS_((Display *display, Colormap colormap, XColor *def_in_out)); /* 88 */
    void (*xQueryColors) _ANSI_ARGS_((Display *display, Colormap colormap, XColor *defs_in_out, int ncolors)); /* 89 */
    Status (*xQueryTree) _ANSI_ARGS_((Display *d, Window w1, Window *w2, Window *w3, Window **w4, unsigned int *ui)); /* 90 */
#endif /* MAC_TCL */
#ifdef MAC_OSX_TK /* AQUA */
    void (*xSetDashes) _ANSI_ARGS_((Display *display, GC gc, int dash_offset, _Xconst char *dash_list, int n)); /* 0 */
    XModifierKeymap * (*xGetModifierMapping) _ANSI_ARGS_((Display *d)); /* 1 */
    XImage * (*xCreateImage) _ANSI_ARGS_((Display *d, Visual *v, unsigned int ui1, int i1, int i2, char *cp, unsigned int ui2, unsigned int ui3, int i3, int i4)); /* 2 */
    XImage * (*xGetImage) _ANSI_ARGS_((Display *d, Drawable dr, int i1, int i2, unsigned int ui1, unsigned int ui2, unsigned long ul, int i3)); /* 3 */
    char * (*xGetAtomName) _ANSI_ARGS_((Display *d, Atom a)); /* 4 */
    char * (*xKeysymToString) _ANSI_ARGS_((KeySym k)); /* 5 */
    Colormap (*xCreateColormap) _ANSI_ARGS_((Display *d, Window w, Visual *v, int i)); /* 6 */
    GContext (*xGContextFromGC) _ANSI_ARGS_((GC g)); /* 7 */
    KeySym (*xKeycodeToKeysym) _ANSI_ARGS_((Display *d, KeyCode k, int i)); /* 8 */
    KeySym (*xStringToKeysym) _ANSI_ARGS_((_Xconst char *c)); /* 9 */
    Window (*xRootWindow) _ANSI_ARGS_((Display *d, int i)); /* 10 */
    XErrorHandler (*xSetErrorHandler) _ANSI_ARGS_((XErrorHandler x)); /* 11 */
    Status (*xAllocColor) _ANSI_ARGS_((Display *d, Colormap c, XColor *xp)); /* 12 */
    void (*xBell) _ANSI_ARGS_((Display *d, int i)); /* 13 */
    void (*xChangeProperty) _ANSI_ARGS_((Display *d, Window w, Atom a1, Atom a2, int i1, int i2, _Xconst unsigned char *c, int i3)); /* 14 */
    void (*xChangeWindowAttributes) _ANSI_ARGS_((Display *d, Window w, unsigned long ul, XSetWindowAttributes *x)); /* 15 */
    void (*xConfigureWindow) _ANSI_ARGS_((Display *d, Window w, unsigned int i, XWindowChanges *x)); /* 16 */
    void (*xCopyArea) _ANSI_ARGS_((Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 17 */
    void (*xCopyPlane) _ANSI_ARGS_((Display *d, Drawable dr1, Drawable dr2, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4, unsigned long ul)); /* 18 */
    Pixmap (*xCreateBitmapFromData) _ANSI_ARGS_((Display *display, Drawable d, _Xconst char *data, unsigned int width, unsigned int height)); /* 19 */
    void (*xDefineCursor) _ANSI_ARGS_((Display *d, Window w, Cursor c)); /* 20 */
    void (*xDestroyWindow) _ANSI_ARGS_((Display *d, Window w)); /* 21 */
    void (*xDrawArc) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 22 */
    int (*xDrawLines) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2)); /* 23 */
    void (*xDrawRectangle) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2)); /* 24 */
    void (*xFillArc) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int i1, int i2, unsigned int ui1, unsigned int ui2, int i3, int i4)); /* 25 */
    void (*xFillPolygon) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XPoint *x, int i1, int i2, int i3)); /* 26 */
    int (*xFillRectangles) _ANSI_ARGS_((Display *d, Drawable dr, GC g, XRectangle *x, int i)); /* 27 */
    void (*xFreeColormap) _ANSI_ARGS_((Display *d, Colormap c)); /* 28 */
    void (*xFreeColors) _ANSI_ARGS_((Display *d, Colormap c, unsigned long *ulp, int i, unsigned long ul)); /* 29 */
    void (*xFreeModifiermap) _ANSI_ARGS_((XModifierKeymap *x)); /* 30 */
    Status (*xGetGeometry) _ANSI_ARGS_((Display *d, Drawable dr, Window *w, int *i1, int *i2, unsigned int *ui1, unsigned int *ui2, unsigned int *ui3, unsigned int *ui4)); /* 31 */
    int (*xGetWindowProperty) _ANSI_ARGS_((Display *d, Window w, Atom a1, long l1, long l2, Bool b, Atom a2, Atom *ap, int *ip, unsigned long *ulp1, unsigned long *ulp2, unsigned char **cpp)); /* 32 */
    int (*xGrabKeyboard) _ANSI_ARGS_((Display *d, Window w, Bool b, int i1, int i2, Time t)); /* 33 */
    int (*xGrabPointer) _ANSI_ARGS_((Display *d, Window w1, Bool b, unsigned int ui, int i1, int i2, Window w2, Cursor c, Time t)); /* 34 */
    KeyCode (*xKeysymToKeycode) _ANSI_ARGS_((Display *d, KeySym k)); /* 35 */
    void (*xMapWindow) _ANSI_ARGS_((Display *d, Window w)); /* 36 */
    void (*xMoveResizeWindow) _ANSI_ARGS_((Display *d, Window w, int i1, int i2, unsigned int ui1, unsigned int ui2)); /* 37 */
    void (*xMoveWindow) _ANSI_ARGS_((Display *d, Window w, int i1, int i2)); /* 38 */
    Bool (*xQueryPointer) _ANSI_ARGS_((Display *d, Window w1, Window *w2, Window *w3, int *i1, int *i2, int *i3, int *i4, unsigned int *ui)); /* 39 */
    void (*xRaiseWindow) _ANSI_ARGS_((Display *d, Window w)); /* 40 */
    void (*xRefreshKeyboardMapping) _ANSI_ARGS_((XMappingEvent *x)); /* 41 */
    void (*xResizeWindow) _ANSI_ARGS_((Display *d, Window w, unsigned int ui1, unsigned int ui2)); /* 42 */
    void (*xSelectInput) _ANSI_ARGS_((Display *d, Window w, long l)); /* 43 */
    Status (*xSendEvent) _ANSI_ARGS_((Display *d, Window w, Bool b, long l, XEvent *x)); /* 44 */
    void (*xSetIconName) _ANSI_ARGS_((Display *d, Window w, _Xconst char *c)); /* 45 */
    void (*xSetInputFocus) _ANSI_ARGS_((Display *d, Window w, int i, Time t)); /* 46 */
    void (*xSetSelectionOwner) _ANSI_ARGS_((Display *d, Atom a, Window w, Time t)); /* 47 */
    void (*xSetWindowBackground) _ANSI_ARGS_((Display *d, Window w, unsigned long ul)); /* 48 */
    void (*xSetWindowBackgroundPixmap) _ANSI_ARGS_((Display *d, Window w, Pixmap p)); /* 49 */
    void (*xSetWindowBorder) _ANSI_ARGS_((Display *d, Window w, unsigned long ul)); /* 50 */
    void (*xSetWindowBorderPixmap) _ANSI_ARGS_((Display *d, Window w, Pixmap p)); /* 51 */
    void (*xSetWindowBorderWidth) _ANSI_ARGS_((Display *d, Window w, unsigned int ui)); /* 52 */
    void (*xSetWindowColormap) _ANSI_ARGS_((Display *d, Window w, Colormap c)); /* 53 */
    void (*xUngrabKeyboard) _ANSI_ARGS_((Display *d, Time t)); /* 54 */
    void (*xUngrabPointer) _ANSI_ARGS_((Display *d, Time t)); /* 55 */
    void (*xUnmapWindow) _ANSI_ARGS_((Display *d, Window w)); /* 56 */
    void (*tkPutImage) _ANSI_ARGS_((unsigned long *colors, int ncolors, Display *display, Drawable d, GC gc, XImage *image, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height)); /* 57 */
    Status (*xParseColor) _ANSI_ARGS_((Display *display, Colormap map, _Xconst char *spec, XColor *colorPtr)); /* 58 */
    GC (*xCreateGC) _ANSI_ARGS_((Display *display, Drawable d, unsigned long valuemask, XGCValues *values)); /* 59 */
    void (*xFreeGC) _ANSI_ARGS_((Display *display, GC gc)); /* 60 */
    Atom (*xInternAtom) _ANSI_ARGS_((Display *display, _Xconst char *atom_name, Bool only_if_exists)); /* 61 */
    void (*xSetBackground) _ANSI_ARGS_((Display *display, GC gc, unsigned long foreground)); /* 62 */
    void (*xSetForeground) _ANSI_ARGS_((Display *display, GC gc, unsigned long foreground)); /* 63 */
    void (*xSetClipMask) _ANSI_ARGS_((Display *display, GC gc, Pixmap pixmap)); /* 64 */
    void (*xSetClipOrigin) _ANSI_ARGS_((Display *display, GC gc, int clip_x_origin, int clip_y_origin)); /* 65 */
    void (*xSetTSOrigin) _ANSI_ARGS_((Display *display, GC gc, int ts_x_origin, int ts_y_origin)); /* 66 */
    void (*xChangeGC) _ANSI_ARGS_((Display *d, GC gc, unsigned long mask, XGCValues *values)); /* 67 */
    void (*xSetFont) _ANSI_ARGS_((Display *display, GC gc, Font font)); /* 68 */
    void (*xSetArcMode) _ANSI_ARGS_((Display *display, GC gc, int arc_mode)); /* 69 */
    void (*xSetStipple) _ANSI_ARGS_((Display *display, GC gc, Pixmap stipple)); /* 70 */
    void (*xSetFillRule) _ANSI_ARGS_((Display *display, GC gc, int fill_rule)); /* 71 */
    void (*xSetFillStyle) _ANSI_ARGS_((Display *display, GC gc, int fill_style)); /* 72 */
    void (*xSetFunction) _ANSI_ARGS_((Display *display, GC gc, int function)); /* 73 */
    void (*xSetLineAttributes) _ANSI_ARGS_((Display *display, GC gc, unsigned int line_width, int line_style, int cap_style, int join_style)); /* 74 */
    int (*_XInitImageFuncPtrs) _ANSI_ARGS_((XImage *image)); /* 75 */
    XIC (*xCreateIC) _ANSI_ARGS_((void)); /* 76 */
    XVisualInfo * (*xGetVisualInfo) _ANSI_ARGS_((Display *display, long vinfo_mask, XVisualInfo *vinfo_template, int *nitems_return)); /* 77 */
    void (*xSetWMClientMachine) _ANSI_ARGS_((Display *display, Window w, XTextProperty *text_prop)); /* 78 */
    Status (*xStringListToTextProperty) _ANSI_ARGS_((char **list, int count, XTextProperty *text_prop_return)); /* 79 */
    void (*xDrawSegments) _ANSI_ARGS_((Display *display, Drawable d, GC gc, XSegment *segments, int nsegments)); /* 80 */
    void (*xForceScreenSaver) _ANSI_ARGS_((Display *display, int mode)); /* 81 */
    int (*xDrawLine) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int x1, int y1, int x2, int y2)); /* 82 */
    int (*xFillRectangle) _ANSI_ARGS_((Display *display, Drawable d, GC gc, int x, int y, unsigned int width, unsigned int height)); /* 83 */
    void (*xClearWindow) _ANSI_ARGS_((Display *d, Window w)); /* 84 */
    void (*xDrawPoint) _ANSI_ARGS_((Display *display, Drawable d, GC gc, int x, int y)); /* 85 */
    void (*xDrawPoints) _ANSI_ARGS_((Display *display, Drawable d, GC gc, XPoint *points, int npoints, int mode)); /* 86 */
    void (*xWarpPointer) _ANSI_ARGS_((Display *display, Window src_w, Window dest_w, int src_x, int src_y, unsigned int src_width, unsigned int src_height, int dest_x, int dest_y)); /* 87 */
    void (*xQueryColor) _ANSI_ARGS_((Display *display, Colormap colormap, XColor *def_in_out)); /* 88 */
    void (*xQueryColors) _ANSI_ARGS_((Display *display, Colormap colormap, XColor *defs_in_out, int ncolors)); /* 89 */
    Status (*xQueryTree) _ANSI_ARGS_((Display *d, Window w1, Window *w2, Window *w3, Window **w4, unsigned int *ui)); /* 90 */
    int (*xSync) _ANSI_ARGS_((Display *display, Bool flag)); /* 91 */
#endif /* AQUA */
} TkIntXlibStubs;








|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







1237
1238
1239
1240
1241
1242
1243
1244





























































































1245
1246
1247
1248
1249
1250
1251
    void (*xDrawSegments) _ANSI_ARGS_((Display *display, Drawable d, GC gc, XSegment *segments, int nsegments)); /* 80 */
    void (*xForceScreenSaver) _ANSI_ARGS_((Display *display, int mode)); /* 81 */
    int (*xDrawLine) _ANSI_ARGS_((Display *d, Drawable dr, GC g, int x1, int y1, int x2, int y2)); /* 82 */
    int (*xFillRectangle) _ANSI_ARGS_((Display *display, Drawable d, GC gc, int x, int y, unsigned int width, unsigned int height)); /* 83 */
    void (*xClearWindow) _ANSI_ARGS_((Display *d, Window w)); /* 84 */
    void (*xDrawPoint) _ANSI_ARGS_((Display *display, Drawable d, GC gc, int x, int y)); /* 85 */
    void (*xDrawPoints) _ANSI_ARGS_((Display *display, Drawable d, GC gc, XPoint *points, int npoints, int mode)); /* 86 */
    int (*xWarpPointer) _ANSI_ARGS_((Display *display, Window src_w, Window dest_w, int src_x, int src_y, unsigned int src_width, unsigned int src_height, int dest_x, int dest_y)); /* 87 */





























































































    void (*xQueryColor) _ANSI_ARGS_((Display *display, Colormap colormap, XColor *def_in_out)); /* 88 */
    void (*xQueryColors) _ANSI_ARGS_((Display *display, Colormap colormap, XColor *defs_in_out, int ncolors)); /* 89 */
    Status (*xQueryTree) _ANSI_ARGS_((Display *d, Window w1, Window *w2, Window *w3, Window **w4, unsigned int *ui)); /* 90 */
    int (*xSync) _ANSI_ARGS_((Display *display, Bool flag)); /* 91 */
#endif /* AQUA */
} TkIntXlibStubs;

Changes to generic/tkPointer.c.

471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490

491
492
493
494
495
496
497
 *
 * Side effects:
 *	Releases the mouse capture.
 *
 *----------------------------------------------------------------------
 */

void
XUngrabPointer(display, time)
    Display* display;
    Time time;
{
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    display->request++;
    tsdPtr->grabWinPtr = NULL;
    tsdPtr->restrictWinPtr = NULL;
    TkpSetCapture(NULL);
    UpdateCursor(tsdPtr->lastWinPtr);

}

/*
 *----------------------------------------------------------------------
 *
 * TkPointerDeadWindow --
 *







|












>







471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
 *
 * Side effects:
 *	Releases the mouse capture.
 *
 *----------------------------------------------------------------------
 */

int
XUngrabPointer(display, time)
    Display* display;
    Time time;
{
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    display->request++;
    tsdPtr->grabWinPtr = NULL;
    tsdPtr->restrictWinPtr = NULL;
    TkpSetCapture(NULL);
    UpdateCursor(tsdPtr->lastWinPtr);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * TkPointerDeadWindow --
 *
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606

607
608
609
610
611
612
613
 *
 * Side effects:
 *	May update the cursor.
 *
 *----------------------------------------------------------------------
 */

void
XDefineCursor(display, w, cursor)
    Display* display;
    Window w;
    Cursor cursor;
{
    TkWindow *winPtr = (TkWindow *)Tk_IdToWindow(display, w);
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (tsdPtr->cursorWinPtr == winPtr) {
	UpdateCursor(winPtr);
    }
    display->request++;

}

/*
 *----------------------------------------------------------------------
 *
 * TkGenerateActivateEvents --
 *







|













>







587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
 *
 * Side effects:
 *	May update the cursor.
 *
 *----------------------------------------------------------------------
 */

int
XDefineCursor(display, w, cursor)
    Display* display;
    Window w;
    Cursor cursor;
{
    TkWindow *winPtr = (TkWindow *)Tk_IdToWindow(display, w);
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (tsdPtr->cursorWinPtr == winPtr) {
	UpdateCursor(winPtr);
    }
    display->request++;
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * TkGenerateActivateEvents --
 *

Changes to generic/tkStubInit.c.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/* 
 * tkStubInit.c --
 *
 *	This file contains the initializers for the Tk stub vectors.
 *
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 */

#include "tkInt.h"
#include "tkPort.h"

#if !(defined(__WIN32__) && defined(MAC_TCL) || defined(MAC_OSX_TK))
/* UNIX */
|






|
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
 * tkStubInit.c --
 *
 *	This file contains the initializers for the Tk stub vectors.
 *
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution of
 * this file, and for a DISCLAIMER OF ALL WARRANTIES.
 */

#include "tkInt.h"
#include "tkPort.h"

#if !(defined(__WIN32__) && defined(MAC_TCL) || defined(MAC_OSX_TK))
/* UNIX */
41
42
43
44
45
46
47







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134

























































135
136
137
138
139
140
141

static int
doNothing(void)
{
    /* dummy implementation, no need to do anything */
    return 0;
}








/*
 * Remove macros that will interfere with the definitions below.
 */
#   undef TkpCmapStressed
#   undef TkpSync

#   define TkCreateXEventSource (void (*) (void)) doNothing
#   define TkpCmapStressed (int (*) (Tk_Window, Colormap)) doNothing
#   define TkpSync (void (*) (Display *)) doNothing
#   define TkUnixContainerId 0
#   define TkUnixDoOneXEvent 0
#   define TkUnixSetMenubar 0
#   define TkWmCleanup (void (*) (TkDisplay *)) doNothing
#   define TkSendCleanup (void (*) (TkDisplay *)) doNothing

#else /* !__WIN32__ */

#	undef TkClipBox
#	undef TkCreateRegion
#	undef TkDestroyRegion
#	undef TkIntersectRegion
#	undef TkRectInRegion
#	undef TkSetRegion
#	undef TkUnionRectWithRegion
#	undef TkSubtractRegion

#	define TkClipBox (void (*) _ANSI_ARGS_((TkRegion, XRectangle *))) XClipBox
#	define TkCreateRegion (TkRegion (*) ()) XCreateRegion
#	define TkDestroyRegion (void (*) _ANSI_ARGS_((TkRegion))) XDestroyRegion
#	define TkIntersectRegion (void (*) _ANSI_ARGS_((TkRegion, TkRegion, TkRegion))) XIntersectRegion
#	define TkRectInRegion (int (*) _ANSI_ARGS_((TkRegion, int, int, unsigned int, unsigned int))) XRectInRegion
#	define TkSetRegion (void (*) _ANSI_ARGS_((Display *, GC, TkRegion))) XSetRegion
#	define TkUnionRectWithRegion (void (*) _ANSI_ARGS_((XRectangle *, TkRegion, TkRegion))) XUnionRectWithRegion
#	define TkSubtractRegion (void (*) _ANSI_ARGS_((TkRegion, TkRegion, TkRegion))) XSubtractRegion

/*
 * Make sure that extensions which call XParseColor through the stub
 * table, call TkParseColor instead. [Bug 3486474]
 */
#   define XParseColor	TkParseColor

#   ifdef __CYGWIN__

    /*
     * Remove macros that will interfere with the definitions below.
     */
#	undef TkPutImage
#	undef TkSetPixmapColormap
#	undef TkpPrintWindowId
#	undef TkWinChildProc


	/*
	 * Trick, so we don't have to include <windows.h> here, which in any
	 * case lacks this function anyway.
	 */

#	define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS	0x00000004
int __stdcall GetModuleHandleExW(unsigned int, const char *, void *);

TkIntStubs tkIntStubs;

void *Tk_GetHINSTANCE()
{
    void *hInstance = NULL;

    GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
	    (const char *) &tkIntStubs, &hInstance);
    return hInstance;
}

void
TkSetPixmapColormap(pixmap, colormap)
    Pixmap pixmap;
    Colormap colormap;
{
}

void
TkpPrintWindowId(buf, window)
    char *buf;			/* Pointer to string large enough to hold
				 * the hex representation of a pointer. */
    Window window;		/* Window to be printed into buffer. */
{
	sprintf(buf, "%#08lx", (unsigned long) (window));
}


























































	/* TODO: To be implemented for Cygwin */
#	define Tk_AttachHWND 0
#	define Tk_GetHWND 0
#	define Tk_HWNDToWindow 0
#	define Tk_PointerEvent 0
#	define Tk_TranslateWinEvent 0







>
>
>
>
>
>
>







<










<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<








<
<
<
<
<
<
<
|

|
|
|
|

|

<
<











|
|
|




|
|

|



>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

62
63
64
65
66
67
68
69
70
71


















72
73
74
75
76
77
78
79







80
81
82
83
84
85
86
87
88


89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177

static int
doNothing(void)
{
    /* dummy implementation, no need to do anything */
    return 0;
}

#define TkCreateXEventSource TkPlatCreateXEventSource
static void
TkCreateXEventSource(void)
{
	TkWinXInit(Tk_GetHINSTANCE());
}

/*
 * Remove macros that will interfere with the definitions below.
 */
#   undef TkpCmapStressed
#   undef TkpSync


#   define TkpCmapStressed (int (*) (Tk_Window, Colormap)) doNothing
#   define TkpSync (void (*) (Display *)) doNothing
#   define TkUnixContainerId 0
#   define TkUnixDoOneXEvent 0
#   define TkUnixSetMenubar 0
#   define TkWmCleanup (void (*) (TkDisplay *)) doNothing
#   define TkSendCleanup (void (*) (TkDisplay *)) doNothing

#else /* !__WIN32__ */



















/*
 * Make sure that extensions which call XParseColor through the stub
 * table, call TkParseColor instead. [Bug 3486474]
 */
#   define XParseColor	TkParseColor

#   ifdef __CYGWIN__








	TkIntStubs tkIntStubs;

/*
 * Trick, so we don't have to include <windows.h> here, which in any
 * case lacks this function anyway.
 */

#define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS	0x00000004
int __stdcall GetModuleHandleExW(unsigned int, const char *, void *);



void *Tk_GetHINSTANCE()
{
    void *hInstance = NULL;

    GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
	    (const char *) &tkIntStubs, &hInstance);
    return hInstance;
}

void
TkSetPixmapColormap(
    Pixmap pixmap,
    Colormap colormap)
{
}

void
TkpPrintWindowId(
    char *buf,			/* Pointer to string large enough to hold
				 * the hex representation of a pointer. */
    Window window)		/* Window to be printed into buffer. */
{
	sprintf(buf, "%#08lx", (unsigned long) (window));
}

int
TkPutImage(
    unsigned long *colors,	/* Array of pixel values used by this image.
				 * May be NULL. */
    int ncolors,		/* Number of colors used, or 0. */
    Display *display,
    Drawable d,			/* Destination drawable. */
    GC gc,
    XImage *image,		/* Source image. */
    int src_x, int src_y,	/* Offset of subimage. */
    int dest_x, int dest_y,	/* Position of subimage origin in drawable. */
    unsigned int width, unsigned int height)
				/* Dimensions of subimage. */
{
    return XPutImage(display, d, gc, image, src_x, src_y, dest_x, dest_y, width, height);
}

TkRegion TkCreateRegion()
{
    return (TkRegion) XCreateRegion();
}

void TkDestroyRegion(TkRegion r)
{
    XDestroyRegion((Region)r);
}

void TkSetRegion(Display *d, GC g, TkRegion r)
{
    XSetRegion(d, g, (Region)r);
}

void TkUnionRectWithRegion(XRectangle *a, TkRegion b, TkRegion c)
{
    XUnionRectWithRegion(a, (Region) b, (Region) c);
}

void TkClipBox(TkRegion a, XRectangle *b)
{
    XClipBox((Region) a, b);
}

void TkIntersectRegion(TkRegion a, TkRegion b, TkRegion c)
{
    XIntersectRegion((Region) a, (Region) b, (Region) c);
}

int TkRectInRegion (TkRegion r, int a, int b, unsigned int c, unsigned int d)
{
    return XRectInRegion((Region) r, a, b, c, d);
}

void TkSubtractRegion (TkRegion a, TkRegion b, TkRegion c)
{
    XSubtractRegion((Region) a, (Region) b, (Region) c);
}

	/* TODO: To be implemented for Cygwin */
#	define Tk_AttachHWND 0
#	define Tk_GetHWND 0
#	define Tk_HWNDToWindow 0
#	define Tk_PointerEvent 0
#	define Tk_TranslateWinEvent 0
168
169
170
171
172
173
174

175


















176
177
178
179
180
181
182
#	define TkWinDialogDebug 0
#	define TkWinGetMenuSystemDefault 0
#	define TkWinGetPlatformId 0
#	define TkWinSetHINSTANCE 0
#	define TkWinGetPlatformTheme 0
#	define TkWinChildProc 0


#	endif /* __CYGWIN__ */


















#endif /* !__WIN32__ */

/*
 * WARNING: The contents of this file is automatically generated by the
 * tools/genStubs.tcl script. Any modifications to the function declarations
 * below should be made in the generic/tk.decls script.
 */







>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
#	define TkWinDialogDebug 0
#	define TkWinGetMenuSystemDefault 0
#	define TkWinGetPlatformId 0
#	define TkWinSetHINSTANCE 0
#	define TkWinGetPlatformTheme 0
#	define TkWinChildProc 0

#   elif !defined(MAC_TCL) && !defined(MAC_OSX_TK) /* UNIX */

#	undef TkClipBox
#	undef TkCreateRegion
#	undef TkDestroyRegion
#	undef TkIntersectRegion
#	undef TkRectInRegion
#	undef TkSetRegion
#	undef TkUnionRectWithRegion
#	undef TkSubtractRegion

#	define TkClipBox (void (*) _ANSI_ARGS_((TkRegion, XRectangle *))) XClipBox
#	define TkCreateRegion (TkRegion (*) ()) XCreateRegion
#	define TkDestroyRegion (void (*) _ANSI_ARGS_((TkRegion))) XDestroyRegion
#	define TkIntersectRegion (void (*) _ANSI_ARGS_((TkRegion, TkRegion, TkRegion))) XIntersectRegion
#	define TkRectInRegion (int (*) _ANSI_ARGS_((TkRegion, int, int, unsigned int, unsigned int))) XRectInRegion
#	define TkSetRegion (void (*) _ANSI_ARGS_((Display *, GC, TkRegion))) XSetRegion
#	define TkUnionRectWithRegion (void (*) _ANSI_ARGS_((XRectangle *, TkRegion, TkRegion))) XUnionRectWithRegion
#	define TkSubtractRegion (void (*) _ANSI_ARGS_((TkRegion, TkRegion, TkRegion))) XSubtractRegion
#   endif
#endif /* !__WIN32__ */

/*
 * WARNING: The contents of this file is automatically generated by the
 * tools/genStubs.tcl script. Any modifications to the function declarations
 * below should be made in the generic/tk.decls script.
 */

Changes to mac/tkMacClipboard.c.

103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
 *
 * Side effects:
 *	None.
 *
 *----------------------------------------------------------------------
 */

void
XSetSelectionOwner(
    Display* display,	/* X Display. */
    Atom selection,	/* What selection to own. */
    Window owner,	/* Window to be the owner. */
    Time time)		/* The current time? */
{
    Tk_Window tkwin;







|







103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
 *
 * Side effects:
 *	None.
 *
 *----------------------------------------------------------------------
 */

int
XSetSelectionOwner(
    Display* display,	/* X Display. */
    Atom selection,	/* What selection to own. */
    Window owner,	/* Window to be the owner. */
    Time time)		/* The current time? */
{
    Tk_Window tkwin;
128
129
130
131
132
133
134
135
136
137
138
139

140
141
142
143
144
145
146

	/*
	 * Only claim and empty the clipboard if we aren't already the
	 * owner of the clipboard.
	 */

	dispPtr = TkGetMainInfoList()->winPtr->dispPtr;
	if (dispPtr->clipboardActive) {
	    return;
	}
	ZeroScrap();
    }

}

/*
 *----------------------------------------------------------------------
 *
 * TkSelUpdateClipboard --
 *







|
|

<

>







128
129
130
131
132
133
134
135
136
137

138
139
140
141
142
143
144
145
146

	/*
	 * Only claim and empty the clipboard if we aren't already the
	 * owner of the clipboard.
	 */

	dispPtr = TkGetMainInfoList()->winPtr->dispPtr;
	if (!dispPtr->clipboardActive) {
	    ZeroScrap();
	}

    }
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * TkSelUpdateClipboard --
 *

Changes to mac/tkMacColor.c.

137
138
139
140
141
142
143
144
145
146
147
148

149
150
151
152
153
154
155
156
157
158
159
160
161
162
163

164
165
166
167
168
169
170
    
    /*
     * Just return a new value each time.
     */
    return index++;
}

void
XFreeColormap(
    Display* display,		/* Display. */
    Colormap colormap)		/* Colormap. */
{

}

void
XFreeColors(
    Display* display,		/* Display. */
    Colormap colormap,		/* Colormap. */
    unsigned long* pixels,	/* Array of pixels. */
    int npixels,		/* Number of pixels. */
    unsigned long planes)	/* Number of pixel planes. */
{
    /*
     * The Macintosh version of Tk uses TrueColor.  Nothing
     * needs to be done to release colors as there really is
     * no colormap in the Tk sense.
     */

}

/*
 *----------------------------------------------------------------------
 *
 * TkpGetColor --
 *







|




>


|












>







137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
    
    /*
     * Just return a new value each time.
     */
    return index++;
}

int
XFreeColormap(
    Display* display,		/* Display. */
    Colormap colormap)		/* Colormap. */
{
    return Success;
}

int
XFreeColors(
    Display* display,		/* Display. */
    Colormap colormap,		/* Colormap. */
    unsigned long* pixels,	/* Array of pixels. */
    int npixels,		/* Number of pixels. */
    unsigned long planes)	/* Number of pixel planes. */
{
    /*
     * The Macintosh version of Tk uses TrueColor.  Nothing
     * needs to be done to release colors as there really is
     * no colormap in the Tk sense.
     */
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * TkpGetColor --
 *

Changes to mac/tkMacDraw.c.

272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
 *
 * Side effects:
 *	Draws the image on the specified drawable.
 *
 *----------------------------------------------------------------------
 */

void 
TkPutImage(
    unsigned long *colors,	/* Unused on Macintosh. */
    int ncolors,		/* Unused on Macintosh. */
    Display* display,		/* Display. */
    Drawable d,			/* Drawable to place image on. */
    GC gc,			/* GC to use. */
    XImage* image,		/* Image to place. */







|







272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
 *
 * Side effects:
 *	Draws the image on the specified drawable.
 *
 *----------------------------------------------------------------------
 */

int
TkPutImage(
    unsigned long *colors,	/* Unused on Macintosh. */
    int ncolors,		/* Unused on Macintosh. */
    Display* display,		/* Display. */
    Drawable d,			/* Drawable to place image on. */
    GC gc,			/* GC to use. */
    XImage* image,		/* Image to place. */
377
378
379
380
381
382
383

384
385
386
387
388
389
390
	    &srcRect, &destRect, srcCopy, NULL);
    }
    
    if (newData != NULL) {
	ckfree(newData);
    }
    SetGWorld(saveWorld, saveDevice);

}

/*
 *----------------------------------------------------------------------
 *
 * XFillRectangles --
 *







>







377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
	    &srcRect, &destRect, srcCopy, NULL);
    }
    
    if (newData != NULL) {
	ckfree(newData);
    }
    SetGWorld(saveWorld, saveDevice);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * XFillRectangles --
 *
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
	theRect.top = (short) (macWin->yOff + rectangles[i].y);
	theRect.right = (short) (theRect.left + rectangles[i].width);
	theRect.bottom = (short) (theRect.top + rectangles[i].height);
	FillCRect(&theRect, gPenPat);
    }

    SetGWorld(saveWorld, saveDevice);
    return 1;
}

/*
 *----------------------------------------------------------------------
 *
 * XDrawLines --
 *







|







430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
	theRect.top = (short) (macWin->yOff + rectangles[i].y);
	theRect.right = (short) (theRect.left + rectangles[i].width);
	theRect.bottom = (short) (theRect.top + rectangles[i].height);
	FillCRect(&theRect, gPenPat);
    }

    SetGWorld(saveWorld, saveDevice);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * XDrawLines --
 *

Changes to mac/tkMacKeyboard.c.

289
290
291
292
293
294
295
296
297
298
299
300
301
302
303

304
305
306
307
308
309
310
 *
 * Side effects:
 *	Frees the datastructure referenced by modmap.
 *
 *----------------------------------------------------------------------
 */

void 
XFreeModifiermap(
    XModifierKeymap *modmap)
{
    if (modmap->modifiermap != NULL) {
	ckfree((char *) modmap->modifiermap);
    }
    ckfree((char *) modmap);

}

/*
 *----------------------------------------------------------------------
 *
 * XKeysymToString, XStringToKeysym --
 *







|







>







289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
 *
 * Side effects:
 *	Frees the datastructure referenced by modmap.
 *
 *----------------------------------------------------------------------
 */

int
XFreeModifiermap(
    XModifierKeymap *modmap)
{
    if (modmap->modifiermap != NULL) {
	ckfree((char *) modmap->modifiermap);
    }
    ckfree((char *) modmap);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * XKeysymToString, XStringToKeysym --
 *

Changes to mac/tkMacXStubs.c.

391
392
393
394
395
396
397
398
399
400
401
402
403

404
405
406
407
408
409
410
    Display* display,
    Window w,
    long event_mask)
{
    Debugger();
}

void
XBell(
    Display* display,
    int percent)
{
    SysBeep(percent);

}

void
XSetWMNormalHints(
    Display* display,
    Window w,
    XSizeHints* hints)







|





>







391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
    Display* display,
    Window w,
    long event_mask)
{
    Debugger();
}

int
XBell(
    Display* display,
    int percent)
{
    SysBeep(percent);
    return Success;
}

void
XSetWMNormalHints(
    Display* display,
    Window w,
    XSizeHints* hints)
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542

543
544
545
546
547
548
549
    XPoint* points,
    int npoints,
    int mode)
{
}
*/

void
XWarpPointer(
    Display* display,
    Window src_w,
    Window dest_w,
    int src_x,
    int src_y,
    unsigned int src_width,
    unsigned int src_height,
    int dest_x,
    int dest_y)
{

}

void
XQueryColor(
    Display* display,
    Colormap colormap,
    XColor* def_in_out)







|











>







525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
    XPoint* points,
    int npoints,
    int mode)
{
}
*/

int
XWarpPointer(
    Display* display,
    Window src_w,
    Window dest_w,
    int src_x,
    int src_y,
    unsigned int src_width,
    unsigned int src_height,
    int dest_x,
    int dest_y)
{
    return Success;
}

void
XQueryColor(
    Display* display,
    Colormap colormap,
    XColor* def_in_out)

Changes to macosx/tkMacOSXClipboard.c.

157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
 *
 * Side effects:
 *	None.
 *
 *----------------------------------------------------------------------
 */

void
XSetSelectionOwner(
    Display *display,		/* X Display. */
    Atom selection,		/* What selection to own. */
    Window owner,		/* Window to be the owner. */
    Time time)			/* The current time? */
{
    Tk_Window tkwin;







|







157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
 *
 * Side effects:
 *	None.
 *
 *----------------------------------------------------------------------
 */

int
XSetSelectionOwner(
    Display *display,		/* X Display. */
    Atom selection,		/* What selection to own. */
    Window owner,		/* Window to be the owner. */
    Time time)			/* The current time? */
{
    Tk_Window tkwin;
181
182
183
184
185
186
187
188
189
190
191
192

193
194
195
196
197
198
199
    if (selection == Tk_InternAtom(tkwin, "CLIPBOARD")) {
	/*
	 * Only claim and empty the clipboard if we aren't already the
	 * owner of the clipboard.
	 */

	dispPtr = TkGetMainInfoList()->winPtr->dispPtr;
	if (dispPtr->clipboardActive) {
	    return;
	}
	ClearCurrentScrap();
    }

}

/*
 *----------------------------------------------------------------------
 *
 * TkSelUpdateClipboard --
 *







|
|

<

>







181
182
183
184
185
186
187
188
189
190

191
192
193
194
195
196
197
198
199
    if (selection == Tk_InternAtom(tkwin, "CLIPBOARD")) {
	/*
	 * Only claim and empty the clipboard if we aren't already the
	 * owner of the clipboard.
	 */

	dispPtr = TkGetMainInfoList()->winPtr->dispPtr;
	if (!dispPtr->clipboardActive) {
	    ClearCurrentScrap();
	}

    }
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * TkSelUpdateClipboard --
 *

Changes to macosx/tkMacOSXColor.c.

709
710
711
712
713
714
715
716
717
718
719
720

721
722
723
724
725
726
727
728
729
730
731
732
733
734
735

736

    /*
     * Just return a new value each time.
     */
    return index++;
}

void
XFreeColormap(
    Display* display,		/* Display. */
    Colormap colormap)		/* Colormap. */
{

}

void
XFreeColors(
    Display* display,		/* Display. */
    Colormap colormap,		/* Colormap. */
    unsigned long* pixels,	/* Array of pixels. */
    int npixels,		/* Number of pixels. */
    unsigned long planes)	/* Number of pixel planes. */
{
    /*
     * The Macintosh version of Tk uses TrueColor. Nothing
     * needs to be done to release colors as there really is
     * no colormap in the Tk sense.
     */

}







|




>


|












>

709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738

    /*
     * Just return a new value each time.
     */
    return index++;
}

int
XFreeColormap(
    Display* display,		/* Display. */
    Colormap colormap)		/* Colormap. */
{
    return Success;
}

int
XFreeColors(
    Display* display,		/* Display. */
    Colormap colormap,		/* Colormap. */
    unsigned long* pixels,	/* Array of pixels. */
    int npixels,		/* Number of pixels. */
    unsigned long planes)	/* Number of pixel planes. */
{
    /*
     * The Macintosh version of Tk uses TrueColor. Nothing
     * needs to be done to release colors as there really is
     * no colormap in the Tk sense.
     */
    return Success;
}

Changes to macosx/tkMacOSXDraw.c.

336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
 *
 * Side effects:
 *	Draws the image on the specified drawable.
 *
 *----------------------------------------------------------------------
 */

void
TkPutImage(
    unsigned long *colors,	/* Unused on Macintosh. */
    int ncolors,		/* Unused on Macintosh. */
    Display* display,		/* Display. */
    Drawable d,			/* Drawable to place image on. */
    GC gc,			/* GC to use. */
    XImage* image,		/* Image to place. */
    int src_x,			/* Source X & Y. */
    int src_y,
    int dest_x,			/* Destination X & Y. */
    int dest_y,
    unsigned int width,		/* Same width & height for both */
    unsigned int height)	/* distination and source. */
{
    TkMacOSXDrawingContext dc;
    MacDrawable *dstDraw = (MacDrawable *) d;

    display->request++;
    if (!TkMacOSXSetupDrawingContext(d, gc, 0, &dc)) {
	return;
    }
    if (dc.context) {
	TkMacOSXDbgMsg("Ignored CG drawing of XImage");
    } else {
	Rect srcRect, dstRect, *srcPtr = &srcRect, *dstPtr = &dstRect;
	const BitMap *dstBit;
	RGBColor black = {0, 0, 0}, white = {0xffff, 0xffff, 0xffff};







|



















|







336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
 *
 * Side effects:
 *	Draws the image on the specified drawable.
 *
 *----------------------------------------------------------------------
 */

int
TkPutImage(
    unsigned long *colors,	/* Unused on Macintosh. */
    int ncolors,		/* Unused on Macintosh. */
    Display* display,		/* Display. */
    Drawable d,			/* Drawable to place image on. */
    GC gc,			/* GC to use. */
    XImage* image,		/* Image to place. */
    int src_x,			/* Source X & Y. */
    int src_y,
    int dest_x,			/* Destination X & Y. */
    int dest_y,
    unsigned int width,		/* Same width & height for both */
    unsigned int height)	/* distination and source. */
{
    TkMacOSXDrawingContext dc;
    MacDrawable *dstDraw = (MacDrawable *) d;

    display->request++;
    if (!TkMacOSXSetupDrawingContext(d, gc, 0, &dc)) {
	return BadDrawable;
    }
    if (dc.context) {
	TkMacOSXDbgMsg("Ignored CG drawing of XImage");
    } else {
	Rect srcRect, dstRect, *srcPtr = &srcRect, *dstPtr = &dstRect;
	const BitMap *dstBit;
	RGBColor black = {0, 0, 0}, white = {0xffff, 0xffff, 0xffff};
528
529
530
531
532
533
534

535
536
537
538
539
540
541
		pixmap.baseAddr = image->data + image->xoffset;
		pixmap.rowBytes = rowBytes | 0x8000;
		CopyBits((BitMap*) &pixmap, dstBit, srcPtr, dstPtr, srcCopy, NULL);
	    }
	}
    }
    TkMacOSXRestoreDrawingContext(&dc);

}

/*
 *----------------------------------------------------------------------
 *
 * XDrawLines --
 *







>







528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
		pixmap.baseAddr = image->data + image->xoffset;
		pixmap.rowBytes = rowBytes | 0x8000;
		CopyBits((BitMap*) &pixmap, dstBit, srcPtr, dstPtr, srcCopy, NULL);
	    }
	}
    }
    TkMacOSXRestoreDrawingContext(&dc);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * XDrawLines --
 *
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
    int mode)			/* Line drawing mode. */
{
    MacDrawable *macWin = (MacDrawable *) d;
    TkMacOSXDrawingContext dc;
    int i, lw = gc->line_width;

    if (npoints < 2) {
	/*
	 * TODO: generate BadValue error.
	 */

	return 0;
    }

    display->request++;
    if (!TkMacOSXSetupDrawingContext(d, gc, tkMacOSXUseCGDrawing, &dc)) {
	return 0;
    }
    if (dc.context) {
	double prevx, prevy;
	double o = (lw % 2) ? .5 : 0;

	CGContextBeginPath(dc.context);
	prevx = macWin->xOff + points[0].x + o;







<
<
<
<
|




|







561
562
563
564
565
566
567




568
569
570
571
572
573
574
575
576
577
578
579
580
    int mode)			/* Line drawing mode. */
{
    MacDrawable *macWin = (MacDrawable *) d;
    TkMacOSXDrawingContext dc;
    int i, lw = gc->line_width;

    if (npoints < 2) {




	return BadValue;
    }

    display->request++;
    if (!TkMacOSXSetupDrawingContext(d, gc, tkMacOSXUseCGDrawing, &dc)) {
	return BadDrawable;
    }
    if (dc.context) {
	double prevx, prevy;
	double o = (lw % 2) ? .5 : 0;

	CGContextBeginPath(dc.context);
	prevx = macWin->xOff + points[0].x + o;
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
		       (short) (macWin->yOff + points[i].y + o));
	    } else {
		Line((short) points[i].x, (short) points[i].y);
	    }
	}
    }
    TkMacOSXRestoreDrawingContext(&dc);
    return 1;
}

/*
 *----------------------------------------------------------------------
 *
 * XDrawSegments --
 *







|







607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
		       (short) (macWin->yOff + points[i].y + o));
	    } else {
		Line((short) points[i].x, (short) points[i].y);
	    }
	}
    }
    TkMacOSXRestoreDrawingContext(&dc);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * XDrawSegments --
 *
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
    MacDrawable *macWin = (MacDrawable *) d;
    TkMacOSXDrawingContext dc;
    XRectangle * rectPtr;
    int i;

    display->request++;
    if (!TkMacOSXSetupDrawingContext(d, gc, tkMacOSXUseCGDrawing, &dc)) {
	return 0;
    }
    if (dc.context) {
	CGRect rect;

	for (i = 0, rectPtr = rectangles; i < n_rectangles; i++, rectPtr++) {
	    if (rectPtr->width == 0 || rectPtr->height == 0) {
		continue;







|







911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
    MacDrawable *macWin = (MacDrawable *) d;
    TkMacOSXDrawingContext dc;
    XRectangle * rectPtr;
    int i;

    display->request++;
    if (!TkMacOSXSetupDrawingContext(d, gc, tkMacOSXUseCGDrawing, &dc)) {
	return BadDrawable;
    }
    if (dc.context) {
	CGRect rect;

	for (i = 0, rectPtr = rectangles; i < n_rectangles; i++, rectPtr++) {
	    if (rectPtr->width == 0 || rectPtr->height == 0) {
		continue;
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
	    theRect.top =    (short) (macWin->yOff + rectPtr->y);
	    theRect.right =  (short) (theRect.left + rectPtr->width);
	    theRect.bottom = (short) (theRect.top  + rectPtr->height);
	    FillCRect(&theRect, dc.penPat);
	}
    }
    TkMacOSXRestoreDrawingContext(&dc);
    return 1;
}

/*
 *----------------------------------------------------------------------
 *
 * XDrawArc --
 *







|







938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
	    theRect.top =    (short) (macWin->yOff + rectPtr->y);
	    theRect.right =  (short) (theRect.left + rectPtr->width);
	    theRect.bottom = (short) (theRect.top  + rectPtr->height);
	    FillCRect(&theRect, dc.penPat);
	}
    }
    TkMacOSXRestoreDrawingContext(&dc);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * XDrawArc --
 *

Changes to macosx/tkMacOSXKeyboard.c.

390
391
392
393
394
395
396
397
398
399
400
401
402
403
404

405
406
407
408
409
410
411
 *
 * Side effects:
 *	Frees the datastructure referenced by modmap.
 *
 *----------------------------------------------------------------------
 */

void
XFreeModifiermap(
    XModifierKeymap *modmap)
{
    if (modmap->modifiermap != NULL) {
	ckfree((char *) modmap->modifiermap);
    }
    ckfree((char *) modmap);

}

/*
 *----------------------------------------------------------------------
 *
 * XKeysymToString, XStringToKeysym --
 *







|







>







390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
 *
 * Side effects:
 *	Frees the datastructure referenced by modmap.
 *
 *----------------------------------------------------------------------
 */

int
XFreeModifiermap(
    XModifierKeymap *modmap)
{
    if (modmap->modifiermap != NULL) {
	ckfree((char *) modmap->modifiermap);
    }
    ckfree((char *) modmap);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * XKeysymToString, XStringToKeysym --
 *

Changes to macosx/tkMacOSXXStubs.c.

460
461
462
463
464
465
466
467
468
469
470
471
472

473
474
475
476
477
478
479
    Display* display,
    Window w,
    long event_mask)
{
    Debugger();
}

void
XBell(
    Display* display,
    int percent)
{
    SysBeep(percent);

}

#if 0
void
XSetWMNormalHints(
    Display* display,
    Window w,







|





>







460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
    Display* display,
    Window w,
    long event_mask)
{
    Debugger();
}

int
XBell(
    Display* display,
    int percent)
{
    SysBeep(percent);
    return Success;
}

#if 0
void
XSetWMNormalHints(
    Display* display,
    Window w,
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563

564
565
566
567
568
569
570
    XPoint* points,
    int npoints,
    int mode)
{
}
*/

void
XWarpPointer(
    Display* display,
    Window src_w,
    Window dest_w,
    int src_x,
    int src_y,
    unsigned int src_width,
    unsigned int src_height,
    int dest_x,
    int dest_y)
{

}

void
XQueryColor(
    Display* display,
    Colormap colormap,
    XColor* def_in_out)







|











>







546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
    XPoint* points,
    int npoints,
    int mode)
{
}
*/

int
XWarpPointer(
    Display* display,
    Window src_w,
    Window dest_w,
    int src_x,
    int src_y,
    unsigned int src_width,
    unsigned int src_height,
    int dest_x,
    int dest_y)
{
    return Success;
}

void
XQueryColor(
    Display* display,
    Colormap colormap,
    XColor* def_in_out)

Changes to unix/Makefile.in.

30
31
32
33
34
35
36

37
38
39
40
41
42
43
# substitutions that are based off prefix and exec_prefix.

prefix			= @prefix@
exec_prefix		= @exec_prefix@
bindir			= @bindir@
libdir			= @libdir@
includedir		= @includedir@

mandir			= @mandir@

# The following definition can be set to non-null for special systems
# like AFS with replication.  It allows the pathnames used for installation
# to be different than those used for actually reference files at
# run-time.  INSTALL_ROOT is prepended to $prefix and $exec_prefix
# when installing files.







>







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# substitutions that are based off prefix and exec_prefix.

prefix			= @prefix@
exec_prefix		= @exec_prefix@
bindir			= @bindir@
libdir			= @libdir@
includedir		= @includedir@
datarootdir		= @datarootdir@
mandir			= @mandir@

# The following definition can be set to non-null for special systems
# like AFS with replication.  It allows the pathnames used for installation
# to be different than those used for actually reference files at
# run-time.  INSTALL_ROOT is prepended to $prefix and $exec_prefix
# when installing files.
85
86
87
88
89
90
91






92
93
94
95
96




97
98
99
100
101
102
103
MANN_INSTALL_DIR	= $(MAN_INSTALL_DIR)/mann

# Path to the html documentation dir:
HTML_DIR		= @HTML_DIR@

# Directory in which to install html documentation:
HTML_INSTALL_DIR	= $(INSTALL_ROOT)$(HTML_DIR)







# The directory containing the Tcl sources and headers appropriate
# for this version of Tk ("srcdir" will be replaced or has already
# been replaced by the configure script):
TCL_GENERIC_DIR		= @TCL_SRC_DIR@/generic





# The directory containing the Tcl library archive file appropriate
# for this version of Tk:
TCL_BIN_DIR		= @TCL_BIN_DIR@

# The linker flags needed to link in the Tcl library (ex: -ltcl8.2)
TCL_LIB_FLAG		= @TCL_LIB_FLAG@







>
>
>
>
>
>





>
>
>
>







86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
MANN_INSTALL_DIR	= $(MAN_INSTALL_DIR)/mann

# Path to the html documentation dir:
HTML_DIR		= @HTML_DIR@

# Directory in which to install html documentation:
HTML_INSTALL_DIR	= $(INSTALL_ROOT)$(HTML_DIR)

# Directory in which to install the configuration file tkConfig.sh:
CONFIG_INSTALL_DIR	= $(INSTALL_ROOT)$(libdir)

# Directory in which to install the demo files:
DEMO_INSTALL_DIR	= $(INSTALL_ROOT)$(TK_LIBRARY)/demos

# The directory containing the Tcl sources and headers appropriate
# for this version of Tk ("srcdir" will be replaced or has already
# been replaced by the configure script):
TCL_GENERIC_DIR		= @TCL_SRC_DIR@/generic

# The directory containing the platform specific Tcl sources and headers
# appropriate for this version of Tk:
TCL_PLATFORM_DIR	= @TCL_SRC_DIR@/unix

# The directory containing the Tcl library archive file appropriate
# for this version of Tk:
TCL_BIN_DIR		= @TCL_BIN_DIR@

# The linker flags needed to link in the Tcl library (ex: -ltcl8.2)
TCL_LIB_FLAG		= @TCL_LIB_FLAG@
196
197
198
199
200
201
202

203
204
205
206
207
208
209
210
211
212
213
214
215
216
217

# TCL_EXE is the name of a tclsh executable that is available *BEFORE*
# running make for the first time. Certain build targets (make genstubs)
# need it to be available on the PATH. This executable should *NOT* be
# required just to do a normal build although it can be required to run
# make dist. This variable is set to "" if no tclsh is available.
TCL_EXE			= @TCLSH_PROG@


# Tk used to let the configure script choose which program to use
# for installing, but there are just too many different versions of
# "install" around;  better to use the install-sh script that comes
# with the distribution, which is slower but guaranteed to work.

INSTALL_STRIP_PROGRAM   = -s
INSTALL_STRIP_LIBRARY   = -S -S

INSTALL			= @srcdir@/install-sh -c
INSTALL_PROGRAM		= ${INSTALL}
INSTALL_LIBRARY		= ${INSTALL}
INSTALL_DATA		= ${INSTALL} -m 644

# The symbol below provides support for dynamic loading and shared







>







|







207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229

# TCL_EXE is the name of a tclsh executable that is available *BEFORE*
# running make for the first time. Certain build targets (make genstubs)
# need it to be available on the PATH. This executable should *NOT* be
# required just to do a normal build although it can be required to run
# make dist. This variable is set to "" if no tclsh is available.
TCL_EXE			= @TCLSH_PROG@
WISH_EXE		= wish

# Tk used to let the configure script choose which program to use
# for installing, but there are just too many different versions of
# "install" around;  better to use the install-sh script that comes
# with the distribution, which is slower but guaranteed to work.

INSTALL_STRIP_PROGRAM   = -s
INSTALL_STRIP_LIBRARY   = -S -x

INSTALL			= @srcdir@/install-sh -c
INSTALL_PROGRAM		= ${INSTALL}
INSTALL_LIBRARY		= ${INSTALL}
INSTALL_DATA		= ${INSTALL} -m 644

# The symbol below provides support for dynamic loading and shared
289
290
291
292
293
294
295
296
297
298

299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316

AC_FLAGS		= @DEFS@
AR			= @AR@
RANLIB			= @RANLIB@
SRC_DIR			= @srcdir@
TOP_DIR			= $(SRC_DIR)/..
GENERIC_DIR		= $(TOP_DIR)/generic
UNIX_DIR		= $(SRC_DIR)
BMAP_DIR		= $(TOP_DIR)/bitmaps
TOOL_DIR		= @TCL_SRC_DIR@/tools

MAC_OSX_DIR		= $(TOP_DIR)/macosx
XLIB_DIR		= $(TOP_DIR)/xlib

#----------------------------------------------------------------
# The information below should be usable as is.  The configure
# script won't modify it and you shouldn't need to modify it
# either.
#----------------------------------------------------------------

# Flags to be passed to installManPage to control whether the manpages
# should be compressed and linked with softlinks
MAN_FLAGS               = @MAN_FLAGS@

CC			= @CC@

CC_SWITCHES_NO_STUBS = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \
-I${UNIX_DIR} -I${GENERIC_DIR} -I${BMAP_DIR} -I${TCL_GENERIC_DIR} \
${@TK_WINDOWINGSYSTEM@_INCLUDES} ${AC_FLAGS} ${PROTO_FLAGS} ${SECURITY_FLAGS} \







|


>









|
|







301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329

AC_FLAGS		= @DEFS@
AR			= @AR@
RANLIB			= @RANLIB@
SRC_DIR			= @srcdir@
TOP_DIR			= $(SRC_DIR)/..
GENERIC_DIR		= $(TOP_DIR)/generic
UNIX_DIR		= $(TOP_DIR)/unix
BMAP_DIR		= $(TOP_DIR)/bitmaps
TOOL_DIR		= @TCL_SRC_DIR@/tools
TEST_DIR		= $(TOP_DIR)/tests
MAC_OSX_DIR		= $(TOP_DIR)/macosx
XLIB_DIR		= $(TOP_DIR)/xlib

#----------------------------------------------------------------
# The information below should be usable as is.  The configure
# script won't modify it and you shouldn't need to modify it
# either.
#----------------------------------------------------------------

# Flags to be passed to installManPage to control how the manpages
# should be installed (symlinks, compression, package name suffix).
MAN_FLAGS               = @MAN_FLAGS@

CC			= @CC@

CC_SWITCHES_NO_STUBS = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \
-I${UNIX_DIR} -I${GENERIC_DIR} -I${BMAP_DIR} -I${TCL_GENERIC_DIR} \
${@TK_WINDOWINGSYSTEM@_INCLUDES} ${AC_FLAGS} ${PROTO_FLAGS} ${SECURITY_FLAGS} \
472
473
474
475
476
477
478








479
480
481






482
483
484
485
486
487
488
489
490
491
AQUA_PRIVATE_HDRS = $(MAC_OSX_DIR)/tkMacOSXPort.h $(MAC_OSX_DIR)/tkMacOSXInt.h

X11_PRIVATE_HDRS = $(UNIX_DIR)/tkUnixPort.h $(UNIX_DIR)/tkUnixInt.h

HDRS = bltList.h \
	default.h ks_names.h tkPatch.h tk.h tkButton.h tkCanvas.h tkInt.h  \
	tkPort.h tkScrollbar.h tkText.h









DEMOPROGS = browse hello ixset rmt rolodex square tcolor timer widget







all: binaries libraries doc

binaries: ${LIB_FILE} ${STUB_LIB_FILE} wish

libraries:

$(TOP_DIR)/doc/man.macros:
	chmod +x $(UNIX_DIR)/install-sh
	$(INSTALL_DATA) @TCL_SRC_DIR@/doc/man.macros $(TOP_DIR)/doc/man.macros








>
>
>
>
>
>
>
>



>
>
>
>
>
>


|







485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
AQUA_PRIVATE_HDRS = $(MAC_OSX_DIR)/tkMacOSXPort.h $(MAC_OSX_DIR)/tkMacOSXInt.h

X11_PRIVATE_HDRS = $(UNIX_DIR)/tkUnixPort.h $(UNIX_DIR)/tkUnixInt.h

HDRS = bltList.h \
	default.h ks_names.h tkPatch.h tk.h tkButton.h tkCanvas.h tkInt.h  \
	tkPort.h tkScrollbar.h tkText.h

PUBLIC_HDRS = $(GENERIC_DIR)/tk.h $(GENERIC_DIR)/tkDecls.h \
	$(GENERIC_DIR)/tkPlatDecls.h $(@TK_WINDOWINGSYSTEM@_HDRS)

# The private headers we want installed for install-private-headers
PRIVATE_HDRS = $(GENERIC_DIR)/tkInt.h $(GENERIC_DIR)/tkIntDecls.h \
	$(GENERIC_DIR)/tkIntPlatDecls.h \
	$(@TK_WINDOWINGSYSTEM@_PRIVATE_HDRS)

DEMOPROGS = browse hello ixset rmt rolodex square tcolor timer widget

SHELL_ENV = \
	@LD_LIBRARY_PATH_VAR@="`pwd`:${TCL_BIN_DIR}:$${@LD_LIBRARY_PATH_VAR@}"; \
	export @LD_LIBRARY_PATH_VAR@; \
	TCL_LIBRARY=@TCL_SRC_DIR@/library; export TCL_LIBRARY; \
	TK_LIBRARY=@TK_SRC_DIR@/library; export TK_LIBRARY;

all: binaries libraries doc

binaries: ${LIB_FILE} ${STUB_LIB_FILE} ${WISH_EXE}

libraries:

$(TOP_DIR)/doc/man.macros:
	chmod +x $(UNIX_DIR)/install-sh
	$(INSTALL_DATA) @TCL_SRC_DIR@/doc/man.macros $(TOP_DIR)/doc/man.macros

518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
tkLibObjs:
	@echo ${OBJS}
# This targets actually build the objects needed for the lib in the above
# case
objs: ${OBJS}


wish: $(WISH_OBJS) $(TK_LIB_FILE) $(TK_STUB_LIB_FILE) @APP_RSRC_FILE@
	${CC} ${CFLAGS} ${LDFLAGS} $(WISH_OBJS) @TK_BUILD_LIB_SPEC@ \
		$(WISH_LIBS) $(CC_SEARCH_FLAGS) -o wish

# Resetting the LIB_RUNTIME_DIR below is required so that
# the generated tktest executable gets the build directory
# burned into its ld search path. This keeps tktest from
# picking up an already installed version of the Tcl or
# Tk shared libraries.

tktest: $(TKTEST_OBJS) $(TK_LIB_FILE)
	$(MAKE) tktest-real LIB_RUNTIME_DIR=`pwd`:$(TCL_BIN_DIR)

tktest-real:
	${CC} ${CFLAGS} ${LDFLAGS} $(TKTEST_OBJS) @TK_BUILD_LIB_SPEC@ \
		$(WISH_LIBS) $(CC_SEARCH_FLAGS) -o tktest

# FIXME: This xttest rule seems to be broken in a number of ways.
# It should use CC_SEARCH_FLAGS, it does not include the shared







|

|








|







545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
tkLibObjs:
	@echo ${OBJS}
# This targets actually build the objects needed for the lib in the above
# case
objs: ${OBJS}


${WISH_EXE}: $(WISH_OBJS) $(TK_LIB_FILE) $(TK_STUB_LIB_FILE) @APP_RSRC_FILE@
	${CC} ${CFLAGS} ${LDFLAGS} $(WISH_OBJS) @TK_BUILD_LIB_SPEC@ \
		$(WISH_LIBS) $(CC_SEARCH_FLAGS) -o ${WISH_EXE}

# Resetting the LIB_RUNTIME_DIR below is required so that
# the generated tktest executable gets the build directory
# burned into its ld search path. This keeps tktest from
# picking up an already installed version of the Tcl or
# Tk shared libraries.

tktest: $(TKTEST_OBJS) $(TK_LIB_FILE)
	$(MAKE) tktest-real LIB_RUNTIME_DIR="`pwd`:$(TCL_BIN_DIR)"

tktest-real:
	${CC} ${CFLAGS} ${LDFLAGS} $(TKTEST_OBJS) @TK_BUILD_LIB_SPEC@ \
		$(WISH_LIBS) $(CC_SEARCH_FLAGS) -o tktest

# FIXME: This xttest rule seems to be broken in a number of ways.
# It should use CC_SEARCH_FLAGS, it does not include the shared
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602








603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
# Note, in the target below TCL_LIBRARY needs to be set or else
# "make test" won't work in the case where the compilation directory
# isn't the same as the source directory.
# Specifying TESTFLAGS on the command line is the standard way to pass
# args to tcltest, ie:
#	% make test TESTFLAGS="-verbose bps -file fileName.test"

test: tktest
	@LD_LIBRARY_PATH_VAR@=`pwd`:${TCL_BIN_DIR}:$${@LD_LIBRARY_PATH_VAR@}; \
	export @LD_LIBRARY_PATH_VAR@; \
	TCL_LIBRARY=@TCL_SRC_DIR@/library; export TCL_LIBRARY; \
	TK_LIBRARY=@TK_SRC_DIR@/library; export TK_LIBRARY; \
	./tktest $(TOP_DIR)/tests/all.tcl -geometry +0+0 \
	$(TESTFLAGS) $(TCLTESTARGS)

# Tests with different languages
testlang: tktest
	@LD_LIBRARY_PATH_VAR@=`pwd`:${TCL_BIN_DIR}:$${@LD_LIBRARY_PATH_VAR@}; \
	export @LD_LIBRARY_PATH_VAR@; \
	TCL_LIBRARY=@TCL_SRC_DIR@/library; export TCL_LIBRARY; \
	TK_LIBRARY=@TK_SRC_DIR@/library; export TK_LIBRARY; \
	for lang in $(LOCALES) ;  \
	do \
	LANG=$(lang); export LANG; \
	./tktest $(TOP_DIR)/tests/all.tcl -geometry +0+0 \
	$(TESTFLAGS) $(TCLTESTARGS); \
	done

# Useful target to launch a built tktest with the proper path,...
runtest: tktest
	@LD_LIBRARY_PATH_VAR@=`pwd`:${TCL_BIN_DIR}:$${@LD_LIBRARY_PATH_VAR@}; \
	export @LD_LIBRARY_PATH_VAR@; \
	TCL_LIBRARY=@TCL_SRC_DIR@/library; export TCL_LIBRARY; \
	TK_LIBRARY=@TK_SRC_DIR@/library; export TK_LIBRARY; \
	./tktest

# This target can be used to run wish from the build directory
# via `make shell` or `make shell SCRIPT=/tmp/foo.tcl`
shell: wish
	@LD_LIBRARY_PATH_VAR@=`pwd`:${TCL_BIN_DIR}:$${@LD_LIBRARY_PATH_VAR@}; \
	export @LD_LIBRARY_PATH_VAR@; \
	TCL_LIBRARY=@TCL_SRC_DIR@/library; export TCL_LIBRARY; \
	TK_LIBRARY=@TK_SRC_DIR@/library; export TK_LIBRARY; \
	./wish $(SCRIPT)

# This target can be used to run wish inside either gdb or insight
gdb: wish
	@echo "set env @LD_LIBRARY_PATH_VAR@=`pwd`:${TCL_BIN_DIR}:$${@LD_LIBRARY_PATH_VAR@}" > gdb.run
	@echo "set env TCL_LIBRARY=@TCL_SRC_DIR@/library" >> gdb.run
	@echo "set env TK_LIBRARY=@TK_SRC_DIR@/library" >> gdb.run
	gdb ./wish --command=gdb.run
	rm gdb.run









INSTALL_TARGETS = install-binaries install-libraries install-demos install-doc @EXTRA_INSTALL@

install: $(INSTALL_TARGETS)

install-strip:
	$(MAKE) $(INSTALL_TARGETS) \
		INSTALL_PROGRAM="$(INSTALL_PROGRAM) ${INSTALL_STRIP_PROGRAM}" \
		INSTALL_LIBRARY="$(INSTALL_LIBRARY) ${INSTALL_STRIP_LIBRARY}"

# Note: before running ranlib below, must cd to target directory because
# some ranlibs write to current directory, and this might not always be
# possible (e.g. if installing as root).

install-binaries: $(TK_LIB_FILE) $(TK_STUB_LIB_FILE) $(TK_BUILD_EXP_FILE) wish
	@for i in $(LIB_INSTALL_DIR) $(BIN_INSTALL_DIR) $(PKG_INSTALL_DIR); \
	    do \
		if [ ! -d $$i ] ; then \
		echo "Making directory $$i"; \
		mkdir -p $$i; \
		chmod 755 $$i; \
		else true; \
		fi; \
	    done;
	@if test ! -x $(SRC_DIR)/install-sh; then \
	    chmod +x $(SRC_DIR)/install-sh; \
	    fi
	@if test "x$(TK_SHARED_BUILD)" = "x1"; then \
	    echo "Creating package index $(PKG_INDEX)"; \
	    rm -f $(PKG_INDEX); \
	    (\
	    relative=`echo | awk '{ORS=" "; split("$(TK_PKG_DIR)",a,"/"); for (f in a) {print ".."}}'`;\
	    echo "if {[package vcompare [package provide Tcl] $(TCLVERSION)] != 0} { return }";\
	    if test "x$(DLL_INSTALL_DIR)" != "x$(BIN_INSTALL_DIR)"; then \
	    echo "package ifneeded Tk $(MAJOR_VERSION).$(MINOR_VERSION) [list load [file join \$$dir $${relative}$(TK_LIB_FILE)] Tk]";\
	    else \
	    echo "if {(\$$::tcl_platform(platform) eq \"unix\")";\







|
|
|
<
<
|




|
<
<
<



|





<
<
<
<
|



|
|
|
|
|
<


|
|


|

>
>
>
>
>
>
>
>














|
|

|

|
|








|







578
579
580
581
582
583
584
585
586
587


588
589
590
591
592
593



594
595
596
597
598
599
600
601
602




603
604
605
606
607
608
609
610
611

612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
# Note, in the target below TCL_LIBRARY needs to be set or else
# "make test" won't work in the case where the compilation directory
# isn't the same as the source directory.
# Specifying TESTFLAGS on the command line is the standard way to pass
# args to tcltest, ie:
#	% make test TESTFLAGS="-verbose bps -file fileName.test"

test: test-classic

test-classic: tktest


	$(SHELL_ENV) ./tktest $(TEST_DIR)/all.tcl -geometry +0+0 \
	$(TESTFLAGS) $(TCLTESTARGS)

# Tests with different languages
testlang: tktest
	$(SHELL_ENV) \



	for lang in $(LOCALES) ;  \
	do \
	LANG=$(lang); export LANG; \
	./tktest $(TEST_DIR)/all.tcl -geometry +0+0 \
	$(TESTFLAGS) $(TCLTESTARGS); \
	done

# Useful target to launch a built tktest with the proper path,...
runtest: tktest




	$(SHELL_ENV) ./tktest

# This target can be used to run wish from the build directory
# via `make shell` or `make shell SCRIPT=/tmp/foo.tcl`
shell: ${WISH_EXE}
	$(SHELL_ENV) ./${WISH_EXE} $(SCRIPT)

demo:
	$(SHELL_ENV) ./${WISH_EXE} $(TOP_DIR)/library/demos/widget


# This target can be used to run wish inside either gdb or insight
gdb: ${WISH_EXE}
	@echo "set env @LD_LIBRARY_PATH_VAR@=\"`pwd`:${TCL_BIN_DIR}:$${@LD_LIBRARY_PATH_VAR@}\"" > gdb.run
	@echo "set env TCL_LIBRARY=@TCL_SRC_DIR@/library" >> gdb.run
	@echo "set env TK_LIBRARY=@TK_SRC_DIR@/library" >> gdb.run
	gdb ./${WISH_EXE} --command=gdb.run
	rm gdb.run

VALGRINDARGS=--tool=memcheck --num-callers=8 --leak-resolution=high --leak-check=yes --show-reachable=yes -v

valgrind: tktest
	$(SHELL_ENV) valgrind $(VALGRINDARGS) ./tktest $(TEST_DIR)/all.tcl -geometry +0+0 -singleproc 1 $(TESTFLAGS)

valgrindshell: tktest
	$(SHELL_ENV) valgrind $(VALGRINDARGS) ./tktest $(SCRIPT)

INSTALL_TARGETS = install-binaries install-libraries install-demos install-doc @EXTRA_INSTALL@

install: $(INSTALL_TARGETS)

install-strip:
	$(MAKE) $(INSTALL_TARGETS) \
		INSTALL_PROGRAM="$(INSTALL_PROGRAM) ${INSTALL_STRIP_PROGRAM}" \
		INSTALL_LIBRARY="$(INSTALL_LIBRARY) ${INSTALL_STRIP_LIBRARY}"

# Note: before running ranlib below, must cd to target directory because
# some ranlibs write to current directory, and this might not always be
# possible (e.g. if installing as root).

install-binaries: $(TK_LIB_FILE) $(TK_STUB_LIB_FILE) $(TK_BUILD_EXP_FILE) ${WISH_EXE}
	@for i in "$(LIB_INSTALL_DIR)" "$(BIN_INSTALL_DIR)" "$(PKG_INSTALL_DIR)"; \
	    do \
	    if [ ! -d "$$i" ] ; then \
		echo "Making directory $$i"; \
		mkdir -p "$$i"; \
		chmod 755 "$$i"; \
		else true; \
		fi; \
	    done;
	@if test ! -x $(SRC_DIR)/install-sh; then \
	    chmod +x $(SRC_DIR)/install-sh; \
	    fi
	@if test "x$(TK_SHARED_BUILD)" = "x1"; then \
	    echo "Creating package index $(PKG_INDEX)"; \
	    rm -f "$(PKG_INDEX)"; \
	    (\
	    relative=`echo | awk '{ORS=" "; split("$(TK_PKG_DIR)",a,"/"); for (f in a) {print ".."}}'`;\
	    echo "if {[package vcompare [package provide Tcl] $(TCLVERSION)] != 0} { return }";\
	    if test "x$(DLL_INSTALL_DIR)" != "x$(BIN_INSTALL_DIR)"; then \
	    echo "package ifneeded Tk $(MAJOR_VERSION).$(MINOR_VERSION) [list load [file join \$$dir $${relative}$(TK_LIB_FILE)] Tk]";\
	    else \
	    echo "if {(\$$::tcl_platform(platform) eq \"unix\")";\
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
	@@INSTALL_LIB@
	@chmod 555 $(DLL_INSTALL_DIR)/$(LIB_FILE)
	@if test "$(TK_BUILD_EXP_FILE)" != ""; then \
	    echo "Installing $(TK_EXP_FILE) to $(LIB_INSTALL_DIR)/"; \
	    $(INSTALL_DATA) $(TK_BUILD_EXP_FILE) \
			$(LIB_INSTALL_DIR)/$(TK_EXP_FILE); \
	    fi
	@echo "Installing wish as $(BIN_INSTALL_DIR)/wish$(VERSION)"
	@$(INSTALL_PROGRAM) wish $(BIN_INSTALL_DIR)/wish$(VERSION)
	@echo "Installing tkConfig.sh to $(LIB_INSTALL_DIR)/"
	@$(INSTALL_DATA) tkConfig.sh $(LIB_INSTALL_DIR)/tkConfig.sh
	@if test "$(STUB_LIB_FILE)" != "" ; then \
	    echo "Installing $(STUB_LIB_FILE) to $(LIB_INSTALL_DIR)/"; \
	    @INSTALL_STUB_LIB@ ; \
	fi
	@EXTRA_INSTALL_BINARIES@

install-libraries: libraries
	@if test "$(@TK_WINDOWINGSYSTEM@_XLIB_HDRS)" != ""; then \
	    XLIB_INCLUDE_INSTALL_DIR=$(INCLUDE_INSTALL_DIR)/X11; fi; \
	for i in $(INCLUDE_INSTALL_DIR) $${XLIB_INCLUDE_INSTALL_DIR} \
		$(SCRIPT_INSTALL_DIR) $(SCRIPT_INSTALL_DIR)/images \
		$(SCRIPT_INSTALL_DIR)/msgs; \
	    do \
		if [ ! -d $$i ] ; then \
		echo "Making directory $$i"; \
		mkdir -p $$i; \
		chmod 755 $$i; \
		else true; \
		fi; \
	    done;
	@if test ! -x $(SRC_DIR)/install-sh; then \
	    chmod +x $(SRC_DIR)/install-sh; \
	    fi
	@echo "Installing header files";
	@for i in $(GENERIC_DIR)/tk.h $(GENERIC_DIR)/tkDecls.h \
		$(GENERIC_DIR)/tkPlatDecls.h $(@TK_WINDOWINGSYSTEM@_HDRS) ; \
	    do \
	    $(INSTALL_DATA) $$i $(INCLUDE_INSTALL_DIR); \
	    done;
	@list='$(@TK_WINDOWINGSYSTEM@_XLIB_HDRS)'; for i in $$list ; \
	    do \
	    $(INSTALL_DATA) $$i $(INCLUDE_INSTALL_DIR)/X11; \
	    done;







|
|
|
|








|
|
|
|

|

|
|







|
<







674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709

710
711
712
713
714
715
716
	@@INSTALL_LIB@
	@chmod 555 $(DLL_INSTALL_DIR)/$(LIB_FILE)
	@if test "$(TK_BUILD_EXP_FILE)" != ""; then \
	    echo "Installing $(TK_EXP_FILE) to $(LIB_INSTALL_DIR)/"; \
	    $(INSTALL_DATA) $(TK_BUILD_EXP_FILE) \
			$(LIB_INSTALL_DIR)/$(TK_EXP_FILE); \
	    fi
	@echo "Installing ${WISH_EXE} as $(BIN_INSTALL_DIR)/wish$(VERSION)"
	@$(INSTALL_PROGRAM) ${WISH_EXE} "$(BIN_INSTALL_DIR)/wish$(VERSION)"
	@echo "Installing tkConfig.sh to $(CONFIG_INSTALL_DIR)/"
	@$(INSTALL_DATA) tkConfig.sh "$(CONFIG_INSTALL_DIR)/tkConfig.sh"
	@if test "$(STUB_LIB_FILE)" != "" ; then \
	    echo "Installing $(STUB_LIB_FILE) to $(LIB_INSTALL_DIR)/"; \
	    @INSTALL_STUB_LIB@ ; \
	fi
	@EXTRA_INSTALL_BINARIES@

install-libraries: libraries
	@if test "$(@TK_WINDOWINGSYSTEM@_XLIB_HDRS)" != ""; then \
	    XLIB_INCLUDE_INSTALL_DIR="$(INCLUDE_INSTALL_DIR)/X11"; fi; \
	for i in "$(INCLUDE_INSTALL_DIR)" "$${XLIB_INCLUDE_INSTALL_DIR}" \
		"$(SCRIPT_INSTALL_DIR)" "$(SCRIPT_INSTALL_DIR)/images" \
		"$(SCRIPT_INSTALL_DIR)/msgs"; \
	    do \
	    if [ -n "$$i" -a ! -d "$$i" ] ; then \
		echo "Making directory $$i"; \
		mkdir -p "$$i"; \
		chmod 755 "$$i"; \
		else true; \
		fi; \
	    done;
	@if test ! -x $(SRC_DIR)/install-sh; then \
	    chmod +x $(SRC_DIR)/install-sh; \
	    fi
	@echo "Installing header files";
	@for i in $(PUBLIC_HDRS); \

	    do \
	    $(INSTALL_DATA) $$i $(INCLUDE_INSTALL_DIR); \
	    done;
	@list='$(@TK_WINDOWINGSYSTEM@_XLIB_HDRS)'; for i in $$list ; \
	    do \
	    $(INSTALL_DATA) $$i $(INCLUDE_INSTALL_DIR)/X11; \
	    done;
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
	    $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i $(MANN_INSTALL_DIR); \
	done

# Optional target to install private headers
install-private-headers: libraries
	@for i in $(PRIVATE_INCLUDE_INSTALL_DIR); \
	    do \
	    if [ ! -d $$i ] ; then \
		echo "Making directory $$i"; \
		mkdir -p $$i; \
		chmod 755 $$i; \
		else true; \
		fi; \
	    done;
	@if test ! -x $(SRC_DIR)/install-sh; then \
	    chmod +x $(SRC_DIR)/install-sh; \
	    fi
	@echo "Installing private header files";
	@for i in $(GENERIC_DIR)/tkInt.h $(GENERIC_DIR)/tkIntDecls.h \
		$(GENERIC_DIR)/tkIntPlatDecls.h \
		$(@TK_WINDOWINGSYSTEM@_PRIVATE_HDRS); \
	    do \
	    $(INSTALL_DATA) $$i $(PRIVATE_INCLUDE_INSTALL_DIR); \
	    done;
	@sed -e 's#\.\./unix/##' $(GENERIC_DIR)/tkPort.h > tkPort.h; \
	    $(INSTALL_DATA) tkPort.h $(PRIVATE_INCLUDE_INSTALL_DIR); \
	    rm -f tkPort.h

Makefile: $(UNIX_DIR)/Makefile.in
	$(SHELL) config.status

clean:
	rm -f *.a *.o libtk* core errs *~ \#* TAGS *.E a.out \
		errors wish tktest lib.exp Tk *.rsrc

distclean: clean
	rm -rf Makefile config.status config.cache config.log tkConfig.sh \
		$(PACKAGE).* prototype *.plist Tk.framework

depend:
	makedepend -- $(DEPEND_SWITCHES) -- $(SRCS)

# Test binaries.  The rule for tkTestInit.o is complicated because
# it is is compiled from tkAppInit.c.  Can't use the "-o" option
# because this doesn't work on some strange compilers (e.g. UnixWare).
# To enable concurrent parallel make of wish and tktest, this target has to
# depend on wish, this ensures that linking of wish with tkTestInit.o does not
# execute concurrently with the renaming and recompiling of that same object
# file in the target below.

tkTestInit.o: $(UNIX_DIR)/tkAppInit.c wish
	@if test -f tkAppInit.o ; then \
	    rm -f tkAppInit.sav; \
	    mv tkAppInit.o tkAppInit.sav; \
	fi;
	$(CC) -c $(APP_CC_SWITCHES) -DTK_TEST $(UNIX_DIR)/tkAppInit.c
	rm -f tkTestInit.o
	mv tkAppInit.o tkTestInit.o







|

|
|






|
<
<
|

|


|







|
















|







799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816


817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
	    $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i $(MANN_INSTALL_DIR); \
	done

# Optional target to install private headers
install-private-headers: libraries
	@for i in $(PRIVATE_INCLUDE_INSTALL_DIR); \
	    do \
	    if [ ! -d "$$i" ] ; then \
		echo "Making directory $$i"; \
		mkdir -p "$$i"; \
		chmod 755 "$$i"; \
		else true; \
		fi; \
	    done;
	@if test ! -x $(SRC_DIR)/install-sh; then \
	    chmod +x $(SRC_DIR)/install-sh; \
	    fi
	@echo "Installing private header files to $(PRIVATE_INCLUDE_INSTALL_DIR)/";


	@for i in $(PRIVATE_HDRS); \
	    do \
	    $(INSTALL_DATA) $$i "$(PRIVATE_INCLUDE_INSTALL_DIR)"; \
	    done;
	@sed -e 's#\.\./unix/##' $(GENERIC_DIR)/tkPort.h > tkPort.h; \
	    $(INSTALL_DATA) tkPort.h "$(PRIVATE_INCLUDE_INSTALL_DIR)"; \
	    rm -f tkPort.h

Makefile: $(UNIX_DIR)/Makefile.in
	$(SHELL) config.status

clean:
	rm -f *.a *.o libtk* core errs *~ \#* TAGS *.E a.out \
		errors ${WISH_EXE} tktest lib.exp Tk *.rsrc

distclean: clean
	rm -rf Makefile config.status config.cache config.log tkConfig.sh \
		$(PACKAGE).* prototype *.plist Tk.framework

depend:
	makedepend -- $(DEPEND_SWITCHES) -- $(SRCS)

# Test binaries.  The rule for tkTestInit.o is complicated because
# it is is compiled from tkAppInit.c.  Can't use the "-o" option
# because this doesn't work on some strange compilers (e.g. UnixWare).
# To enable concurrent parallel make of wish and tktest, this target has to
# depend on wish, this ensures that linking of wish with tkTestInit.o does not
# execute concurrently with the renaming and recompiling of that same object
# file in the target below.

tkTestInit.o: $(UNIX_DIR)/tkAppInit.c ${WISH_EXE}
	@if test -f tkAppInit.o ; then \
	    rm -f tkAppInit.sav; \
	    mv tkAppInit.o tkAppInit.sav; \
	fi;
	$(CC) -c $(APP_CC_SWITCHES) -DTK_TEST $(UNIX_DIR)/tkAppInit.c
	rm -f tkTestInit.o
	mv tkAppInit.o tkTestInit.o
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
tkMacOSXFont.o: $(MAC_OSX_DIR)/tkMacOSXFont.c
	$(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tkMacOSXFont.c

tkMacOSXHLEvents.o: $(MAC_OSX_DIR)/tkMacOSXHLEvents.c
	$(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tkMacOSXHLEvents.c

tkMacOSXInit.o: $(MAC_OSX_DIR)/tkMacOSXInit.c $(GENERIC_DIR)/tkInitScript.h tkConfig.sh
	$(CC) -c $(CC_SWITCHES)  -DTK_LIBRARY=\"${TK_LIBRARY}\" \
	    $(MAC_OSX_DIR)/tkMacOSXInit.c

tkMacOSXKeyboard.o: $(MAC_OSX_DIR)/tkMacOSXKeyboard.c
	$(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tkMacOSXKeyboard.c

tkMacOSXKeyEvent.o: $(MAC_OSX_DIR)/tkMacOSXKeyEvent.c
	$(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tkMacOSXKeyEvent.c







|







1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
tkMacOSXFont.o: $(MAC_OSX_DIR)/tkMacOSXFont.c
	$(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tkMacOSXFont.c

tkMacOSXHLEvents.o: $(MAC_OSX_DIR)/tkMacOSXHLEvents.c
	$(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tkMacOSXHLEvents.c

tkMacOSXInit.o: $(MAC_OSX_DIR)/tkMacOSXInit.c $(GENERIC_DIR)/tkInitScript.h tkConfig.sh
	$(CC) -c $(CC_SWITCHES) -DTK_LIBRARY=\"${TK_LIBRARY}\" \
	    $(MAC_OSX_DIR)/tkMacOSXInit.c

tkMacOSXKeyboard.o: $(MAC_OSX_DIR)/tkMacOSXKeyboard.c
	$(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tkMacOSXKeyboard.c

tkMacOSXKeyEvent.o: $(MAC_OSX_DIR)/tkMacOSXKeyEvent.c
	$(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tkMacOSXKeyEvent.c
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
	| sort -n | grep -E -v '^([Tt]k|_?X)' || true

#
# Target to create a Tk RPM for Linux.  Requires that you be on a Linux
# system.
#

rpm: all /bin/rpm
	rm -f THIS.TCL.SPEC
	echo "%define _builddir `pwd`" > THIS.TK.SPEC
	echo "%define _rpmdir `pwd`/RPMS" >> THIS.TK.SPEC
	cat tk.spec >> THIS.TK.SPEC
	mkdir -p RPMS/i386
	rpm -bb THIS.TK.SPEC
	mv RPMS/i386/*.rpm .
	rm -rf RPMS THIS.TK.SPEC

#
# Target to create a proper Tk distribution from information in the
# master source directory.  DISTDIR must be defined to indicate where
# to put the distribution.  DISTDIR must be an absolute path name.







|





|







1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
	| sort -n | grep -E -v '^([Tt]k|_?X)' || true

#
# Target to create a Tk RPM for Linux.  Requires that you be on a Linux
# system.
#

rpm: all
	rm -f THIS.TCL.SPEC
	echo "%define _builddir `pwd`" > THIS.TK.SPEC
	echo "%define _rpmdir `pwd`/RPMS" >> THIS.TK.SPEC
	cat tk.spec >> THIS.TK.SPEC
	mkdir -p RPMS/i386
	rpmbuild -bb THIS.TK.SPEC
	mv RPMS/i386/*.rpm .
	rm -rf RPMS THIS.TK.SPEC

#
# Target to create a proper Tk distribution from information in the
# master source directory.  DISTDIR must be defined to indicate where
# to put the distribution.  DISTDIR must be an absolute path name.
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
	@(cd $(TOP_DIR); for i in bitmaps/* ; do \
	    if [ -f $$i ] ; then \
		sed -e 's/static char/static unsigned char/' \
		       $$i > $(DISTDIR)/$$i; \
	    fi; \
	done;)
	mkdir $(DISTDIR)/generic
	cp -p $(GENERIC_DIR)/*.c $(GENERIC_DIR)/*.h $(GENERIC_DIR)/prolog.ps \
		$(DISTDIR)/generic
	cp -p $(GENERIC_DIR)/*.decls $(DISTDIR)/generic
	cp -p $(GENERIC_DIR)/README $(DISTDIR)/generic
	cp -p $(TOP_DIR)/changes $(TOP_DIR)/ChangeLog $(TOP_DIR)/README \
		$(TOP_DIR)/license.terms $(DISTDIR)
	rm -f $(DISTDIR)/generic/blt*.[ch]
	mkdir $(DISTDIR)/win
	cp $(TOP_DIR)/win/Makefile.in $(DISTDIR)/win
	cp $(TOP_DIR)/win/configure.in \
		$(TOP_DIR)/win/configure \
		$(TOP_DIR)/win/tkConfig.sh.in \
		$(TOP_DIR)/win/aclocal.m4 $(TOP_DIR)/win/tcl.m4 \
		$(DISTDIR)/win
	cp -p $(TOP_DIR)/win/*.c $(TOP_DIR)/win/*.h $(DISTDIR)/win
	cp -p $(TOP_DIR)/win/*.bat $(DISTDIR)/win
	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/*.bat
	cp -p $(TOP_DIR)/win/makefile.* $(DISTDIR)/win
	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/makefile.*
	cp -p $(TOP_DIR)/win/rules.vc $(DISTDIR)/win
	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/rules.vc
	cp -p $(TOP_DIR)/win/README $(DISTDIR)/win
	cp -p $(TOP_DIR)/win/lamp.bmp $(DISTDIR)/win
	cp -p $(TOP_DIR)/license.terms $(DISTDIR)/win
	mkdir $(DISTDIR)/win/rc
	cp -p $(TOP_DIR)/win/wish.exe.manifest.in $(DISTDIR)/win/
	cp -p $(TOP_DIR)/win/rc/*.rc $(TOP_DIR)/win/rc/*.cur \
		$(TOP_DIR)/win/rc/*.ico $(TOP_DIR)/win/rc/*.bmp \
		$(DISTDIR)/win/rc
	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/rc/*.rc
	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/wish.exe.manifest.in
	mkdir $(DISTDIR)/mac
	cp -p $(TOP_DIR)/mac/tkMacProjects.sea.hqx $(DISTDIR)/mac
	cp -p $(TOP_DIR)/mac/*.c $(TOP_DIR)/mac/*.h $(TOP_DIR)/mac/*.r \
		$(DISTDIR)/mac
	cp -p $(TOP_DIR)/mac/README $(DISTDIR)/mac







|













<
|










|
<
<







1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378

1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390


1391
1392
1393
1394
1395
1396
1397
	@(cd $(TOP_DIR); for i in bitmaps/* ; do \
	    if [ -f $$i ] ; then \
		sed -e 's/static char/static unsigned char/' \
		       $$i > $(DISTDIR)/$$i; \
	    fi; \
	done;)
	mkdir $(DISTDIR)/generic
	cp -p $(GENERIC_DIR)/*.[ch] $(GENERIC_DIR)/prolog.ps \
		$(DISTDIR)/generic
	cp -p $(GENERIC_DIR)/*.decls $(DISTDIR)/generic
	cp -p $(GENERIC_DIR)/README $(DISTDIR)/generic
	cp -p $(TOP_DIR)/changes $(TOP_DIR)/ChangeLog $(TOP_DIR)/README \
		$(TOP_DIR)/license.terms $(DISTDIR)
	rm -f $(DISTDIR)/generic/blt*.[ch]
	mkdir $(DISTDIR)/win
	cp $(TOP_DIR)/win/Makefile.in $(DISTDIR)/win
	cp $(TOP_DIR)/win/configure.in \
		$(TOP_DIR)/win/configure \
		$(TOP_DIR)/win/tkConfig.sh.in \
		$(TOP_DIR)/win/aclocal.m4 $(TOP_DIR)/win/tcl.m4 \
		$(DISTDIR)/win

	cp -p $(TOP_DIR)/win/*.[ch] $(TOP_DIR)/win/*.bat $(DISTDIR)/win
	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/*.bat
	cp -p $(TOP_DIR)/win/makefile.* $(DISTDIR)/win
	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/makefile.*
	cp -p $(TOP_DIR)/win/rules.vc $(DISTDIR)/win
	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/rules.vc
	cp -p $(TOP_DIR)/win/README $(DISTDIR)/win
	cp -p $(TOP_DIR)/win/lamp.bmp $(DISTDIR)/win
	cp -p $(TOP_DIR)/license.terms $(DISTDIR)/win
	mkdir $(DISTDIR)/win/rc
	cp -p $(TOP_DIR)/win/wish.exe.manifest.in $(DISTDIR)/win/
	cp -p $(TOP_DIR)/win/rc/*.{rc,cur,ico,bmp} $(DISTDIR)/win/rc


	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/rc/*.rc
	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/wish.exe.manifest.in
	mkdir $(DISTDIR)/mac
	cp -p $(TOP_DIR)/mac/tkMacProjects.sea.hqx $(DISTDIR)/mac
	cp -p $(TOP_DIR)/mac/*.c $(TOP_DIR)/mac/*.h $(TOP_DIR)/mac/*.r \
		$(DISTDIR)/mac
	cp -p $(TOP_DIR)/mac/README $(DISTDIR)/mac
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
	mkdir $(DISTDIR)/macosx/Wish.pbproj
	cp -p $(MAC_OSX_DIR)/Wish.pbproj/*.pbx* $(DISTDIR)/macosx/Wish.pbproj
	mkdir $(DISTDIR)/compat
	cp -p $(TOP_DIR)/license.terms $(TCLDIR)/compat/unistd.h \
		$(TCLDIR)/compat/stdlib.h $(TCLDIR)/compat/limits.h \
		$(DISTDIR)/compat
	mkdir $(DISTDIR)/xlib
	cp -p $(XLIB_DIR)/*.h $(XLIB_DIR)/*.c $(DISTDIR)/xlib
	cp -p $(TOP_DIR)/license.terms $(DISTDIR)/xlib
	mkdir $(DISTDIR)/xlib/X11
	cp -p $(XLIB_DIR)/X11/*.h $(DISTDIR)/xlib/X11
	cp -p $(TOP_DIR)/license.terms $(DISTDIR)/xlib/X11
	mkdir $(DISTDIR)/library
	cp -p $(TOP_DIR)/license.terms $(TOP_DIR)/library/*.tcl \
		$(TOP_DIR)/library/tclIndex \







|







1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
	mkdir $(DISTDIR)/macosx/Wish.pbproj
	cp -p $(MAC_OSX_DIR)/Wish.pbproj/*.pbx* $(DISTDIR)/macosx/Wish.pbproj
	mkdir $(DISTDIR)/compat
	cp -p $(TOP_DIR)/license.terms $(TCLDIR)/compat/unistd.h \
		$(TCLDIR)/compat/stdlib.h $(TCLDIR)/compat/limits.h \
		$(DISTDIR)/compat
	mkdir $(DISTDIR)/xlib
	cp -p $(XLIB_DIR)/*.[ch] $(DISTDIR)/xlib
	cp -p $(TOP_DIR)/license.terms $(DISTDIR)/xlib
	mkdir $(DISTDIR)/xlib/X11
	cp -p $(XLIB_DIR)/X11/*.h $(DISTDIR)/xlib/X11
	cp -p $(TOP_DIR)/license.terms $(DISTDIR)/xlib/X11
	mkdir $(DISTDIR)/library
	cp -p $(TOP_DIR)/license.terms $(TOP_DIR)/library/*.tcl \
		$(TOP_DIR)/library/tclIndex \
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
		cp $$i $(DISTDIR)/$$i; \
	    fi; \
	done;)
	mkdir $(DISTDIR)/doc
	cp -p $(TOP_DIR)/license.terms $(TOP_DIR)/doc/*.[13n] \
		$(TCLDIR)/doc/man.macros $(DISTDIR)/doc
	mkdir $(DISTDIR)/tests
	cp -p $(TOP_DIR)/license.terms $(TOP_DIR)/tests/*.test \
		$(TOP_DIR)/tests/*.tcl $(TOP_DIR)/tests/README \
		$(TOP_DIR)/tests/option.file* $(DISTDIR)/tests

#
# The following target can only be used for non-patch releases.  Use
# the "allpatch" target below for patch releases.
#

alldist: dist
	rm -f $(DISTROOT)/$(DISTNAME)-src.tar.gz $(DISTROOT)/$(ZIPNAME)
	cd $(DISTROOT); tar cf $(DISTNAME)-src.tar $(DISTNAME); \
		gzip -9 $(DISTNAME)-src.tar; zip -qr8 $(ZIPNAME) $(DISTNAME)

#
# The target below is similar to "alldist" except it works for patch
# releases.  It is needed because patch releases are peculiar: the
# patch designation appears in the name of the compressed file
# (e.g. tk8.0p1.tar.gz) but the extracted source directory doesn't
# include the patch designation (e.g. tk8.0).
#

allpatch: dist
	rm -f $(DISTROOT)/$(DISTNAME)-src.tar.gz $(DISTROOT)/$(ZIPNAME)
	mv $(DISTROOT)/tk${VERSION} $(DISTROOT)/old
	mv $(DISTROOT)/$(DISTNAME) $(DISTROOT)/tk${VERSION}
	cd $(DISTROOT); tar cf $(DISTNAME)-src.tar tk${VERSION}; \
		gzip -9 $(DISTNAME)-src.tar; zip -r8 $(ZIPNAME) tk${VERSION}
	mv $(DISTROOT)/tk${VERSION} $(DISTROOT)/$(DISTNAME)
	mv $(DISTROOT)/old $(DISTROOT)/tk${VERSION}

#
# This target creates the HTML folder for Tcl & Tk and places it
# in DISTDIR/html.  It uses the tcltk-man2html.tcl tool from
# the Tcl group's tool workspace.  It depends on the Tcl & Tk being
# in directories called tcl8.3 & tk8.3 up two directories from the
# TOOL_DIR.
#

html:
	$(BUILD_HTML)
	@EXTRA_BUILD_HTML@
html-tcl:
	$(BUILD_HTML) --tcl
	@EXTRA_BUILD_HTML@
html-tk:
	$(BUILD_HTML) --tk
	@EXTRA_BUILD_HTML@

BUILD_HTML = \
	@if test -f "$(BUILD_TCLSH)"; then \
	@LD_LIBRARY_PATH_VAR@=$(TCL_BIN_DIR):$${@LD_LIBRARY_PATH_VAR@}; export @LD_LIBRARY_PATH_VAR@; \
	TCL_LIBRARY=@TCL_SRC_DIR@/library; export TCL_LIBRARY; \
	TCLSH="$(BUILD_TCLSH)"; else \
	TCLSH="$(TCL_EXE)"; fi ;\
	$${TCLSH} $(TOOL_DIR)/tcltk-man2html.tcl --htmldir=$(HTML_INSTALL_DIR) \
		--srcdir=$(TOP_DIR)/.. $(BUILD_HTML_FLAGS)

#
# Target to create a Macintosh version of the distribution.  This will
# do a normal distribution and then massage the output to prepare it
# for moving to the Mac platform.  This requires a few scripts and
# programs found only in the Tcl greoup's tool workspace.







|
|
|
<
<
<
<
<






<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<




















<
<
|

|







1451
1452
1453
1454
1455
1456
1457
1458
1459
1460





1461
1462
1463
1464
1465
1466

















1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486


1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
		cp $$i $(DISTDIR)/$$i; \
	    fi; \
	done;)
	mkdir $(DISTDIR)/doc
	cp -p $(TOP_DIR)/license.terms $(TOP_DIR)/doc/*.[13n] \
		$(TCLDIR)/doc/man.macros $(DISTDIR)/doc
	mkdir $(DISTDIR)/tests
	cp -p $(TOP_DIR)/license.terms $(TEST_DIR)/*.{test,tcl} \
		$(TEST_DIR)/README \
		$(TEST_DIR)/option.file* $(DISTDIR)/tests






alldist: dist
	rm -f $(DISTROOT)/$(DISTNAME)-src.tar.gz $(DISTROOT)/$(ZIPNAME)
	cd $(DISTROOT); tar cf $(DISTNAME)-src.tar $(DISTNAME); \
		gzip -9 $(DISTNAME)-src.tar; zip -qr8 $(ZIPNAME) $(DISTNAME)


















#
# This target creates the HTML folder for Tcl & Tk and places it
# in DISTDIR/html.  It uses the tcltk-man2html.tcl tool from
# the Tcl group's tool workspace.  It depends on the Tcl & Tk being
# in directories called tcl8.3 & tk8.3 up two directories from the
# TOOL_DIR.
#

html:
	$(BUILD_HTML)
	@EXTRA_BUILD_HTML@
html-tcl:
	$(BUILD_HTML) --tcl
	@EXTRA_BUILD_HTML@
html-tk:
	$(BUILD_HTML) --tk
	@EXTRA_BUILD_HTML@

BUILD_HTML = \
	@if test -f "$(BUILD_TCLSH)"; then \


	$(SHELL_ENV) TCLSH="$(BUILD_TCLSH)"; else \
	TCLSH="$(TCL_EXE)"; fi ;\
	"$${TCLSH}" $(TOOL_DIR)/tcltk-man2html.tcl --htmldir="$(HTML_INSTALL_DIR)" \
		--srcdir=$(TOP_DIR)/.. $(BUILD_HTML_FLAGS)

#
# Target to create a Macintosh version of the distribution.  This will
# do a normal distribution and then massage the output to prepare it
# for moving to the Mac platform.  This requires a few scripts and
# programs found only in the Tcl greoup's tool workspace.
1587
1588
1589
1590
1591
1592
1593













1594
		 $(DISTDIR)/SUNWtcl/$(TCLVERSION)/`arch`=`arch` \
	| $(TCL_EXE) $(TCLDIR)/unix/mkProto.tcl $(TCLVERSION) \
		$(UNIX_DIR) > prototype
	pkgmk -o -d . -f prototype -a `arch`
	pkgtrans -s . $(PACKAGE).`arch` $(PACKAGE)
	rm -rf $(PACKAGE)














# DO NOT DELETE THIS LINE -- make depend depends on it.







>
>
>
>
>
>
>
>
>
>
>
>
>

1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
		 $(DISTDIR)/SUNWtcl/$(TCLVERSION)/`arch`=`arch` \
	| $(TCL_EXE) $(TCLDIR)/unix/mkProto.tcl $(TCLVERSION) \
		$(UNIX_DIR) > prototype
	pkgmk -o -d . -f prototype -a `arch`
	pkgtrans -s . $(PACKAGE).`arch` $(PACKAGE)
	rm -rf $(PACKAGE)

#
# The list of all the targets that do not correspond to real files. This stops
# 'make' from getting confused when someone makes an error in a rule.
#

.PHONY: all binaries libraries objs doc html html-tcl html-tk test runtest
.PHONY: install install-strip install-binaries install-libraries
.PHONY: install-headers install-private-headers install-doc
.PHONY: clean distclean depend genstubs checkstubs checkexports checkuchar
.PHONY: shell gdb valgrind valgrindshell dist alldist rpm
.PHONY: tkLibObjs tktest-real test-classic test-ttk testlang
.PHONY: demo install-demos

# DO NOT DELETE THIS LINE -- make depend depends on it.

Changes to unix/tkUnixPort.h.

134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#   define HMENU void *
#   define TkWinDCState void
#   define HPALETTE void *
#   define WNDPROC void *
#   define WPARAM void *
#   define LPARAM void *
#   define LRESULT void *
#endif /* This really should be an #else, as soon as the Xlib stubs are enabled for Cygwin. */
    /*
     * 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);

/* #endif */

/*
 * These macros are just wrappers for the equivalent X Region calls.
 */

#define TkClipBox(rgn, rect) XClipBox((Region) rgn, rect)
#define TkCreateRegion() (TkRegion) XCreateRegion()
#define TkDestroyRegion(rgn) XDestroyRegion((Region) rgn)
#define TkIntersectRegion(a, b, r) XIntersectRegion((Region) a, \
	(Region) b, (Region) r)
#define TkRectInRegion(r, x, y, w, h) XRectInRegion((Region) r, x, y, w, h)
#define TkSetRegion(d, gc, rgn) XSetRegion(d, gc, (Region) rgn)
#define TkSubtractRegion(a, b, r) XSubtractRegion((Region) a, \
	(Region) b, (Region) r)
#define TkUnionRectWithRegion(rect, src, ret) XUnionRectWithRegion(rect, \
	(Region) src, (Region) ret)

/* #endif */

/*
 * Supply macros for seek offsets, if they're not already provided by
 * an include file.
 */

#ifndef SEEK_SET







|









<
<
|
|
|

|
|
|
|
|
|
|
|
|
|
|

|







134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150


151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#   define HMENU void *
#   define TkWinDCState void
#   define HPALETTE void *
#   define WNDPROC void *
#   define WPARAM void *
#   define LPARAM void *
#   define LRESULT void *
#else /* !__CYGWIN__ */
    /*
     * 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);



    /*
     * These macros are just wrappers for the equivalent X Region calls.
     */

#   define TkClipBox(rgn, rect) XClipBox((Region) (rgn), (rect))
#   define TkCreateRegion() (TkRegion) XCreateRegion()
#   define TkDestroyRegion(rgn) XDestroyRegion((Region) (rgn))
#   define TkIntersectRegion(a, b, r) XIntersectRegion((Region) (a), \
	(Region) (b), (Region) (r))
#   define TkRectInRegion(r, x, y, w, h) XRectInRegion((Region) (r), (x), (y), (w), (h))
#   define TkSetRegion(d, gc, rgn) XSetRegion((d), (gc), (Region) (rgn))
#   define TkSubtractRegion(a, b, r) XSubtractRegion((Region) (a), \
	(Region) (b), (Region) (r))
#   define TkUnionRectWithRegion(rect, src, ret) XUnionRectWithRegion((rect), \
	(Region) (src), (Region) (ret))

#endif /* !__CYGWIN__ */

/*
 * Supply macros for seek offsets, if they're not already provided by
 * an include file.
 */

#ifndef SEEK_SET

Changes to win/Makefile.in.

88
89
90
91
92
93
94





95
96
97
98
99
100
101
# for this version of Tk:
TCL_BIN_DIR		= @TCL_BIN_DIR@

# The directory containing the Tcl sources and headers appropriate
# for this version of Tk ("srcdir" will be replaced or has already
# been replaced by the configure script):
TCL_GENERIC_DIR		= @TCL_SRC_DIR@/generic





TCL_TOOL_DIR		= @TCL_SRC_DIR@/tools

# Converts a POSIX path to a Windows native path.
CYGPATH			= @CYGPATH@

# The name of the Tcl library.
TCL_LIB_FILE	  = "$(shell $(CYGPATH) '@TCL_BIN_DIR@/@TCL_LIB_FILE@')"







>
>
>
>
>







88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# for this version of Tk:
TCL_BIN_DIR		= @TCL_BIN_DIR@

# The directory containing the Tcl sources and headers appropriate
# for this version of Tk ("srcdir" will be replaced or has already
# been replaced by the configure script):
TCL_GENERIC_DIR		= @TCL_SRC_DIR@/generic

# The directory containing the platform specific Tcl sources and headers
# appropriate for this version of Tk:
TCL_PLATFORM_DIR	= @TCL_SRC_DIR@/win

TCL_TOOL_DIR		= @TCL_SRC_DIR@/tools

# Converts a POSIX path to a Windows native path.
CYGPATH			= @CYGPATH@

# The name of the Tcl library.
TCL_LIB_FILE	  = "$(shell $(CYGPATH) '@TCL_BIN_DIR@/@TCL_LIB_FILE@')"
113
114
115
116
117
118
119

120
121
122
123
124
125
126
ROOT_DIR_NATIVE	   	= $(shell $(CYGPATH) '$(ROOT_DIR)' | sed 's!\\!/!g')
WIN_DIR_NATIVE	   	= $(shell $(CYGPATH) '$(WIN_DIR)' | sed 's!\\!/!g')
GENERIC_DIR_NATIVE 	= $(shell $(CYGPATH) '$(GENERIC_DIR)' | sed 's!\\!/!g')
BITMAP_DIR_NATIVE	= $(ROOT_DIR_NATIVE)/bitmaps
XLIB_DIR_NATIVE		= $(ROOT_DIR_NATIVE)/xlib
RC_DIR_NATIVE      	= $(WIN_DIR_NATIVE)/rc
TCL_GENERIC_NATIVE	= $(shell $(CYGPATH) '$(TCL_GENERIC_DIR)' | sed 's!\\!/!g')

TCL_SRC_DIR_NATIVE      = $(shell $(CYGPATH) '$(TCL_SRC_DIR)' | sed 's!\\!/!g')

DLLSUFFIX		= @DLLSUFFIX@
LIBSUFFIX		= @LIBSUFFIX@
EXESUFFIX		= @EXESUFFIX@

TK_STUB_LIB_FILE	= @TK_STUB_LIB_FILE@







>







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
ROOT_DIR_NATIVE	   	= $(shell $(CYGPATH) '$(ROOT_DIR)' | sed 's!\\!/!g')
WIN_DIR_NATIVE	   	= $(shell $(CYGPATH) '$(WIN_DIR)' | sed 's!\\!/!g')
GENERIC_DIR_NATIVE 	= $(shell $(CYGPATH) '$(GENERIC_DIR)' | sed 's!\\!/!g')
BITMAP_DIR_NATIVE	= $(ROOT_DIR_NATIVE)/bitmaps
XLIB_DIR_NATIVE		= $(ROOT_DIR_NATIVE)/xlib
RC_DIR_NATIVE      	= $(WIN_DIR_NATIVE)/rc
TCL_GENERIC_NATIVE	= $(shell $(CYGPATH) '$(TCL_GENERIC_DIR)' | sed 's!\\!/!g')
TCL_PLATFORM_NATIVE	= $(shell $(CYGPATH) '$(TCL_PLATFORM_DIR)' | sed 's!\\!/!g')
TCL_SRC_DIR_NATIVE      = $(shell $(CYGPATH) '$(TCL_SRC_DIR)' | sed 's!\\!/!g')

DLLSUFFIX		= @DLLSUFFIX@
LIBSUFFIX		= @LIBSUFFIX@
EXESUFFIX		= @EXESUFFIX@

TK_STUB_LIB_FILE	= @TK_STUB_LIB_FILE@
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
# required just to do a normal build although it can be required to run
# make dist.
TCL_EXE			= @TCLSH_PROG@

CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \
-I"${GENERIC_DIR_NATIVE}" -I"${WIN_DIR_NATIVE}" \
-I"${XLIB_DIR_NATIVE}" -I"${BITMAP_DIR_NATIVE}" \
 -I"${TCL_GENERIC_NATIVE}" ${AC_FLAGS}

CC_OBJNAME = @CC_OBJNAME@
CC_EXENAME = @CC_EXENAME@

STUB_CC_SWITCHES	= ${CC_SWITCHES} -DUSE_TCL_STUBS
CON_CC_SWITCHES		= ${CC_SWITCHES} -DCONSOLE








|







205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
# required just to do a normal build although it can be required to run
# make dist.
TCL_EXE			= @TCLSH_PROG@

CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \
-I"${GENERIC_DIR_NATIVE}" -I"${WIN_DIR_NATIVE}" \
-I"${XLIB_DIR_NATIVE}" -I"${BITMAP_DIR_NATIVE}" \
-I"${TCL_GENERIC_NATIVE}" -I"${TCL_PLATFORM_NATIVE}" ${AC_FLAGS}

CC_OBJNAME = @CC_OBJNAME@
CC_EXENAME = @CC_EXENAME@

STUB_CC_SWITCHES	= ${CC_SWITCHES} -DUSE_TCL_STUBS
CON_CC_SWITCHES		= ${CC_SWITCHES} -DCONSOLE

345
346
347
348
349
350
351





352
353
354
355
356
357
358

TCL_DOCS = "$(TCL_SRC_DIR_NATIVE)"/doc/*.[13n]
TK_DOCS = "$(ROOT_DIR_NATIVE)"/doc/*.[13n]
CORE_DOCS = $(TCL_DOCS) $(TK_DOCS)

DEMOPROGS = browse hello ixset rmt rolodex square tcolor timer widget






# Main targets.  The default target -- all -- builds the binaries, 
# performs any post processing on libraries or documents.

all: binaries libraries doc

binaries: @LIBRARIES@ $(WISH)








>
>
>
>
>







351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369

TCL_DOCS = "$(TCL_SRC_DIR_NATIVE)"/doc/*.[13n]
TK_DOCS = "$(ROOT_DIR_NATIVE)"/doc/*.[13n]
CORE_DOCS = $(TCL_DOCS) $(TK_DOCS)

DEMOPROGS = browse hello ixset rmt rolodex square tcolor timer widget

SHELL_ENV = \
	@TCL_LIBRARY="$(TCL_SRC_DIR_NATIVE)/library"; export TCL_LIBRARY; \
	TK_LIBRARY="$(ROOT_DIR_NATIVE)/library"; export TK_LIBRARY; \
	PATH="$(TCL_BIN_DIR):$(PATH)"; export PATH;

# Main targets.  The default target -- all -- builds the binaries, 
# performs any post processing on libraries or documents.

all: binaries libraries doc

binaries: @LIBRARIES@ $(WISH)

372
373
374
375
376
377
378


379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398

399
400
401
402
403
404
405
$(MAN2TCL): $(TCL_SRC_DIR_NATIVE)/tools/man2tcl.c
	$(CC) $(CFLAGS_OPTIMIZE) $(MAN2TCLFLAGS) -o $(MAN2TCL) "$(TCL_SRC_DIR_NATIVE)"/tools/man2tcl.c

# Specifying TESTFLAGS on the command line is the standard way to pass
# args to tcltest, ie:
#	% make test TESTFLAGS="-verbose bps -file fileName.test"



test: binaries $(TKTEST)
	@TCL_LIBRARY="$(TCL_SRC_DIR_NATIVE)/library"; export TCL_LIBRARY; \
	TK_LIBRARY="$(ROOT_DIR_NATIVE)/library"; export TK_LIBRARY; \
	PATH="$(TCL_BIN_DIR):$(PATH)"; export PATH; \
	./$(TKTEST) "$(ROOT_DIR_NATIVE)/tests/all.tcl" $(TESTFLAGS) \
	| ./$(CAT32)

runtest: binaries $(TKTEST)
	@TCL_LIBRARY="$(TCL_SRC_DIR_NATIVE)/library"; export TCL_LIBRARY; \
	TK_LIBRARY="$(ROOT_DIR_NATIVE)/library"; export TK_LIBRARY; \
	PATH="$(TCL_BIN_DIR):$(PATH)"; export PATH; \
	./$(TKTEST) $(TESTFLAGS) $(SCRIPT)

# This target can be used to run wish from the build directory
# via `make shell` or `make shell SCRIPT=foo.tcl`
shell: binaries
	@TCL_LIBRARY="$(TCL_SRC_DIR_NATIVE)/library"; export TCL_LIBRARY; \
	TK_LIBRARY="$(ROOT_DIR_NATIVE)/library"; export TK_LIBRARY; \
	PATH="$(TCL_BIN_DIR):$(PATH)"; export PATH; \
	./$(WISH) $(SCRIPT)


# This target can be used to run wish inside either gdb or insight
gdb: binaries
	@echo "set env TCL_LIBRARY=$(TCL_SRC_DIR_NATIVE)/library" > gdb.run
	@echo "set env TK_LIBRARY=$(ROOT_DIR_NATIVE)/library" >> gdb.run
	PATH="$(TCL_BIN_DIR):$(PATH)"; export PATH; \
	gdb ./$(WISH) --command=gdb.run







>
>
|
<
<
<
|
|


<
<
<
|




|
|
<
|
>







383
384
385
386
387
388
389
390
391
392



393
394
395
396



397
398
399
400
401
402
403

404
405
406
407
408
409
410
411
412
$(MAN2TCL): $(TCL_SRC_DIR_NATIVE)/tools/man2tcl.c
	$(CC) $(CFLAGS_OPTIMIZE) $(MAN2TCLFLAGS) -o $(MAN2TCL) "$(TCL_SRC_DIR_NATIVE)"/tools/man2tcl.c

# Specifying TESTFLAGS on the command line is the standard way to pass
# args to tcltest, ie:
#	% make test TESTFLAGS="-verbose bps -file fileName.test"

test: test-classic

test-classic: binaries $(TKTEST)



	$(SHELL_ENV) ./$(TKTEST) "$(ROOT_DIR_NATIVE)/tests/all.tcl" \
	$(TESTFLAGS) | ./$(CAT32)

runtest: binaries $(TKTEST)



	$(SHELL_ENV) ./$(TKTEST) $(TESTFLAGS) $(SCRIPT)

# This target can be used to run wish from the build directory
# via `make shell` or `make shell SCRIPT=foo.tcl`
shell: binaries
	$(SHELL_ENV) ./$(WISH) $(SCRIPT)


demo: $(WISH)
	$(SHELL_ENV) ./$(WISH) $(ROOT_DIR)/library/demos/widget

# This target can be used to run wish inside either gdb or insight
gdb: binaries
	@echo "set env TCL_LIBRARY=$(TCL_SRC_DIR_NATIVE)/library" > gdb.run
	@echo "set env TK_LIBRARY=$(ROOT_DIR_NATIVE)/library" >> gdb.run
	PATH="$(TCL_BIN_DIR):$(PATH)"; export PATH; \
	gdb ./$(WISH) --command=gdb.run
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
		chmod 755 $$i; \
		else true; \
		fi; \
	    done;
	@echo "Installing private header files to $(PRIVATE_INCLUDE_INSTALL_DIR)/";
	@for i in $(GENERIC_DIR)/tkInt.h $(GENERIC_DIR)/tkIntDecls.h \
		$(GENERIC_DIR)/tkIntPlatDecls.h $(GENERIC_DIR)/tkPort.h \
		$(WIN_DIR)/tkWinPort.h $(WIN_DIR)/tkWinInt.h \
		$(WIN_DIR)/tkWin.h; \
	    do \
	    $(INSTALL_DATA) $$i $(PRIVATE_INCLUDE_INSTALL_DIR); \
	    done;

$(WISH): $(TK_LIB_FILE) $(TK_STUB_LIB_FILE) $(WISH_OBJS) wish.$(RES)
	$(CC) $(CFLAGS) $(WISH_OBJS) $(TCL_LIB_FILE) $(TK_LIB_FILE) $(LIBS) \
	wish.$(RES) $(CC_EXENAME) $(LDFLAGS_WINDOW)







|
<







542
543
544
545
546
547
548
549

550
551
552
553
554
555
556
		chmod 755 $$i; \
		else true; \
		fi; \
	    done;
	@echo "Installing private header files to $(PRIVATE_INCLUDE_INSTALL_DIR)/";
	@for i in $(GENERIC_DIR)/tkInt.h $(GENERIC_DIR)/tkIntDecls.h \
		$(GENERIC_DIR)/tkIntPlatDecls.h $(GENERIC_DIR)/tkPort.h \
		$(WIN_DIR)/tkWinPort.h $(WIN_DIR)/tkWinInt.h $(WIN_DIR)/tkWin.h; \

	    do \
	    $(INSTALL_DATA) $$i $(PRIVATE_INCLUDE_INSTALL_DIR); \
	    done;

$(WISH): $(TK_LIB_FILE) $(TK_STUB_LIB_FILE) $(WISH_OBJS) wish.$(RES)
	$(CC) $(CFLAGS) $(WISH_OBJS) $(TCL_LIB_FILE) $(TK_LIB_FILE) $(LIBS) \
	wish.$(RES) $(CC_EXENAME) $(LDFLAGS_WINDOW)
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
	wish.$(RES) $(CC_EXENAME) $(LDFLAGS_WINDOW)
	@VC_MANIFEST_EMBED_EXE@

# Msys make requires this next rule for some reason.
$(TCL_SRC_DIR)/win/cat.c:

cat32.${OBJEXT}: $(TCL_SRC_DIR)/win/cat.c
	$(CC) -c $(CC_SWITCHES) @DEPARG@ $(CC_OBJNAME)

$(CAT32): cat32.${OBJEXT}
	$(CC) $(CFLAGS) cat32.$(OBJEXT) $(CC_EXENAME) $(LIBS) $(LDFLAGS_CONSOLE)

# The following targets are configured by autoconf to generate either
# a shared library or static library








|







564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
	wish.$(RES) $(CC_EXENAME) $(LDFLAGS_WINDOW)
	@VC_MANIFEST_EMBED_EXE@

# Msys make requires this next rule for some reason.
$(TCL_SRC_DIR)/win/cat.c:

cat32.${OBJEXT}: $(TCL_SRC_DIR)/win/cat.c
	$(CC) -c $(CC_SWITCHES) "$(TCL_SRC_DIR)/win/cat.c" $(CC_OBJNAME)

$(CAT32): cat32.${OBJEXT}
	$(CC) $(CFLAGS) cat32.$(OBJEXT) $(CC_EXENAME) $(LIBS) $(LDFLAGS_CONSOLE)

# The following targets are configured by autoconf to generate either
# a shared library or static library

598
599
600
601
602
603
604





605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621

tkWinTest.$(OBJEXT): tkWinTest.c
	$(CC) -c $(CC_SWITCHES) @DEPARG@ $(CC_OBJNAME)

tkSquare.$(OBJEXT): tkSquare.c
	$(CC) -c $(CC_SWITCHES) @DEPARG@ $(CC_OBJNAME)






# Add the object extension to the implicit rules.  By default .obj is not
# automatically added.

.SUFFIXES: .${OBJEXT}
.SUFFIXES: .$(RES)
.SUFFIXES: .rc

# Implicit rule for all object files that will end up in the Tcl library

.c.$(OBJEXT):
	$(CC) -c $(STUB_CC_SWITCHES) -DBUILD_tk @DEPARG@ $(CC_OBJNAME)

.rc.$(RES):
	$(RC) @RC_OUT@ $@ @RC_TYPE@ @RC_DEFINES@ @RC_INCLUDE@ "$(GENERIC_DIR_NATIVE)" @RC_INCLUDE@ "$(TCL_GENERIC_NATIVE)" @RC_INCLUDE@ "$(RC_DIR_NATIVE)" @DEPARG@

depend:








>
>
>
>
>







|

|







604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632

tkWinTest.$(OBJEXT): tkWinTest.c
	$(CC) -c $(CC_SWITCHES) @DEPARG@ $(CC_OBJNAME)

tkSquare.$(OBJEXT): tkSquare.c
	$(CC) -c $(CC_SWITCHES) @DEPARG@ $(CC_OBJNAME)

# Extra dependency info
tkConsole.$(OBJEXT): configure Makefile
tkMain.$(OBJEXT): configure Makefile
tkWindow.$(OBJEXT): configure Makefile

# Add the object extension to the implicit rules.  By default .obj is not
# automatically added.

.SUFFIXES: .${OBJEXT}
.SUFFIXES: .$(RES)
.SUFFIXES: .rc

# Implicit rule for all object files that will end up in the Tk library

%.$(OBJEXT): %.c
	$(CC) -c $(STUB_CC_SWITCHES) -DBUILD_tk @DEPARG@ $(CC_OBJNAME)

.rc.$(RES):
	$(RC) @RC_OUT@ $@ @RC_TYPE@ @RC_DEFINES@ @RC_INCLUDE@ "$(GENERIC_DIR_NATIVE)" @RC_INCLUDE@ "$(TCL_GENERIC_NATIVE)" @RC_INCLUDE@ "$(RC_DIR_NATIVE)" @DEPARG@

depend:

Changes to win/stubs.c.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "tk.h"

/*
 * Undocumented Xlib internal function
 */

int _XInitImageFuncPtrs(XImage *image)
{
    return 0;
}

/*
 * From Xutil.h
 */

void








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "tk.h"

/*
 * Undocumented Xlib internal function
 */

int _XInitImageFuncPtrs(XImage *image)
{
    return Success;
}

/*
 * From Xutil.h
 */

void
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
XCreateGlyphCursor(display, source_font, mask_font, source_char, mask_char,
	foreground_color, background_color)
    Display* display;
    Font source_font;
    Font mask_font;
    unsigned int source_char;
    unsigned int mask_char;
    XColor* foreground_color;
    XColor* background_color;
{
    return 1;
}

XIC
XCreateIC()
{







|
|







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
XCreateGlyphCursor(display, source_font, mask_font, source_char, mask_char,
	foreground_color, background_color)
    Display* display;
    Font source_font;
    Font mask_font;
    unsigned int source_char;
    unsigned int mask_char;
    XColor _Xconst* foreground_color;
    XColor _Xconst* background_color;
{
    return 1;
}

XIC
XCreateIC()
{
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187

int
XGetWindowAttributes(display, w, window_attributes_return)
    Display* display;
    Window w;
    XWindowAttributes* window_attributes_return;
{
    return 0;
}

Status
XGetWMColormapWindows(display, w, windows_return, count_return)
    Display* display;
    Window w;
    Window** windows_return;
    int* count_return;
{
    return (Status) NULL;
}

int
XIconifyWindow(display, w, screen_number)
    Display* display;
    Window w;
    int screen_number;
{
    return 0;
}

XHostAddress *
XListHosts(display, nhosts_return, state_return)
    Display* display;
    int* nhosts_return;
    Bool* state_return;
{
    return NULL;
}

int
XLookupColor(display, colormap, color_name, exact_def_return,
	screen_def_return)
    Display* display;
    Colormap colormap;
    _Xconst char* color_name;
    XColor* exact_def_return;
    XColor* screen_def_return;
{
    return 0;
}

void
XNextEvent(display, event_return)
    Display* display;
    XEvent* event_return;
{







|


















|




















|







133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187

int
XGetWindowAttributes(display, w, window_attributes_return)
    Display* display;
    Window w;
    XWindowAttributes* window_attributes_return;
{
    return Success;
}

Status
XGetWMColormapWindows(display, w, windows_return, count_return)
    Display* display;
    Window w;
    Window** windows_return;
    int* count_return;
{
    return (Status) NULL;
}

int
XIconifyWindow(display, w, screen_number)
    Display* display;
    Window w;
    int screen_number;
{
    return Success;
}

XHostAddress *
XListHosts(display, nhosts_return, state_return)
    Display* display;
    int* nhosts_return;
    Bool* state_return;
{
    return NULL;
}

int
XLookupColor(display, colormap, color_name, exact_def_return,
	screen_def_return)
    Display* display;
    Colormap colormap;
    _Xconst char* color_name;
    XColor* exact_def_return;
    XColor* screen_def_return;
{
    return Success;
}

void
XNextEvent(display, event_return)
    Display* display;
    XEvent* event_return;
{
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
    Display* display;
    Window w;
    Window* root_return;
    Window* parent_return;
    Window** children_return;
    unsigned int* nchildren_return;
{
    return 0;
}

void
XRefreshKeyboardMapping(event_map)
    XMappingEvent* event_map;
{
}







|







209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
    Display* display;
    Window w;
    Window* root_return;
    Window* parent_return;
    Window** children_return;
    unsigned int* nchildren_return;
{
    return Success;
}

void
XRefreshKeyboardMapping(event_map)
    XMappingEvent* event_map;
{
}
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258

259
260
261
262
263
264
265
XSendEvent(display, w, propagate, event_mask, event_send)
    Display* display;
    Window w;
    Bool propagate;
    long event_mask;
    XEvent* event_send;
{
    return 0;
}

void
XSetCommand(display, w, argv, argc)
    Display* display;
    Window w;
    char** argv;
    int argc;
{

}

XErrorHandler
XSetErrorHandler (handler)
    XErrorHandler handler;
{
    return NULL;







|


|






>







242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
XSendEvent(display, w, propagate, event_mask, event_send)
    Display* display;
    Window w;
    Bool propagate;
    long event_mask;
    XEvent* event_send;
{
    return Success;
}

int
XSetCommand(display, w, argv, argc)
    Display* display;
    Window w;
    char** argv;
    int argc;
{
    return Success;
}

XErrorHandler
XSetErrorHandler (handler)
    XErrorHandler handler;
{
    return NULL;
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374

int
XWithdrawWindow(display, w, screen_number)
    Display* display;
    Window w;
    int screen_number;
{
    return 0;
}

int
XmbLookupString(ic, event, buffer_return, bytes_buffer, keysym_return,
	status_return)
    XIC ic;
    XKeyPressedEvent* event;
    char* buffer_return;
    int bytes_buffer;
    KeySym* keysym_return;
    Status* status_return;
{
    return 0;
}

int
XGetWindowProperty(display, w, property, long_offset, long_length, delete,
	req_type, actual_type_return, actual_format_return, nitems_return,
	bytes_after_return, prop_return)
    Display* display;







|












|







348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375

int
XWithdrawWindow(display, w, screen_number)
    Display* display;
    Window w;
    int screen_number;
{
    return Success;
}

int
XmbLookupString(ic, event, buffer_return, bytes_buffer, keysym_return,
	status_return)
    XIC ic;
    XKeyPressedEvent* event;
    char* buffer_return;
    int bytes_buffer;
    KeySym* keysym_return;
    Status* status_return;
{
    return Success;
}

int
XGetWindowProperty(display, w, property, long_offset, long_length, delete,
	req_type, actual_type_return, actual_format_return, nitems_return,
	bytes_after_return, prop_return)
    Display* display;

Changes to win/tkWinClipboard.c.

1
2
3
4
5
6
7
8
/* 
 * tkWinClipboard.c --
 *
 *	This file contains functions for managing the clipboard.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998-2000 by Scriptics Corporation.
 *
|







1
2
3
4
5
6
7
8
/*
 * tkWinClipboard.c --
 *
 *	This file contains functions for managing the clipboard.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998-2000 by Scriptics Corporation.
 *
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 *----------------------------------------------------------------------
 *
 * TkSelGetSelection --
 *
 *	Retrieve the specified selection from another process.  For
 *	now, only fetching XA_STRING from CLIPBOARD is supported.
 *	Eventually other types should be allowed.
 * 
 * Results:
 *	The return value is a standard Tcl return value.
 *	If an error occurs (such as no selection exists)
 *	then an error message is left in the interp's result.
 *
 * Side effects:
 *	None.







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 *----------------------------------------------------------------------
 *
 * TkSelGetSelection --
 *
 *	Retrieve the specified selection from another process.  For
 *	now, only fetching XA_STRING from CLIPBOARD is supported.
 *	Eventually other types should be allowed.
 *
 * Results:
 *	The return value is a standard Tcl return value.
 *	If an error occurs (such as no selection exists)
 *	then an error message is left in the interp's result.
 *
 * Side effects:
 *	None.
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
	     * Get the locale identifier, determine the proper code page
	     * to use, and find the corresponding encoding.
	     */

	    Tcl_DStringInit(&ds);
	    Tcl_DStringAppend(&ds, "cp######", -1);
	    data = GlobalLock(handle);
	    

	    /*
	     * Even though the documentation claims that GetLocaleInfo 
	     * expects an LCID, on Windows 9x it really seems to expect
	     * a LanguageID.
	     */

	    locale = LANGIDFROMLCID(*((int*)data));
	    GetLocaleInfo(locale, LOCALE_IDEFAULTANSICODEPAGE,
		    Tcl_DStringValue(&ds)+2, Tcl_DStringLength(&ds)-2);







|
<

|







94
95
96
97
98
99
100
101

102
103
104
105
106
107
108
109
110
	     * Get the locale identifier, determine the proper code page
	     * to use, and find the corresponding encoding.
	     */

	    Tcl_DStringInit(&ds);
	    Tcl_DStringAppend(&ds, "cp######", -1);
	    data = GlobalLock(handle);


	    /*
	     * Even though the documentation claims that GetLocaleInfo
	     * expects an LCID, on Windows 9x it really seems to expect
	     * a LanguageID.
	     */

	    locale = LANGIDFROMLCID(*((int*)data));
	    GetLocaleInfo(locale, LOCALE_IDEFAULTANSICODEPAGE,
		    Tcl_DStringValue(&ds)+2, Tcl_DStringLength(&ds)-2);
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
	CloseClipboard();
	goto error;
    }

    /*
     * Translate CR/LF to LF.
     */
	
    data = destPtr = Tcl_DStringValue(&ds);
    while (*data) {
	if (data[0] == '\r' && data[1] == '\n') {
	    data++;
	} else {
	    *destPtr++ = *data++;
	}
    }
    *destPtr = '\0';

    /*
     * Pass the data off to the selection procedure.
     */

    result = (*proc)(clientData, interp, Tcl_DStringValue(&ds));
    Tcl_DStringFree(&ds);
    CloseClipboard();
    return result;
     
error:
    Tcl_AppendResult(interp, Tk_GetAtomName(tkwin, selection),
	    " selection doesn't exist or form \"",
	    Tk_GetAtomName(tkwin, target),
	    "\" not defined", (char *) NULL);
    return TCL_ERROR;
}







|


















|







139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
	CloseClipboard();
	goto error;
    }

    /*
     * Translate CR/LF to LF.
     */

    data = destPtr = Tcl_DStringValue(&ds);
    while (*data) {
	if (data[0] == '\r' && data[1] == '\n') {
	    data++;
	} else {
	    *destPtr++ = *data++;
	}
    }
    *destPtr = '\0';

    /*
     * Pass the data off to the selection procedure.
     */

    result = (*proc)(clientData, interp, Tcl_DStringValue(&ds));
    Tcl_DStringFree(&ds);
    CloseClipboard();
    return result;

error:
    Tcl_AppendResult(interp, Tk_GetAtomName(tkwin, selection),
	    " selection doesn't exist or form \"",
	    Tk_GetAtomName(tkwin, target),
	    "\" not defined", (char *) NULL);
    return TCL_ERROR;
}
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
 *
 * Side effects:
 *	Empties the system clipboard, and claims ownership.
 *
 *----------------------------------------------------------------------
 */

void
XSetSelectionOwner(display, selection, owner, time)
    Display* display;
    Atom selection;
    Window owner;
    Time time;
{
    HWND hwnd = owner ? TkWinGetHWND(owner) : NULL;







|







185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
 *
 * Side effects:
 *	Empties the system clipboard, and claims ownership.
 *
 *----------------------------------------------------------------------
 */

int
XSetSelectionOwner(display, selection, owner, time)
    Display* display;
    Atom selection;
    Window owner;
    Time time;
{
    HWND hwnd = owner ? TkWinGetHWND(owner) : NULL;
214
215
216
217
218
219
220

221
222
223
224
225
226
227
	 * owner of the clipboard.
	 */

	if (GetClipboardOwner() != hwnd) {
	    UpdateClipboard(hwnd);
	}
    }

}

/*
 *----------------------------------------------------------------------
 *
 * TkWinClipboardRender --
 *







>







213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
	 * owner of the clipboard.
	 */

	if (GetClipboardOwner() != hwnd) {
	    UpdateClipboard(hwnd);
	}
    }
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * TkWinClipboardRender --
 *
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413

/*
 *--------------------------------------------------------------
 *
 * TkSelEventProc --
 *
 *	This procedure is invoked whenever a selection-related
 *	event occurs. 
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Lots:  depends on the type of event.
 *







|







399
400
401
402
403
404
405
406
407
408
409
410
411
412
413

/*
 *--------------------------------------------------------------
 *
 * TkSelEventProc --
 *
 *	This procedure is invoked whenever a selection-related
 *	event occurs.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Lots:  depends on the type of event.
 *

Changes to win/tkWinColor.c.

1
2
3
4
5
6
7
8
/* 
 * tkWinColor.c --
 *
 *	Functions to map color names to system color values.
 *
 * Copyright (c) 1995 Sun Microsystems, Inc.
 * Copyright (c) 1994 Software Research Associates, Inc.
 *
|







1
2
3
4
5
6
7
8
/*
 * tkWinColor.c --
 *
 *	Functions to map color names to system color values.
 *
 * Copyright (c) 1995 Sun Microsystems, Inc.
 * Copyright (c) 1994 Software Research Associates, Inc.
 *
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
    {"Scrollbar",		COLOR_SCROLLBAR},
    {"Window",			COLOR_WINDOW},
    {"WindowFrame",		COLOR_WINDOWFRAME},
    {"WindowText",		COLOR_WINDOWTEXT},
    {NULL,			0}
};

typedef struct ThreadSpecificData { 
    int ncolors;
} ThreadSpecificData;
static Tcl_ThreadDataKey dataKey;

/*
 * Forward declarations for functions defined later in this file.
 */







|







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
    {"Scrollbar",		COLOR_SCROLLBAR},
    {"Window",			COLOR_WINDOW},
    {"WindowFrame",		COLOR_WINDOWFRAME},
    {"WindowText",		COLOR_WINDOWTEXT},
    {NULL,			0}
};

typedef struct ThreadSpecificData {
    int ncolors;
} ThreadSpecificData;
static Tcl_ThreadDataKey dataKey;

/*
 * Forward declarations for functions defined later in this file.
 */
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
static int
FindSystemColor(name, colorPtr, indexPtr)
    const char *name;		/* Color name. */
    XColor *colorPtr;		/* Where to store results. */
    int *indexPtr;		/* Out parameter to store color index. */
{
    int l, u, r, i;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    /*
     * Count the number of elements in the color array if we haven't
     * done so yet.
     */








|







100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
static int
FindSystemColor(name, colorPtr, indexPtr)
    const char *name;		/* Color name. */
    XColor *colorPtr;		/* Where to store results. */
    int *indexPtr;		/* Out parameter to store color index. */
{
    int l, u, r, i;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    /*
     * Count the number of elements in the color array if we haven't
     * done so yet.
     */

205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
		    &color)) {
	winColPtr = (WinColor *) ckalloc(sizeof(WinColor));
	winColPtr->info.color = color;
	winColPtr->index = index;

	XAllocColor(Tk_Display(tkwin), Tk_Colormap(tkwin),
		&winColPtr->info.color);
 	return (TkColor *) winColPtr; 
    }
    return (TkColor *) NULL;
}

/*
 *----------------------------------------------------------------------
 *







|







205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
		    &color)) {
	winColPtr = (WinColor *) ckalloc(sizeof(WinColor));
	winColPtr->info.color = color;
	winColPtr->index = index;

	XAllocColor(Tk_Display(tkwin), Tk_Colormap(tkwin),
		&winColPtr->info.color);
 	return (TkColor *) winColPtr;
    }
    return (TkColor *) NULL;
}

/*
 *----------------------------------------------------------------------
 *
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
int
TkWinIndexOfColor(colorPtr)
    XColor *colorPtr;
{
    register WinColor *winColPtr = (WinColor *) colorPtr;
    if (winColPtr->info.magic == COLOR_MAGIC) {
	return winColPtr->index;
    }    
    return -1;
}

/*
 *----------------------------------------------------------------------
 *
 * XAllocColor --







|







304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
int
TkWinIndexOfColor(colorPtr)
    XColor *colorPtr;
{
    register WinColor *winColPtr = (WinColor *) colorPtr;
    if (winColPtr->info.magic == COLOR_MAGIC) {
	return winColPtr->index;
    }
    return -1;
}

/*
 *----------------------------------------------------------------------
 *
 * XAllocColor --
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
	int new, refCount;
	Tcl_HashEntry *entryPtr;
	UINT index;

	/*
	 * Find the nearest existing palette entry.
	 */
	
	newPixel = RGB(entry.peRed, entry.peGreen, entry.peBlue);
	index = GetNearestPaletteIndex(cmap->palette, newPixel);
	GetPaletteEntries(cmap->palette, index, 1, &closeEntry);
	closePixel = RGB(closeEntry.peRed, closeEntry.peGreen,
		closeEntry.peBlue);

	/*
	 * If this is not a duplicate, allocate a new entry.  Note that
	 * we may get values for index that are above the current size
	 * of the palette.  This happens because we don't shrink the size of
	 * the palette object when we deallocate colors so there may be
	 * stale values that match in the upper slots.  We should ignore
	 * those values and just put the new color in as if the colors
	 * had not matched.
	 */
	
	if ((index >= cmap->size) || (newPixel != closePixel)) {
	    if (cmap->size == sizePalette) {
		color->red   = closeEntry.peRed * 257;
		color->green = closeEntry.peGreen * 257;
		color->blue  = closeEntry.peBlue * 257;
		entry = closeEntry;
		if (index >= cmap->size) {







|















|







350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
	int new, refCount;
	Tcl_HashEntry *entryPtr;
	UINT index;

	/*
	 * Find the nearest existing palette entry.
	 */

	newPixel = RGB(entry.peRed, entry.peGreen, entry.peBlue);
	index = GetNearestPaletteIndex(cmap->palette, newPixel);
	GetPaletteEntries(cmap->palette, index, 1, &closeEntry);
	closePixel = RGB(closeEntry.peRed, closeEntry.peGreen,
		closeEntry.peBlue);

	/*
	 * If this is not a duplicate, allocate a new entry.  Note that
	 * we may get values for index that are above the current size
	 * of the palette.  This happens because we don't shrink the size of
	 * the palette object when we deallocate colors so there may be
	 * stale values that match in the upper slots.  We should ignore
	 * those values and just put the new color in as if the colors
	 * had not matched.
	 */

	if ((index >= cmap->size) || (newPixel != closePixel)) {
	    if (cmap->size == sizePalette) {
		color->red   = closeEntry.peRed * 257;
		color->green = closeEntry.peGreen * 257;
		color->blue  = closeEntry.peBlue * 257;
		entry = closeEntry;
		if (index >= cmap->size) {
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
	if (new) {
	    refCount = 1;
	} else {
	    refCount = ((int) Tcl_GetHashValue(entryPtr)) + 1;
	}
	Tcl_SetHashValue(entryPtr, (ClientData)refCount);
    } else {
	
	/*
	 * Determine what color will actually be used on non-colormap systems.
	 */
	
	color->pixel = GetNearestColor(dc,
		RGB(entry.peRed, entry.peGreen, entry.peBlue));
	color->red    = GetRValue(color->pixel) * 257;
	color->green  = GetGValue(color->pixel) * 257;
	color->blue   = GetBValue(color->pixel) * 257;
    }








|



|







393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
	if (new) {
	    refCount = 1;
	} else {
	    refCount = ((int) Tcl_GetHashValue(entryPtr)) + 1;
	}
	Tcl_SetHashValue(entryPtr, (ClientData)refCount);
    } else {

	/*
	 * Determine what color will actually be used on non-colormap systems.
	 */

	color->pixel = GetNearestColor(dc,
		RGB(entry.peRed, entry.peGreen, entry.peBlue));
	color->red    = GetRValue(color->pixel) * 257;
	color->green  = GetGValue(color->pixel) * 257;
	color->blue   = GetBValue(color->pixel) * 257;
    }

426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
 * Side effects:
 *	Removes entries for the current palette and compacts the
 *	remaining set.
 *
 *----------------------------------------------------------------------
 */

void
XFreeColors(display, colormap, pixels, npixels, planes)
    Display* display;
    Colormap colormap;
    unsigned long* pixels;
    int npixels;
    unsigned long planes;
{
    TkWinColormap *cmap = (TkWinColormap *) colormap;
    COLORREF cref;
    UINT count, index, refCount;
    int i;
    PALETTEENTRY entry, *entries;
    Tcl_HashEntry *entryPtr;
    HDC dc = GetDC(NULL);

    /*
     * We don't have to do anything for non-palette devices.
     */
    
    if (GetDeviceCaps(dc, RASTERCAPS) & RC_PALETTE) {

	/*
	 * This is really slow for large values of npixels.
	 */

	for (i = 0; i < npixels; i++) {







|


















|







426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
 * Side effects:
 *	Removes entries for the current palette and compacts the
 *	remaining set.
 *
 *----------------------------------------------------------------------
 */

int
XFreeColors(display, colormap, pixels, npixels, planes)
    Display* display;
    Colormap colormap;
    unsigned long* pixels;
    int npixels;
    unsigned long planes;
{
    TkWinColormap *cmap = (TkWinColormap *) colormap;
    COLORREF cref;
    UINT count, index, refCount;
    int i;
    PALETTEENTRY entry, *entries;
    Tcl_HashEntry *entryPtr;
    HDC dc = GetDC(NULL);

    /*
     * We don't have to do anything for non-palette devices.
     */

    if (GetDeviceCaps(dc, RASTERCAPS) & RC_PALETTE) {

	/*
	 * This is really slow for large values of npixels.
	 */

	for (i = 0; i < npixels; i++) {
481
482
483
484
485
486
487

488
489
490
491
492
493
494
		Tcl_DeleteHashEntry(entryPtr);
	    } else {
		Tcl_SetHashValue(entryPtr, (ClientData)refCount);
	    }
	}
    }
    ReleaseDC(NULL, dc);

}

/*
 *----------------------------------------------------------------------
 *
 * XCreateColormap --
 *







>







481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
		Tcl_DeleteHashEntry(entryPtr);
	    } else {
		Tcl_SetHashValue(entryPtr, (ClientData)refCount);
	    }
	}
    }
    ReleaseDC(NULL, dc);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * XCreateColormap --
 *
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580

581
582
583
584
585
586
587
 *	Deletes the palette associated with the colormap.  Note that
 *	the palette must not be selected into a device context when
 *	this occurs.
 *
 *----------------------------------------------------------------------
 */

void
XFreeColormap(display, colormap)
    Display* display;
    Colormap colormap;
{
    TkWinColormap *cmap = (TkWinColormap *) colormap;
    if (!DeleteObject(cmap->palette)) {
	panic("Unable to free colormap, palette is still selected.");
    }
    Tcl_DeleteHashTable(&cmap->refCounts);
    ckfree((char *) cmap);

}

/*
 *----------------------------------------------------------------------
 *
 * TkWinSelectPalette --
 *







|










>







564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
 *	Deletes the palette associated with the colormap.  Note that
 *	the palette must not be selected into a device context when
 *	this occurs.
 *
 *----------------------------------------------------------------------
 */

int
XFreeColormap(display, colormap)
    Display* display;
    Colormap colormap;
{
    TkWinColormap *cmap = (TkWinColormap *) colormap;
    if (!DeleteObject(cmap->palette)) {
	panic("Unable to free colormap, palette is still selected.");
    }
    Tcl_DeleteHashTable(&cmap->refCounts);
    ckfree((char *) cmap);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * TkWinSelectPalette --
 *

Changes to win/tkWinDraw.c.

1
2
3
4
5
6
7
8
/* 
 * tkWinDraw.c --
 *
 *	This file contains the Xlib emulation functions pertaining to
 *	actually drawing objects on a window.
 *
 * Copyright (c) 1995 Sun Microsystems, Inc.
 * Copyright (c) 1994 Software Research Associates, Inc.
|







1
2
3
4
5
6
7
8
/*
 * tkWinDraw.c --
 *
 *	This file contains the Xlib emulation functions pertaining to
 *	actually drawing objects on a window.
 *
 * Copyright (c) 1995 Sun Microsystems, Inc.
 * Copyright (c) 1994 Software Research Associates, Inc.
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
{
    HDC dc;
    TkWinDrawable *twdPtr = (TkWinDrawable *)d;
    Colormap cmap;

    if (twdPtr->type == TWD_WINDOW) {
	TkWindow *winPtr = twdPtr->window.winPtr;
    
 	dc = GetDC(twdPtr->window.handle);
	if (winPtr == NULL) {
	    cmap = DefaultColormap(display, DefaultScreen(display));
	} else {
	    cmap = winPtr->atts.colormap;
	}
    } else if (twdPtr->type == TWD_WINDC) {







|







152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
{
    HDC dc;
    TkWinDrawable *twdPtr = (TkWinDrawable *)d;
    Colormap cmap;

    if (twdPtr->type == TWD_WINDOW) {
	TkWindow *winPtr = twdPtr->window.winPtr;

 	dc = GetDC(twdPtr->window.handle);
	if (winPtr == NULL) {
	    cmap = DefaultColormap(display, DefaultScreen(display));
	} else {
	    cmap = winPtr->atts.colormap;
	}
    } else if (twdPtr->type == TWD_WINDC) {
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
 *
 *	Convert an array of X points to an array of Win32 points.
 *
 * Results:
 *	Returns the converted array of POINTs.
 *
 * Side effects:
 *	Allocates a block of memory in thread local storage that 
 *      should not be freed.
 *
 *----------------------------------------------------------------------
 */

static POINT *
ConvertPoints(points, npoints, mode, bbox)
    XPoint *points;
    int npoints;
    int mode;			/* CoordModeOrigin or CoordModePrevious. */
    RECT *bbox;			/* Bounding box of points. */
{
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
    int i;

    /*
     * To avoid paying the cost of a malloc on every drawing routine,
     * we reuse the last array if it is large enough.
     */







|












|







216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
 *
 *	Convert an array of X points to an array of Win32 points.
 *
 * Results:
 *	Returns the converted array of POINTs.
 *
 * Side effects:
 *	Allocates a block of memory in thread local storage that
 *      should not be freed.
 *
 *----------------------------------------------------------------------
 */

static POINT *
ConvertPoints(points, npoints, mode, bbox)
    XPoint *points;
    int npoints;
    int mode;			/* CoordModeOrigin or CoordModePrevious. */
    RECT *bbox;			/* Bounding box of points. */
{
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
    int i;

    /*
     * To avoid paying the cost of a malloc on every drawing routine,
     * we reuse the last array if it is large enough.
     */
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
	    return NULL;
	}
	tsdPtr->nWinPoints = npoints;
    }

    bbox->left = bbox->right = points[0].x;
    bbox->top = bbox->bottom = points[0].y;
    
    if (mode == CoordModeOrigin) {
	for (i = 0; i < npoints; i++) {
	    tsdPtr->winPoints[i].x = points[i].x;
	    tsdPtr->winPoints[i].y = points[i].y;
	    bbox->left = MIN(bbox->left, tsdPtr->winPoints[i].x);
	    bbox->right = MAX(bbox->right, tsdPtr->winPoints[i].x);
	    bbox->top = MIN(bbox->top, tsdPtr->winPoints[i].y);







|







252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
	    return NULL;
	}
	tsdPtr->nWinPoints = npoints;
    }

    bbox->left = bbox->right = points[0].x;
    bbox->top = bbox->bottom = points[0].y;

    if (mode == CoordModeOrigin) {
	for (i = 0; i < npoints; i++) {
	    tsdPtr->winPoints[i].x = points[i].x;
	    tsdPtr->winPoints[i].y = points[i].y;
	    bbox->left = MIN(bbox->left, tsdPtr->winPoints[i].x);
	    bbox->right = MAX(bbox->right, tsdPtr->winPoints[i].x);
	    bbox->top = MIN(bbox->top, tsdPtr->winPoints[i].y);
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
 *
 * Side effects:
 *	Draws the image on the specified drawable.
 *
 *----------------------------------------------------------------------
 */

void
TkPutImage(colors, ncolors, display, d, gc, image, src_x, src_y, dest_x,
	dest_y, width, height)
    unsigned long *colors;		/* Array of pixel values used by this
					 * image.  May be NULL. */
    int ncolors;			/* Number of colors used, or 0. */
    Display* display;
    Drawable d;				/* Destination drawable. */
    GC gc;
    XImage* image;			/* Source image. */
    int src_x, src_y;			/* Offset of subimage. */      
    int dest_x, dest_y;			/* Position of subimage origin in
					 * drawable.  */
    unsigned int width, height;		/* Dimensions of subimage. */
{
    HDC dc, dcMem;
    TkWinDCState state;
    BITMAPINFO *infoPtr;







|









|







501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
 *
 * Side effects:
 *	Draws the image on the specified drawable.
 *
 *----------------------------------------------------------------------
 */

int
TkPutImage(colors, ncolors, display, d, gc, image, src_x, src_y, dest_x,
	dest_y, width, height)
    unsigned long *colors;		/* Array of pixel values used by this
					 * image.  May be NULL. */
    int ncolors;			/* Number of colors used, or 0. */
    Display* display;
    Drawable d;				/* Destination drawable. */
    GC gc;
    XImage* image;			/* Source image. */
    int src_x, src_y;			/* Offset of subimage. */
    int dest_x, dest_y;			/* Position of subimage origin in
					 * drawable.  */
    unsigned int width, height;		/* Dimensions of subimage. */
{
    HDC dc, dcMem;
    TkWinDCState state;
    BITMAPINFO *infoPtr;
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
	    ckfree(data);
	} else {
	    bitmap = CreateBitmap(image->width, image->height, 1, 1,
		    image->data);
	}
	SetTextColor(dc, gc->foreground);
	SetBkColor(dc, gc->background);
    } else {    
	int i, usePalette;

	/*
	 * Do not use a palette for TrueColor images.
	 */
	
	usePalette = (image->bits_per_pixel < 16);
	
	if (usePalette) {
	    infoPtr = (BITMAPINFO*) ckalloc(sizeof(BITMAPINFOHEADER)
		    + sizeof(RGBQUAD)*ncolors);
	} else {
	    infoPtr = (BITMAPINFO*) ckalloc(sizeof(BITMAPINFOHEADER));
	}
	
	infoPtr->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
	infoPtr->bmiHeader.biWidth = image->width;
	infoPtr->bmiHeader.biHeight = -image->height; /* Top-down order */
	infoPtr->bmiHeader.biPlanes = 1;
	infoPtr->bmiHeader.biBitCount = image->bits_per_pixel;
	infoPtr->bmiHeader.biCompression = BI_RGB;
	infoPtr->bmiHeader.biSizeImage = 0;







|





|

|






|







545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
	    ckfree(data);
	} else {
	    bitmap = CreateBitmap(image->width, image->height, 1, 1,
		    image->data);
	}
	SetTextColor(dc, gc->foreground);
	SetBkColor(dc, gc->background);
    } else {
	int i, usePalette;

	/*
	 * Do not use a palette for TrueColor images.
	 */

	usePalette = (image->bits_per_pixel < 16);

	if (usePalette) {
	    infoPtr = (BITMAPINFO*) ckalloc(sizeof(BITMAPINFOHEADER)
		    + sizeof(RGBQUAD)*ncolors);
	} else {
	    infoPtr = (BITMAPINFO*) ckalloc(sizeof(BITMAPINFOHEADER));
	}

	infoPtr->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
	infoPtr->bmiHeader.biWidth = image->width;
	infoPtr->bmiHeader.biHeight = -image->height; /* Top-down order */
	infoPtr->bmiHeader.biPlanes = 1;
	infoPtr->bmiHeader.biBitCount = image->bits_per_pixel;
	infoPtr->bmiHeader.biCompression = BI_RGB;
	infoPtr->bmiHeader.biSizeImage = 0;
591
592
593
594
595
596
597
598
599
600
601
602
603
604

605
606
607
608
609
610
611
		image->data, infoPtr, DIB_RGB_COLORS);
	ckfree((char *) infoPtr);
    }
    if(!bitmap) {
	panic("Fail to allocate bitmap\n");
	DeleteDC(dcMem);
    	TkWinReleaseDrawableDC(d, dc, &state);
	return;
    }
    bitmap = SelectObject(dcMem, bitmap);
    BitBlt(dc, dest_x, dest_y, width, height, dcMem, src_x, src_y, SRCCOPY);
    DeleteObject(SelectObject(dcMem, bitmap));
    DeleteDC(dcMem);
    TkWinReleaseDrawableDC(d, dc, &state);

}

/*
 *----------------------------------------------------------------------
 *
 * XFillRectangles --
 *







|






>







591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
		image->data, infoPtr, DIB_RGB_COLORS);
	ckfree((char *) infoPtr);
    }
    if(!bitmap) {
	panic("Fail to allocate bitmap\n");
	DeleteDC(dcMem);
    	TkWinReleaseDrawableDC(d, dc, &state);
	return BadValue;
    }
    bitmap = SelectObject(dcMem, bitmap);
    BitBlt(dc, dest_x, dest_y, width, height, dcMem, src_x, src_y, SRCCOPY);
    DeleteObject(SelectObject(dcMem, bitmap));
    DeleteDC(dcMem);
    TkWinReleaseDrawableDC(d, dc, &state);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * XFillRectangles --
 *
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
    HDC dc;
    int i;
    RECT rect;
    TkWinDCState state;
    HBRUSH brush, oldBrush;

    if (d == None) {
	return 0;
    }

    dc = TkWinGetDrawableDC(display, d, &state);
    SetROP2(dc, tkpWinRopModes[gc->function]);
    brush = CreateSolidBrush(gc->foreground);

    if ((gc->fill_style == FillStippled







|







632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
    HDC dc;
    int i;
    RECT rect;
    TkWinDCState state;
    HBRUSH brush, oldBrush;

    if (d == None) {
	return BadDrawable;
    }

    dc = TkWinGetDrawableDC(display, d, &state);
    SetROP2(dc, tkpWinRopModes[gc->function]);
    brush = CreateSolidBrush(gc->foreground);

    if ((gc->fill_style == FillStippled
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
	if (twdPtr->type != TWD_BITMAP) {
	    panic("unexpected drawable type in stipple");
	}

	/*
	 * Select stipple pattern into destination dc.
	 */
	
	stipple = CreatePatternBrush(twdPtr->bitmap.handle);
	SetBrushOrgEx(dc, gc->ts_x_origin, gc->ts_y_origin, NULL);
	oldBrush = SelectObject(dc, stipple);
	dcMem = CreateCompatibleDC(dc);

	/*
	 * For each rectangle, create a drawing surface which is the size of







|







655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
	if (twdPtr->type != TWD_BITMAP) {
	    panic("unexpected drawable type in stipple");
	}

	/*
	 * Select stipple pattern into destination dc.
	 */

	stipple = CreatePatternBrush(twdPtr->bitmap.handle);
	SetBrushOrgEx(dc, gc->ts_x_origin, gc->ts_y_origin, NULL);
	oldBrush = SelectObject(dc, stipple);
	dcMem = CreateCompatibleDC(dc);

	/*
	 * For each rectangle, create a drawing surface which is the size of
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
		BitBlt(dc, rectangles[i].x, rectangles[i].y,
			rectangles[i].width, rectangles[i].height, dcMem,
			0, 0, COPYBG);
	    }
	    SelectObject(dcMem, oldBitmap);
	    DeleteObject(bitmap);
	}
	
	DeleteDC(dcMem);
	SelectObject(dc, oldBrush);
	DeleteObject(stipple);
	DeleteObject(bgBrush);
    } else {
	if (gc->function == GXcopy) {
	    for (i = 0; i < nrectangles; i++) {
		rect.left = rectangles[i].x;
		rect.right = rect.left + rectangles[i].width;
		rect.top = rectangles[i].y;
		rect.bottom = rect.top + rectangles[i].height;
		FillRect(dc, &rect, brush);
	    }
	} else {
	    HPEN newPen = CreatePen(PS_NULL, 0, gc->foreground);
	    HPEN oldPen = SelectObject(dc, newPen);
	    oldBrush = SelectObject(dc, brush);
	    
	    for (i = 0; i < nrectangles; i++) {
		Rectangle(dc, rectangles[i].x, rectangles[i].y,
		    rectangles[i].x + rectangles[i].width + 1,
		    rectangles[i].y + rectangles[i].height + 1);
	    }

	    SelectObject(dc, oldBrush);
	    SelectObject(dc, oldPen);
	    DeleteObject(newPen);
	}
    }
    DeleteObject(brush);
    TkWinReleaseDrawableDC(d, dc, &state);
    return 1;
}

/*
 *----------------------------------------------------------------------
 *
 * RenderObject --
 *







|

















|













|







687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
		BitBlt(dc, rectangles[i].x, rectangles[i].y,
			rectangles[i].width, rectangles[i].height, dcMem,
			0, 0, COPYBG);
	    }
	    SelectObject(dcMem, oldBitmap);
	    DeleteObject(bitmap);
	}

	DeleteDC(dcMem);
	SelectObject(dc, oldBrush);
	DeleteObject(stipple);
	DeleteObject(bgBrush);
    } else {
	if (gc->function == GXcopy) {
	    for (i = 0; i < nrectangles; i++) {
		rect.left = rectangles[i].x;
		rect.right = rect.left + rectangles[i].width;
		rect.top = rectangles[i].y;
		rect.bottom = rect.top + rectangles[i].height;
		FillRect(dc, &rect, brush);
	    }
	} else {
	    HPEN newPen = CreatePen(PS_NULL, 0, gc->foreground);
	    HPEN oldPen = SelectObject(dc, newPen);
	    oldBrush = SelectObject(dc, brush);

	    for (i = 0; i < nrectangles; i++) {
		Rectangle(dc, rectangles[i].x, rectangles[i].y,
		    rectangles[i].x + rectangles[i].width + 1,
		    rectangles[i].y + rectangles[i].height + 1);
	    }

	    SelectObject(dc, oldBrush);
	    SelectObject(dc, oldPen);
	    DeleteObject(newPen);
	}
    }
    DeleteObject(brush);
    TkWinReleaseDrawableDC(d, dc, &state);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * RenderObject --
 *
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
    HPEN pen;
    WinDrawFunc func;
{
    RECT rect = {0, 0, 0, 0};
    HPEN oldPen;
    HBRUSH oldBrush;
    POINT *winPoints = ConvertPoints(points, npoints, mode, &rect);
    
    if ((gc->fill_style == FillStippled
	    || gc->fill_style == FillOpaqueStippled)
	    && gc->stipple != None) {

	TkWinDrawable *twdPtr = (TkWinDrawable *)gc->stipple;
	HDC dcMem;
	LONG width, height;
	HBITMAP oldBitmap;
	int i;
	HBRUSH oldMemBrush;
	
	if (twdPtr->type != TWD_BITMAP) {
	    panic("unexpected drawable type in stipple");
	}

	/*
	 * Grow the bounding box enough to account for line width.
	 */

	rect.left -= gc->line_width;
	rect.top -= gc->line_width;
	rect.right += gc->line_width;
	rect.bottom += gc->line_width;

	width = rect.right - rect.left;
	height = rect.bottom - rect.top;

	/*
	 * Select stipple pattern into destination dc.
	 */
	
	SetBrushOrgEx(dc, gc->ts_x_origin, gc->ts_y_origin, NULL);
	oldBrush = SelectObject(dc, CreatePatternBrush(twdPtr->bitmap.handle));

	/*
	 * Create temporary drawing surface containing a copy of the
	 * destination equal in size to the bounding box of the object.
	 */
	
	dcMem = CreateCompatibleDC(dc);
	oldBitmap = SelectObject(dcMem, CreateCompatibleBitmap(dc, width,
		height));
	oldPen = SelectObject(dcMem, pen);
	BitBlt(dcMem, 0, 0, width, height, dc, rect.left, rect.top, SRCCOPY);

	/*
	 * Translate the object for rendering in the temporary drawing
	 * surface. 
	 */

	for (i = 0; i < npoints; i++) {
	    winPoints[i].x -= rect.left;
	    winPoints[i].y -= rect.top;
	}








|










|



















|







|








|







753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
    HPEN pen;
    WinDrawFunc func;
{
    RECT rect = {0, 0, 0, 0};
    HPEN oldPen;
    HBRUSH oldBrush;
    POINT *winPoints = ConvertPoints(points, npoints, mode, &rect);

    if ((gc->fill_style == FillStippled
	    || gc->fill_style == FillOpaqueStippled)
	    && gc->stipple != None) {

	TkWinDrawable *twdPtr = (TkWinDrawable *)gc->stipple;
	HDC dcMem;
	LONG width, height;
	HBITMAP oldBitmap;
	int i;
	HBRUSH oldMemBrush;

	if (twdPtr->type != TWD_BITMAP) {
	    panic("unexpected drawable type in stipple");
	}

	/*
	 * Grow the bounding box enough to account for line width.
	 */

	rect.left -= gc->line_width;
	rect.top -= gc->line_width;
	rect.right += gc->line_width;
	rect.bottom += gc->line_width;

	width = rect.right - rect.left;
	height = rect.bottom - rect.top;

	/*
	 * Select stipple pattern into destination dc.
	 */

	SetBrushOrgEx(dc, gc->ts_x_origin, gc->ts_y_origin, NULL);
	oldBrush = SelectObject(dc, CreatePatternBrush(twdPtr->bitmap.handle));

	/*
	 * Create temporary drawing surface containing a copy of the
	 * destination equal in size to the bounding box of the object.
	 */

	dcMem = CreateCompatibleDC(dc);
	oldBitmap = SelectObject(dcMem, CreateCompatibleBitmap(dc, width,
		height));
	oldPen = SelectObject(dcMem, pen);
	BitBlt(dcMem, 0, 0, width, height, dc, rect.left, rect.top, SRCCOPY);

	/*
	 * Translate the object for rendering in the temporary drawing
	 * surface.
	 */

	for (i = 0; i < npoints; i++) {
	    winPoints[i].x -= rect.left;
	    winPoints[i].y -= rect.top;
	}

880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
    XPoint* points;
    int npoints;
    int mode;
{
    HPEN pen;
    TkWinDCState state;
    HDC dc;
    
    if (d == None) {
	return 0;
    }

    dc = TkWinGetDrawableDC(display, d, &state);

    pen = SetUpGraphicsPort(gc);
    SetBkMode(dc, TRANSPARENT);
    RenderObject(dc, gc, points, npoints, mode, pen, Polyline);
    DeleteObject(pen);
    
    TkWinReleaseDrawableDC(d, dc, &state);
    return 1;
}

/*
 *----------------------------------------------------------------------
 *
 * XFillPolygon --
 *







|

|








|

|







881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
    XPoint* points;
    int npoints;
    int mode;
{
    HPEN pen;
    TkWinDCState state;
    HDC dc;

    if (d == None) {
	return BadDrawable;
    }

    dc = TkWinGetDrawableDC(display, d, &state);

    pen = SetUpGraphicsPort(gc);
    SetBkMode(dc, TRANSPARENT);
    RenderObject(dc, gc, points, npoints, mode, pen, Polyline);
    DeleteObject(pen);

    TkWinReleaseDrawableDC(d, dc, &state);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * XFillPolygon --
 *
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
	lb.lbColor = gc->foreground;
	lb.lbHatch = 0;

	style |= PS_GEOMETRIC;
	switch (gc->cap_style) {
	    case CapNotLast:
	    case CapButt:
		style |= PS_ENDCAP_FLAT; 
		break;
	    case CapRound:
		style |= PS_ENDCAP_ROUND; 
		break;
	    default:
		style |= PS_ENDCAP_SQUARE; 
		break;
	}
	switch (gc->join_style) {
	    case JoinMiter: 
		style |= PS_JOIN_MITER; 
		break;
	    case JoinRound:
		style |= PS_JOIN_ROUND; 
		break;
	    default:
		style |= PS_JOIN_BEVEL; 
		break;
	}
	return ExtCreatePen(style, gc->line_width, &lb, 0, NULL);
    }
}

/*







|


|


|



|
|


|


|







1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
	lb.lbColor = gc->foreground;
	lb.lbHatch = 0;

	style |= PS_GEOMETRIC;
	switch (gc->cap_style) {
	    case CapNotLast:
	    case CapButt:
		style |= PS_ENDCAP_FLAT;
		break;
	    case CapRound:
		style |= PS_ENDCAP_ROUND;
		break;
	    default:
		style |= PS_ENDCAP_SQUARE;
		break;
	}
	switch (gc->join_style) {
	    case JoinMiter:
		style |= PS_JOIN_MITER;
		break;
	    case JoinRound:
		style |= PS_JOIN_ROUND;
		break;
	    default:
		style |= PS_JOIN_BEVEL;
		break;
	}
	return ExtCreatePen(style, gc->line_width, &lb, 0, NULL);
    }
}

/*
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
 * Side effects:
 *	A rectangle "width" pixels wide is drawn in "drawable",
 *	corresponding to the outer area of "tkwin".
 *
 *----------------------------------------------------------------------
 */

void 
TkpDrawHighlightBorder(tkwin, fgGC, bgGC, highlightWidth, drawable)
    Tk_Window tkwin;
    GC fgGC;
    GC bgGC;
    int highlightWidth;
    Drawable drawable;
{







|







1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
 * Side effects:
 *	A rectangle "width" pixels wide is drawn in "drawable",
 *	corresponding to the outer area of "tkwin".
 *
 *----------------------------------------------------------------------
 */

void
TkpDrawHighlightBorder(tkwin, fgGC, bgGC, highlightWidth, drawable)
    Tk_Window tkwin;
    GC fgGC;
    GC bgGC;
    int highlightWidth;
    Drawable drawable;
{

Changes to win/tkWinKey.c.

90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
    if (eventPtr->xkey.send_event == -1) {
        if (eventPtr->xkey.nbytes > 0) {
	    Tcl_ExternalToUtfDString(TkWinGetKeyInputEncoding(),
                    eventPtr->xkey.trans_chars, eventPtr->xkey.nbytes, dsPtr);
        }
    } else if (eventPtr->xkey.send_event == -2) {
        /*
         * Special case for win2000 multi-lingal IME input. 
         * xkey.trans_chars[] already contains a UNICODE char.
         */

        int unichar;
        char buf[TCL_UTF_MAX];
        int len;








|







90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
    if (eventPtr->xkey.send_event == -1) {
        if (eventPtr->xkey.nbytes > 0) {
	    Tcl_ExternalToUtfDString(TkWinGetKeyInputEncoding(),
                    eventPtr->xkey.trans_chars, eventPtr->xkey.nbytes, dsPtr);
        }
    } else if (eventPtr->xkey.send_event == -2) {
        /*
         * Special case for win2000 multi-lingal IME input.
         * xkey.trans_chars[] already contains a UNICODE char.
         */

        int unichar;
        char buf[TCL_UTF_MAX];
        int len;

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
	 * xkey.trans_chars[] already contains a UTF-8 char.
	 */
	Tcl_DStringAppend(dsPtr, eventPtr->xkey.trans_chars,
		eventPtr->xkey.nbytes);
    } else  {
	/*
	 * This is an event generated from generic code.  It has no
	 * nchars or trans_chars members. 
	 */

	keysym = KeycodeToKeysym(eventPtr->xkey.keycode,
		eventPtr->xkey.state, 0);
	if (((keysym != NoSymbol) && (keysym > 0) && (keysym < 256)) 
		|| (keysym == XK_Return)
		|| (keysym == XK_Tab)) {
	    char buf[TCL_UTF_MAX];
	    int len = Tcl_UniCharToUtf((Tcl_UniChar) (keysym & 255), buf);
	    Tcl_DStringAppend(dsPtr, buf, len);
	}
    }







|




|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
	 * xkey.trans_chars[] already contains a UTF-8 char.
	 */
	Tcl_DStringAppend(dsPtr, eventPtr->xkey.trans_chars,
		eventPtr->xkey.nbytes);
    } else  {
	/*
	 * This is an event generated from generic code.  It has no
	 * nchars or trans_chars members.
	 */

	keysym = KeycodeToKeysym(eventPtr->xkey.keycode,
		eventPtr->xkey.state, 0);
	if (((keysym != NoSymbol) && (keysym > 0) && (keysym < 256))
		|| (keysym == XK_Return)
		|| (keysym == XK_Tab)) {
	    char buf[TCL_UTF_MAX];
	    int len = Tcl_UniCharToUtf((Tcl_UniChar) (keysym & 255), buf);
	    Tcl_DStringAppend(dsPtr, buf, len);
	}
    }
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
    if (state & ShiftMask)
        keys[VK_SHIFT] = 0x80;
    if (state & ControlMask)
	keys[VK_CONTROL] = 0x80;
    if (state & Mod2Mask)
	keys[VK_MENU] = 0x80;

    /* 
     * Make sure all lock button info is correct so we don't mess up the
     * lights
     */

    if (state & LockMask)
	keys[VK_CAPITAL] = 1;
    if (state & Mod3Mask)







|







222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
    if (state & ShiftMask)
        keys[VK_SHIFT] = 0x80;
    if (state & ControlMask)
	keys[VK_CONTROL] = 0x80;
    if (state & Mod2Mask)
	keys[VK_MENU] = 0x80;

    /*
     * Make sure all lock button info is correct so we don't mess up the
     * lights
     */

    if (state & LockMask)
	keys[VK_CAPITAL] = 1;
    if (state & Mod3Mask)
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
    if (result == 2) {
        /*
         * This was a dead char, and there were one previously remembered
         * by the keyboard.
         * Call ToAscii() again with proper parameters to restore it.
         */

        /* 
	 * Get information about the old char
	 */

        deadkey = VkKeyScan(buf[0]);
        shift = deadkey >> 8;
        deadkey &= 255;
        scancode = MapVirtualKey(deadkey, 0);







|







256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
    if (result == 2) {
        /*
         * This was a dead char, and there were one previously remembered
         * by the keyboard.
         * Call ToAscii() again with proper parameters to restore it.
         */

        /*
	 * Get information about the old char
	 */

        deadkey = VkKeyScan(buf[0]);
        shift = deadkey >> 8;
        deadkey &= 255;
        scancode = MapVirtualKey(deadkey, 0);
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
    Tk_Window tkwin;
    KeySym keySym;
    XEvent *eventPtr;
{
    int i;
    SHORT result;
    int shift;
    
    eventPtr->xkey.keycode = 0;
    if (keySym == NoSymbol) {
        return;
    }

    /*
     * We check our private map first for a virtual keycode,







|







553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
    Tk_Window tkwin;
    KeySym keySym;
    XEvent *eventPtr;
{
    int i;
    SHORT result;
    int shift;

    eventPtr->xkey.keycode = 0;
    if (keySym == NoSymbol) {
        return;
    }

    /*
     * We check our private map first for a virtual keycode,
686
687
688
689
690
691
692
693
694
695
696
697
698

699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
 *
 * Side effects:
 *	Frees the datastructure referenced by modmap.
 *
 *----------------------------------------------------------------------
 */

void
XFreeModifiermap(modmap)
    XModifierKeymap* modmap;
{
    ckfree((char *) modmap->modifiermap);
    ckfree((char *) modmap);

}

/*
 *----------------------------------------------------------------------
 *
 * XStringToKeysym --
 *
 *	Translate a keysym name to the matching keysym. 
 *
 * Results:
 *	Returns the keysym.  Since this is already handled by
 *	Tk's StringToKeysym function, we just return NoSymbol.
 *
 * Side effects:
 *	None.







|





>







|







686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
 *
 * Side effects:
 *	Frees the datastructure referenced by modmap.
 *
 *----------------------------------------------------------------------
 */

int
XFreeModifiermap(modmap)
    XModifierKeymap* modmap;
{
    ckfree((char *) modmap->modifiermap);
    ckfree((char *) modmap);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * XStringToKeysym --
 *
 *	Translate a keysym name to the matching keysym.
 *
 * Results:
 *	Returns the keysym.  Since this is already handled by
 *	Tk's StringToKeysym function, we just return NoSymbol.
 *
 * Side effects:
 *	None.

Changes to win/tkWinPointer.c.

1
2
3
4
5
6
7
8
/* 
 * tkWinPointer.c --
 *
 *	Windows specific mouse tracking code.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 *
|







1
2
3
4
5
6
7
8
/*
 * tkWinPointer.c --
 *
 *	Windows specific mouse tracking code.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 *
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
}

/*
 *----------------------------------------------------------------------
 *
 * MouseTimerProc --
 *
 *	Check the current mouse position and look for enter/leave 
 *	events.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	May schedule a new timer and/or generate enter/leave events.







|







204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
}

/*
 *----------------------------------------------------------------------
 *
 * MouseTimerProc --
 *
 *	Check the current mouse position and look for enter/leave
 *	events.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	May schedule a new timer and/or generate enter/leave events.
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366

367
368
369
370
371
372
373
 *
 * Side effects:
 *	Mouse pointer changes position on screen.
 *
 *----------------------------------------------------------------------
 */

void
XWarpPointer(display, src_w, dest_w, src_x, src_y, src_width,
	src_height, dest_x, dest_y)
    Display* display;
    Window src_w;
    Window dest_w;
    int src_x;
    int src_y;
    unsigned int src_width;
    unsigned int src_height;
    int dest_x;
    int dest_y;
{
    RECT r;

    GetWindowRect(Tk_GetHWND(dest_w), &r);
    SetCursorPos(r.left+dest_x, r.top+dest_y);    

}

/*
 *----------------------------------------------------------------------
 *
 * XGetInputFocus --
 *







|















|
>







343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
 *
 * Side effects:
 *	Mouse pointer changes position on screen.
 *
 *----------------------------------------------------------------------
 */

int
XWarpPointer(display, src_w, dest_w, src_x, src_y, src_width,
	src_height, dest_x, dest_y)
    Display* display;
    Window src_w;
    Window dest_w;
    int src_x;
    int src_y;
    unsigned int src_width;
    unsigned int src_height;
    int dest_x;
    int dest_y;
{
    RECT r;

    GetWindowRect(Tk_GetHWND(dest_w), &r);
    SetCursorPos(r.left+dest_x, r.top+dest_y);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * XGetInputFocus --
 *
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
	    return 0;
	}
    }

    if (winPtr->window == None) {
	panic("ChangeXFocus got null X window");
    }
 
    /*
     * Change the foreground window so the focus window is raised to the top of
     * the system stacking order and gets the keyboard focus.
     */

    if (force) {
	TkWinSetForegroundWindow(winPtr);







|







466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
	    return 0;
	}
    }

    if (winPtr->window == None) {
	panic("ChangeXFocus got null X window");
    }

    /*
     * Change the foreground window so the focus window is raised to the top of
     * the system stacking order and gets the keyboard focus.
     */

    if (force) {
	TkWinSetForegroundWindow(winPtr);
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
 *----------------------------------------------------------------------
 *
 * TkpSetCapture --
 *
 *	This function captures the mouse so that all future events
 *	will be reported to this window, even if the mouse is outside
 *	the window.  If the specified window is NULL, then the mouse
 *	is released. 
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Sets the capture flag and captures the mouse.
 *







|







498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
 *----------------------------------------------------------------------
 *
 * TkpSetCapture --
 *
 *	This function captures the mouse so that all future events
 *	will be reported to this window, even if the mouse is outside
 *	the window.  If the specified window is NULL, then the mouse
 *	is released.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Sets the capture flag and captures the mouse.
 *

Changes to win/tkWinX.c.

1
2
3
4
5
6
7
8
9
10
11
/* 
 * tkWinX.c --
 *
 *	This file contains Windows emulation procedures for X routines. 
 *
 * Copyright (c) 1995-1996 Sun Microsystems, Inc.
 * Copyright (c) 1994 Software Research Associates, Inc.
 * Copyright (c) 1998-2000 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|


|







1
2
3
4
5
6
7
8
9
10
11
/*
 * tkWinX.c --
 *
 *	This file contains Windows emulation procedures for X routines.
 *
 * Copyright (c) 1995-1996 Sun Microsystems, Inc.
 * Copyright (c) 1994 Software Research Associates, Inc.
 * Copyright (c) 1998-2000 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
TkWinXCleanup(clientData)
    ClientData clientData;
{
    HINSTANCE hInstance = (HINSTANCE) clientData;
    /*
     * Clean up our own class.
     */
    
    if (childClassInitialized) {
        childClassInitialized = 0;
        UnregisterClass(TK_WIN_CHILD_CLASS_NAME, hInstance);
    }

    if (unicodeEncoding != NULL) {
	Tcl_FreeEncoding(unicodeEncoding);
	unicodeEncoding = NULL;
    }

    /*
     * And let the window manager clean up its own class(es).
     */
    
    TkWinWmCleanup(hInstance);
}

/*
 *----------------------------------------------------------------------
 *
 * TkWinGetPlatformId --
 *
 *	Determines whether running under NT, 95, or Win32s, to allow 
 *	runtime conditional code.  Win32s is no longer supported.
 *
 * Results:
 *	The return value is one of:
 *	    VER_PLATFORM_WIN32s		Win32s on Windows 3.1. 
 *	    VER_PLATFORM_WIN32_WINDOWS	Win32 on Windows 95.
 *	    VER_PLATFORM_WIN32_NT	Win32 on Windows NT
 *
 * Side effects:
 *	None.
 *
 *----------------------------------------------------------------------
 */

int
TkWinGetPlatformId()
{
    if (tkPlatformId == 0) {
	OSVERSIONINFO os;

	os.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
	GetVersionEx(&os);
	tkPlatformId = os.dwPlatformId;
        
        /* Set tkWinTheme to be TK_THEME_WIN_XP or TK_THEME_WIN_CLASSIC.
         * The TK_THEME_WIN_CLASSIC could be set even when running
         * under XP if the windows classic theme was selected. */
	if ((os.dwPlatformId == VER_PLATFORM_WIN32_NT) &&
	        (os.dwMajorVersion == 5 && os.dwMinorVersion == 1)) {
	    HKEY   hKey;
	    LPCSTR szSubKey  = TEXT("Control Panel\\Appearance");
	    LPCSTR szCurrent = TEXT("Current");
	    DWORD  dwSize = 200;
	    char pBuffer[200];







|













|








|




|


















|
|
|
|







313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
TkWinXCleanup(clientData)
    ClientData clientData;
{
    HINSTANCE hInstance = (HINSTANCE) clientData;
    /*
     * Clean up our own class.
     */

    if (childClassInitialized) {
        childClassInitialized = 0;
        UnregisterClass(TK_WIN_CHILD_CLASS_NAME, hInstance);
    }

    if (unicodeEncoding != NULL) {
	Tcl_FreeEncoding(unicodeEncoding);
	unicodeEncoding = NULL;
    }

    /*
     * And let the window manager clean up its own class(es).
     */

    TkWinWmCleanup(hInstance);
}

/*
 *----------------------------------------------------------------------
 *
 * TkWinGetPlatformId --
 *
 *	Determines whether running under NT, 95, or Win32s, to allow
 *	runtime conditional code.  Win32s is no longer supported.
 *
 * Results:
 *	The return value is one of:
 *	    VER_PLATFORM_WIN32s		Win32s on Windows 3.1.
 *	    VER_PLATFORM_WIN32_WINDOWS	Win32 on Windows 95.
 *	    VER_PLATFORM_WIN32_NT	Win32 on Windows NT
 *
 * Side effects:
 *	None.
 *
 *----------------------------------------------------------------------
 */

int
TkWinGetPlatformId()
{
    if (tkPlatformId == 0) {
	OSVERSIONINFO os;

	os.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
	GetVersionEx(&os);
	tkPlatformId = os.dwPlatformId;

	/* Set tkWinTheme to be TK_THEME_WIN_XP or TK_THEME_WIN_CLASSIC.
	 * The TK_THEME_WIN_CLASSIC could be set even when running
	 * under XP if the windows classic theme was selected. */
	if ((os.dwPlatformId == VER_PLATFORM_WIN32_NT) &&
	        (os.dwMajorVersion == 5 && os.dwMinorVersion == 1)) {
	    HKEY   hKey;
	    LPCSTR szSubKey  = TEXT("Control Panel\\Appearance");
	    LPCSTR szCurrent = TEXT("Current");
	    DWORD  dwSize = 200;
	    char pBuffer[200];
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
TkDisplay *
TkpOpenDisplay(display_name)
    CONST char *display_name;
{
    Screen *screen;
    TkWinDrawable *twdPtr;
    Display *display;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
	    Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (tsdPtr->winDisplay != NULL) {
	if (strcmp(tsdPtr->winDisplay->display->display_name, display_name) 
                == 0) {
	    return tsdPtr->winDisplay;
	} else {
	    return NULL;
	}
    }








|



|







564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
TkDisplay *
TkpOpenDisplay(display_name)
    CONST char *display_name;
{
    Screen *screen;
    TkWinDrawable *twdPtr;
    Display *display;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
	    Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (tsdPtr->winDisplay != NULL) {
	if (strcmp(tsdPtr->winDisplay->display->display_name, display_name)
                == 0) {
	    return tsdPtr->winDisplay;
	} else {
	    return NULL;
	}
    }

649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674

void
TkpCloseDisplay(dispPtr)
    TkDisplay *dispPtr;
{
    Display *display = dispPtr->display;
    HWND hwnd;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
	    Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (dispPtr != tsdPtr->winDisplay) {
        panic("TkpCloseDisplay: tried to call TkpCloseDisplay on another display");
        return;
    }

    /*
     * Force the clipboard to be rendered if we are the clipboard owner.
     */
    
    if (dispPtr->clipWindow) {
	hwnd = Tk_GetHWND(Tk_WindowId(dispPtr->clipWindow));
	if (GetClipboardOwner() == hwnd) {
	    OpenClipboard(hwnd);
	    EmptyClipboard();
	    TkWinClipboardRender(dispPtr, CF_TEXT);
	    CloseClipboard();







|










|







649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674

void
TkpCloseDisplay(dispPtr)
    TkDisplay *dispPtr;
{
    Display *display = dispPtr->display;
    HWND hwnd;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
	    Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (dispPtr != tsdPtr->winDisplay) {
        panic("TkpCloseDisplay: tried to call TkpCloseDisplay on another display");
        return;
    }

    /*
     * Force the clipboard to be rendered if we are the clipboard owner.
     */

    if (dispPtr->clipWindow) {
	hwnd = Tk_GetHWND(Tk_WindowId(dispPtr->clipWindow));
	if (GetClipboardOwner() == hwnd) {
	    OpenClipboard(hwnd);
	    EmptyClipboard();
	    TkWinClipboardRender(dispPtr, CF_TEXT);
	    CloseClipboard();
755
756
757
758
759
760
761
762
763
764
765
766
767

768
769
770
771
772
773
774
 *
 * Side effects:
 *	Plays a sounds out the system speakers.
 *
 *----------------------------------------------------------------------
 */

void
XBell(display, percent)
    Display* display;
    int percent;
{
    MessageBeep(MB_OK);

}

/*
 *----------------------------------------------------------------------
 *
 * TkWinChildProc --
 *







|





>







755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
 *
 * Side effects:
 *	Plays a sounds out the system speakers.
 *
 *----------------------------------------------------------------------
 */

int
XBell(display, percent)
    Display* display;
    int percent;
{
    MessageBeep(MB_OK);
    return Success;
}

/*
 *----------------------------------------------------------------------
 *
 * TkWinChildProc --
 *
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
        case TK_CLAIMFOCUS:
	case TK_GEOMETRYREQ:
	case TK_ATTACHWINDOW:
	case TK_DETACHWINDOW:
	    result =  TkWinEmbeddedEventProc(hwnd, message, wParam, lParam);
	    break;

	case WM_UNICHAR: 
	    if (wParam == UNICODE_NOCHAR) {
		/* If wParam is UNICODE_NOCHAR and the application processes
		 * this message, then return TRUE. */
		result = 1;
	    } else {
		/* If the event was translated, we must return 0 */
		if (Tk_TranslateWinEvent(hwnd, message, wParam, lParam,







|







829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
        case TK_CLAIMFOCUS:
	case TK_GEOMETRYREQ:
	case TK_ATTACHWINDOW:
	case TK_DETACHWINDOW:
	    result =  TkWinEmbeddedEventProc(hwnd, message, wParam, lParam);
	    break;

	case WM_UNICHAR:
	    if (wParam == UNICODE_NOCHAR) {
		/* If wParam is UNICODE_NOCHAR and the application processes
		 * this message, then return TRUE. */
		result = 1;
	    } else {
		/* If the event was translated, we must return 0 */
		if (Tk_TranslateWinEvent(hwnd, message, wParam, lParam,
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
    HWND hwnd;
    UINT message;
    WPARAM wParam;
    LPARAM lParam;
{
    XEvent event;
    TkWindow *winPtr = (TkWindow *)Tk_HWNDToWindow(hwnd);
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
	    Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (!winPtr || winPtr->window == None) {
	return;
    }

    event.xany.serial = winPtr->display->request++;







|







978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
    HWND hwnd;
    UINT message;
    WPARAM wParam;
    LPARAM lParam;
{
    XEvent event;
    TkWindow *winPtr = (TkWindow *)Tk_HWNDToWindow(hwnd);
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
	    Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (!winPtr || winPtr->window == None) {
	return;
    }

    event.xany.serial = winPtr->display->request++;
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
		    break;

		case WM_CHAR:
		    /*
		     * Synthesize both a KeyPress and a KeyRelease.
		     * Strings generated by Input Method Editor are handled
		     * in the following manner:
		     * 1. A series of WM_KEYDOWN & WM_KEYUP messages that 
		     *    cause GetTranslatedKey() to be called and return
		     *    immediately because the WM_KEYDOWNs have no 
		     *	  associated WM_CHAR messages -- the IME window is 
		     *	  accumulating the characters and translating them 
		     *    itself.  In the "bind" command, you get an event
		     *	  with a mystery keysym and %A == "" for each 
		     *	  WM_KEYDOWN that actually was meant for the IME.
		     * 2. A WM_KEYDOWN corresponding to the "confirm typing"
		     *    character.  This causes GetTranslatedKey() to be 
		     *	  called.
		     * 3. A WM_IME_NOTIFY message saying that the IME is 
		     *	  done.  A side effect of this message is that 
		     *    GetTranslatedKey() thinks this means that there
		     *	  are no WM_CHAR messages and returns immediately.
		     *    In the "bind" command, you get an another event
		     *	  with a mystery keysym and %A == "".
		     * 4. A sequence of WM_CHAR messages that correspond to 
		     *	  the characters in the IME window.  A bunch of 
		     *    simulated KeyPress/KeyRelease events will be 
		     *    generated, one for each character.  Adjacent 
		     *    WM_CHAR messages may actually specify the high
		     *	  and low bytes of a multi-byte character -- in that
		     *    case the two WM_CHAR messages will be combined into
		     *	  one event.  It is the event-consumer's 
		     *	  responsibility to convert the string returned from
		     *	  XLookupString from system encoding to UTF-8.
		     * 5. And finally we get the WM_KEYUP for the "confirm
		     *    typing" character.
		     */

		    event.type = KeyPress;







|

|
|
|

|


|

|
|




|
|
|
|



|







1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
		    break;

		case WM_CHAR:
		    /*
		     * Synthesize both a KeyPress and a KeyRelease.
		     * Strings generated by Input Method Editor are handled
		     * in the following manner:
		     * 1. A series of WM_KEYDOWN & WM_KEYUP messages that
		     *    cause GetTranslatedKey() to be called and return
		     *    immediately because the WM_KEYDOWNs have no
		     *	  associated WM_CHAR messages -- the IME window is
		     *	  accumulating the characters and translating them
		     *    itself.  In the "bind" command, you get an event
		     *	  with a mystery keysym and %A == "" for each
		     *	  WM_KEYDOWN that actually was meant for the IME.
		     * 2. A WM_KEYDOWN corresponding to the "confirm typing"
		     *    character.  This causes GetTranslatedKey() to be
		     *	  called.
		     * 3. A WM_IME_NOTIFY message saying that the IME is
		     *	  done.  A side effect of this message is that
		     *    GetTranslatedKey() thinks this means that there
		     *	  are no WM_CHAR messages and returns immediately.
		     *    In the "bind" command, you get an another event
		     *	  with a mystery keysym and %A == "".
		     * 4. A sequence of WM_CHAR messages that correspond to
		     *	  the characters in the IME window.  A bunch of
		     *    simulated KeyPress/KeyRelease events will be
		     *    generated, one for each character.  Adjacent
		     *    WM_CHAR messages may actually specify the high
		     *	  and low bytes of a multi-byte character -- in that
		     *    case the two WM_CHAR messages will be combined into
		     *	  one event.  It is the event-consumer's
		     *	  responsibility to convert the string returned from
		     *	  XLookupString from system encoding to UTF-8.
		     * 5. And finally we get the WM_KEYUP for the "confirm
		     *    typing" character.
		     */

		    event.type = KeyPress;
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
}

/*
 *----------------------------------------------------------------------
 *
 * GetState --
 *
 *	This function constructs a state mask for the mouse buttons 
 *	and modifier keys as they were before the event occured.
 *
 * Results:
 *	Returns a composite value of all the modifier and button state
 *	flags that were set at the time the event occurred.
 *
 * Side effects:







|







1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
}

/*
 *----------------------------------------------------------------------
 *
 * GetState --
 *
 *	This function constructs a state mask for the mouse buttons
 *	and modifier keys as they were before the event occured.
 *
 * Results:
 *	Returns a composite value of all the modifier and button state
 *	flags that were set at the time the event occurred.
 *
 * Side effects:
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
 */

static void
GetTranslatedKey(xkey)
    XKeyEvent *xkey;
{
    MSG msg;
    
    xkey->nbytes = 0;

    while ((xkey->nbytes < XMaxTransChars)
	    && PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) {
	if ((msg.message == WM_CHAR) || (msg.message == WM_SYSCHAR)) {
	    GetMessage(&msg, NULL, 0, 0);








|







1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
 */

static void
GetTranslatedKey(xkey)
    XKeyEvent *xkey;
{
    MSG msg;

    xkey->nbytes = 0;

    while ((xkey->nbytes < XMaxTransChars)
	    && PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) {
	if ((msg.message == WM_CHAR) || (msg.message == WM_SYSCHAR)) {
	    GetMessage(&msg, NULL, 0, 0);

1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
 *      characters to an application, it sends a WM_IME_COMPOSITION
 *      message with the GCS_RESULTSTR. However, The DefWindowProc()
 *      on English Windows 2000 arbitrarily converts all non-Latin-1
 *      characters in the composition to "?".
 *
 *      This function correctly processes the composition data and
 *      sends the UNICODE values of the composed characters to
 *      TK's event queue. 
 *
 * Results:
 *	If this function has processed the composition data, returns 1.
 *      Otherwise returns 0.
 *
 * Side effects:
 *	Key events are put into the TK event queue.







|







1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
 *      characters to an application, it sends a WM_IME_COMPOSITION
 *      message with the GCS_RESULTSTR. However, The DefWindowProc()
 *      on English Windows 2000 arbitrarily converts all non-Latin-1
 *      characters in the composition to "?".
 *
 *      This function correctly processes the composition data and
 *      sends the UNICODE values of the composed characters to
 *      TK's event queue.
 *
 * Results:
 *	If this function has processed the composition data, returns 1.
 *      Otherwise returns 0.
 *
 * Side effects:
 *	Key events are put into the TK event queue.
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
 *
 *----------------------------------------------------------------------
 */

void
TkWinUpdatingClipboard(int mode)
{
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
	    Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    tsdPtr->updatingClipboard = mode;
}

/*
 *----------------------------------------------------------------------







|







1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
 *
 *----------------------------------------------------------------------
 */

void
TkWinUpdatingClipboard(int mode)
{
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
	    Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    tsdPtr->updatingClipboard = mode;
}

/*
 *----------------------------------------------------------------------

Changes to xlib/xdraw.c.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* 
 * xdraw.c --
 *
 *	This file contains generic procedures related to X drawing
 *	primitives.
 *
 * Copyright (c) 1995 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 */

#include "tk.h"

/*
 *----------------------------------------------------------------------
 *
 * XDrawLine --
 *
 *	Draw a single line between two points in a given drawable. 
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Draws a single line segment.
 *
|


















|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
 * xdraw.c --
 *
 *	This file contains generic procedures related to X drawing
 *	primitives.
 *
 * Copyright (c) 1995 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 */

#include "tk.h"

/*
 *----------------------------------------------------------------------
 *
 * XDrawLine --
 *
 *	Draw a single line between two points in a given drawable.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Draws a single line segment.
 *

Changes to xlib/xgc.c.

1
2
3
4
5
6
7
8
9
10
11
12
/* 
 * xgc.c --
 *
 *	This file contains generic routines for manipulating X graphics
 *	contexts. 
 *
 * Copyright (c) 1995-1996 Sun Microsystems, Inc.
 * Copyright (c) 2002-2007 Daniel A. Steffen <[email protected]>
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 */
|



|







1
2
3
4
5
6
7
8
9
10
11
12
/*
 * xgc.c --
 *
 *	This file contains generic routines for manipulating X graphics
 *	contexts.
 *
 * Copyright (c) 1995-1996 Sun Microsystems, Inc.
 * Copyright (c) 2002-2007 Daniel A. Steffen <[email protected]>
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 */
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 *	None.
 *
 *----------------------------------------------------------------------
 */

static TkpClipMask *AllocClipMask(GC gc) {
    TkpClipMask *clip_mask = (TkpClipMask*) gc->clip_mask;
    
    if (clip_mask == None) {
	clip_mask = (TkpClipMask*) ckalloc(sizeof(TkpClipMask));
	gc->clip_mask = (Pixmap) clip_mask;
#ifdef MAC_OSX_TK
    } else if (clip_mask->type == TKP_CLIP_REGION) {
	TkpReleaseRegion(clip_mask->value.region);
#endif







|







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 *	None.
 *
 *----------------------------------------------------------------------
 */

static TkpClipMask *AllocClipMask(GC gc) {
    TkpClipMask *clip_mask = (TkpClipMask*) gc->clip_mask;

    if (clip_mask == None) {
	clip_mask = (TkpClipMask*) ckalloc(sizeof(TkpClipMask));
	gc->clip_mask = (Pixmap) clip_mask;
#ifdef MAC_OSX_TK
    } else if (clip_mask->type == TKP_CLIP_REGION) {
	TkpReleaseRegion(clip_mask->value.region);
#endif
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
 *----------------------------------------------------------------------
 *
 * XCreateGC --
 *
 *	Allocate a new GC, and initialize the specified fields.
 *
 * Results:
 *	Returns a newly allocated GC. 
 *
 * Side effects:
 *	None.
 *
 *----------------------------------------------------------------------
 */








|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
 *----------------------------------------------------------------------
 *
 * XCreateGC --
 *
 *	Allocate a new GC, and initialize the specified fields.
 *
 * Results:
 *	Returns a newly allocated GC.
 *
 * Side effects:
 *	None.
 *
 *----------------------------------------------------------------------
 */

129
130
131
132
133
134
135
136
137
138
139
140
141
142
143

    gp->function = 	(mask & GCFunction) 	?values->function	:GXcopy;
    gp->plane_mask = 	(mask & GCPlaneMask) 	?values->plane_mask 	:~0;
    gp->foreground = 	(mask & GCForeground) 	?values->foreground 	:
	    BlackPixelOfScreen(DefaultScreenOfDisplay(display));
    gp->background = 	(mask & GCBackground) 	?values->background 	:
	    WhitePixelOfScreen(DefaultScreenOfDisplay(display));
    gp->line_width = 	(mask & GCLineWidth)	?values->line_width	:1;	
    gp->line_style = 	(mask & GCLineStyle)	?values->line_style	:LineSolid;
    gp->cap_style =  	(mask & GCCapStyle)	?values->cap_style	:0;
    gp->join_style = 	(mask & GCJoinStyle)	?values->join_style	:0;
    gp->fill_style =  	(mask & GCFillStyle)	?values->fill_style	:FillSolid;
    gp->fill_rule =  	(mask & GCFillRule)	?values->fill_rule	:WindingRule;
    gp->arc_mode = 	(mask & GCArcMode)	?values->arc_mode	:ArcPieSlice;
    gp->tile = 		(mask & GCTile)		?values->tile		:None;







|







129
130
131
132
133
134
135
136
137
138
139
140
141
142
143

    gp->function = 	(mask & GCFunction) 	?values->function	:GXcopy;
    gp->plane_mask = 	(mask & GCPlaneMask) 	?values->plane_mask 	:~0;
    gp->foreground = 	(mask & GCForeground) 	?values->foreground 	:
	    BlackPixelOfScreen(DefaultScreenOfDisplay(display));
    gp->background = 	(mask & GCBackground) 	?values->background 	:
	    WhitePixelOfScreen(DefaultScreenOfDisplay(display));
    gp->line_width = 	(mask & GCLineWidth)	?values->line_width	:1;
    gp->line_style = 	(mask & GCLineStyle)	?values->line_style	:LineSolid;
    gp->cap_style =  	(mask & GCCapStyle)	?values->cap_style	:0;
    gp->join_style = 	(mask & GCJoinStyle)	?values->join_style	:0;
    gp->fill_style =  	(mask & GCFillStyle)	?values->fill_style	:FillSolid;
    gp->fill_rule =  	(mask & GCFillRule)	?values->fill_rule	:WindingRule;
    gp->arc_mode = 	(mask & GCArcMode)	?values->arc_mode	:ArcPieSlice;
    gp->tile = 		(mask & GCTile)		?values->tile		:None;
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
    gp->dash_offset = 	(mask & GCDashOffset)	?values->dash_offset	:0;
    gp->dashes = 	(mask & GCDashList)	?values->dashes		:4;
    (&(gp->dashes))[1] = 	0;

    gp->clip_mask = None;
    if (mask & GCClipMask) {
	TkpClipMask *clip_mask = AllocClipMask(gp);
	
	clip_mask->type = TKP_CLIP_PIXMAP;
	clip_mask->value.pixmap = values->clip_mask;
    }

    return gp;
}








|







152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
    gp->dash_offset = 	(mask & GCDashOffset)	?values->dash_offset	:0;
    gp->dashes = 	(mask & GCDashList)	?values->dashes		:4;
    (&(gp->dashes))[1] = 	0;

    gp->clip_mask = None;
    if (mask & GCClipMask) {
	TkpClipMask *clip_mask = AllocClipMask(gp);

	clip_mask->type = TKP_CLIP_PIXMAP;
	clip_mask->value.pixmap = values->clip_mask;
    }

    return gp;
}

188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
    unsigned long mask;
    XGCValues *values;
{
    if (mask & GCFunction) { gc->function = values->function; }
    if (mask & GCPlaneMask) { gc->plane_mask = values->plane_mask; }
    if (mask & GCForeground) { gc->foreground = values->foreground; }
    if (mask & GCBackground) { gc->background = values->background; }
    if (mask & GCLineWidth) { gc->line_width = values->line_width; }	
    if (mask & GCLineStyle) { gc->line_style = values->line_style; }
    if (mask & GCCapStyle) { gc->cap_style = values->cap_style; }
    if (mask & GCJoinStyle) { gc->join_style = values->join_style; }
    if (mask & GCFillStyle) { gc->fill_style = values->fill_style; }
    if (mask & GCFillRule) { gc->fill_rule = values->fill_rule; }
    if (mask & GCArcMode) { gc->arc_mode = values->arc_mode; }
    if (mask & GCTile) { gc->tile = values->tile; }







|







188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
    unsigned long mask;
    XGCValues *values;
{
    if (mask & GCFunction) { gc->function = values->function; }
    if (mask & GCPlaneMask) { gc->plane_mask = values->plane_mask; }
    if (mask & GCForeground) { gc->foreground = values->foreground; }
    if (mask & GCBackground) { gc->background = values->background; }
    if (mask & GCLineWidth) { gc->line_width = values->line_width; }
    if (mask & GCLineStyle) { gc->line_style = values->line_style; }
    if (mask & GCCapStyle) { gc->cap_style = values->cap_style; }
    if (mask & GCJoinStyle) { gc->join_style = values->join_style; }
    if (mask & GCFillStyle) { gc->fill_style = values->fill_style; }
    if (mask & GCFillRule) { gc->fill_rule = values->fill_rule; }
    if (mask & GCArcMode) { gc->arc_mode = values->arc_mode; }
    if (mask & GCTile) { gc->tile = values->tile; }
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
 *
 * Side effects:
 *	Each function sets some slot in the GC.
 *
 *----------------------------------------------------------------------
 */

void 
XSetForeground(display, gc, foreground)
    Display *display;
    GC gc;
    unsigned long foreground;
{
    gc->foreground = foreground;
}

void 
XSetBackground(display, gc, background)
    Display *display;
    GC gc;
    unsigned long background;
{
    gc->background = background;
}

void
XSetDashes(display, gc, dash_offset, dash_list, n)
    Display* display;
    GC gc;
    int dash_offset;
    _Xconst char* dash_list;
    int n;
{







|








|








|







252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
 *
 * Side effects:
 *	Each function sets some slot in the GC.
 *
 *----------------------------------------------------------------------
 */

void
XSetForeground(display, gc, foreground)
    Display *display;
    GC gc;
    unsigned long foreground;
{
    gc->foreground = foreground;
}

void
XSetBackground(display, gc, background)
    Display *display;
    GC gc;
    unsigned long background;
{
    gc->background = background;
}

int
XSetDashes(display, gc, dash_offset, dash_list, n)
    Display* display;
    GC gc;
    int dash_offset;
    _Xconst char* dash_list;
    int n;
{
292
293
294
295
296
297
298

299
300
301
302
303
304
305
#endif
    gc->dash_offset = dash_offset;
    if (n > MAX_DASH_LIST_SIZE) n = MAX_DASH_LIST_SIZE;
    while (n-- > 0) {
	*p++ = *dash_list++;
    }
    *p = 0;

}

void
XSetFunction(display, gc, function)
    Display *display;
    GC gc;
    int function;







>







292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
#endif
    gc->dash_offset = dash_offset;
    if (n > MAX_DASH_LIST_SIZE) n = MAX_DASH_LIST_SIZE;
    while (n-- > 0) {
	*p++ = *dash_list++;
    }
    *p = 0;
    return Success;
}

void
XSetFunction(display, gc, function)
    Display *display;
    GC gc;
    int function;

Changes to xlib/ximage.c.

1
2
3
4
5
6
7
8
/* 
 * ximage.c --
 *
 *	X bitmap and image routines.
 *
 * Copyright (c) 1995 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
|







1
2
3
4
5
6
7
8
/*
 * ximage.c --
 *
 *	X bitmap and image routines.
 *
 * Copyright (c) 1995 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution

Changes to xlib/xutil.c.

1
2
3
4
5
6
7
8
/* 
 * xutil.c --
 *
 *	This function contains generic X emulation routines.
 *
 * Copyright (c) 1995-1996 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
|







1
2
3
4
5
6
7
8
/*
 * xutil.c --
 *
 *	This function contains generic X emulation routines.
 *
 * Copyright (c) 1995-1996 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Atom
XInternAtom(display, atom_name, only_if_exists)
    Display* display;
    _Xconst char* atom_name;
    Bool only_if_exists;
{
    static Atom atom = XA_LAST_PREDEFINED;
    
    display->request++;
    return ++atom;
}

/*
 *----------------------------------------------------------------------
 *







|







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Atom
XInternAtom(display, atom_name, only_if_exists)
    Display* display;
    _Xconst char* atom_name;
    Bool only_if_exists;
{
    static Atom atom = XA_LAST_PREDEFINED;

    display->request++;
    return ++atom;
}

/*
 *----------------------------------------------------------------------
 *
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
    info->depth = info->visual->bits_per_rgb;
    info->class = info->visual->class;
    info->colormap_size = info->visual->map_entries;
    info->bits_per_rgb = info->visual->bits_per_rgb;
    info->red_mask = info->visual->red_mask;
    info->green_mask = info->visual->green_mask;
    info->blue_mask = info->visual->blue_mask;
    
    if (((vinfo_mask & VisualIDMask)
	    && (vinfo_template->visualid != info->visualid))
	    || ((vinfo_mask & VisualScreenMask)
		    && (vinfo_template->screen != info->screen))
	    || ((vinfo_mask & VisualDepthMask)
		    && (vinfo_template->depth != info->depth))
	    || ((vinfo_mask & VisualClassMask)







|







81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
    info->depth = info->visual->bits_per_rgb;
    info->class = info->visual->class;
    info->colormap_size = info->visual->map_entries;
    info->bits_per_rgb = info->visual->bits_per_rgb;
    info->red_mask = info->visual->red_mask;
    info->green_mask = info->visual->green_mask;
    info->blue_mask = info->visual->blue_mask;

    if (((vinfo_mask & VisualIDMask)
	    && (vinfo_template->visualid != info->visualid))
	    || ((vinfo_mask & VisualScreenMask)
		    && (vinfo_template->screen != info->screen))
	    || ((vinfo_mask & VisualDepthMask)
		    && (vinfo_template->depth != info->depth))
	    || ((vinfo_mask & VisualClassMask)