Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | merge with trunk |
---|---|
Timelines: | family | ancestors | descendants | both | wtf-8-experiment |
Files: | files | file ages | folders |
SHA1: |
4dfcc43c2c740aa35f89d75c5490c5fc |
User & Date: | chw 2020-05-23 08:55:47.879 |
Context
2020-05-23
| ||
09:17 | merge with trunk check-in: d92ce5dae5 user: chw tags: wtf-8-experiment | |
08:55 | merge with trunk check-in: 4dfcc43c2c user: chw tags: wtf-8-experiment | |
08:52 | some tweaks to prevent undroidwish lockups on win32 during tear down check-in: 0dc9013a23 user: chw tags: trunk | |
2020-05-21
| ||
06:05 | merge with trunk check-in: d5b6321045 user: chw tags: wtf-8-experiment | |
Changes
Changes to jni/sdl2tk/generic/tkClipboard.c.
︙ | ︙ | |||
633 634 635 636 637 638 639 | * *---------------------------------------------------------------------- */ int TkClipInit( Tcl_Interp *interp, /* Interpreter to use for error reporting. */ | | | 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 | * *---------------------------------------------------------------------- */ int TkClipInit( Tcl_Interp *interp, /* Interpreter to use for error reporting. */ TkDisplay *dispPtr) /* Display to initialize. */ { XSetWindowAttributes atts; dispPtr->clipTargetPtr = NULL; dispPtr->clipboardActive = 0; dispPtr->clipboardAppPtr = NULL; |
︙ | ︙ | |||
672 673 674 675 676 677 678 | /* * Create selection handlers for types TK_APPLICATION and TK_WINDOW on * this window. Can't use the default handlers for these types because * this isn't a full-fledged window. */ Tk_CreateSelHandler(dispPtr->clipWindow, dispPtr->clipboardAtom, | | | 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 | /* * Create selection handlers for types TK_APPLICATION and TK_WINDOW on * this window. Can't use the default handlers for these types because * this isn't a full-fledged window. */ Tk_CreateSelHandler(dispPtr->clipWindow, dispPtr->clipboardAtom, dispPtr->applicationAtom, ClipboardAppHandler, dispPtr, XA_STRING); Tk_CreateSelHandler(dispPtr->clipWindow, dispPtr->clipboardAtom, dispPtr->windowAtom, ClipboardWindowHandler, dispPtr, XA_STRING); return TCL_OK; } /* *-------------------------------------------------------------- |
︙ | ︙ |
Changes to jni/sdl2tk/generic/tkEvent.c.
︙ | ︙ | |||
2119 2120 2121 2122 2123 2124 2125 | #if defined(_WIN32) && !defined(STATIC_BUILD) if (!tclStubsPtr) { return; } #endif | > > > > > | > > | 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 | #if defined(_WIN32) && !defined(STATIC_BUILD) if (!tclStubsPtr) { return; } #endif #if defined(_WIN32) && defined(PLATFORM_SDL) /* * Force clear of clipboard buffer here to prevent from * lockups when performing this operation on XCloseDisplay(). */ TkSelUpdateClipboard(NULL, NULL); #endif Tcl_MutexLock(&exitMutex); for (exitPtr = firstExitPtr; exitPtr != NULL; exitPtr = firstExitPtr) { /* * Be careful to remove the handler from the list before invoking its * callback. This protects us against double-freeing if the callback * should call TkDeleteExitHandler on itself. |
︙ | ︙ |
Changes to jni/sdl2tk/generic/tkSelect.c.
︙ | ︙ | |||
121 122 123 124 125 126 127 | ClientData clientData, /* Value to pass to proc. */ Atom format) /* Format in which the selection information * should be returned to the requestor. * XA_STRING is best by far, but anything * listed in the ICCCM will be tolerated * (blech). */ { | | | 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | ClientData clientData, /* Value to pass to proc. */ Atom format) /* Format in which the selection information * should be returned to the requestor. * XA_STRING is best by far, but anything * listed in the ICCCM will be tolerated * (blech). */ { TkSelHandler *selPtr; TkWindow *winPtr = (TkWindow *) tkwin; if (winPtr->dispPtr->multipleAtom == None) { TkSelInit(tkwin); } /* |
︙ | ︙ | |||
235 236 237 238 239 240 241 | Tk_Window tkwin, /* Token for window. */ Atom selection, /* The selection whose handler is to be * removed. */ Atom target) /* The target whose selection handler is to be * removed. */ { TkWindow *winPtr = (TkWindow *) tkwin; | | | | 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 | Tk_Window tkwin, /* Token for window. */ Atom selection, /* The selection whose handler is to be * removed. */ Atom target) /* The target whose selection handler is to be * removed. */ { TkWindow *winPtr = (TkWindow *) tkwin; TkSelHandler *selPtr, *prevPtr; TkSelInProgress *ipPtr; ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); /* * Find the selection handler to be deleted, or return if it doesn't * exist. */ |
︙ | ︙ | |||
349 350 351 352 353 354 355 | Tk_Window tkwin, /* Window to become new selection owner. */ Atom selection, /* Selection that window should own. */ Tk_LostSelProc *proc, /* Function to call when selection is taken * away from tkwin. */ ClientData clientData) /* Arbitrary one-word argument to pass to * proc. */ { | | | 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 | Tk_Window tkwin, /* Window to become new selection owner. */ Atom selection, /* Selection that window should own. */ Tk_LostSelProc *proc, /* Function to call when selection is taken * away from tkwin. */ ClientData clientData) /* Arbitrary one-word argument to pass to * proc. */ { TkWindow *winPtr = (TkWindow *) tkwin; TkDisplay *dispPtr = winPtr->dispPtr; TkSelectionInfo *infoPtr; Tk_LostSelProc *clearProc = NULL; ClientData clearData = NULL;/* Initialization needed only to prevent * compiler warning. */ if (dispPtr->multipleAtom == None) { |
︙ | ︙ | |||
456 457 458 459 460 461 462 | */ void Tk_ClearSelection( Tk_Window tkwin, /* Window that selects a display. */ Atom selection) /* Selection to be cancelled. */ { | | | 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 | */ void Tk_ClearSelection( Tk_Window tkwin, /* Window that selects a display. */ Atom selection) /* Selection to be cancelled. */ { TkWindow *winPtr = (TkWindow *) tkwin; TkDisplay *dispPtr = winPtr->dispPtr; TkSelectionInfo *infoPtr; TkSelectionInfo *prevPtr; TkSelectionInfo *nextPtr; Tk_LostSelProc *clearProc = NULL; ClientData clearData = NULL;/* Initialization needed only to prevent * compiler warning. */ |
︙ | ︙ | |||
573 574 575 576 577 578 579 | for (infoPtr = dispPtr->selectionInfoPtr; infoPtr != NULL; infoPtr = infoPtr->nextPtr) { if (infoPtr->selection == selection) { break; } } if (infoPtr != NULL) { | | | 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 | for (infoPtr = dispPtr->selectionInfoPtr; infoPtr != NULL; infoPtr = infoPtr->nextPtr) { if (infoPtr->selection == selection) { break; } } if (infoPtr != NULL) { TkSelHandler *selPtr; int offset, result, count; char buffer[TK_SEL_BYTES_AT_ONCE+1]; TkSelInProgress ip; for (selPtr = ((TkWindow *) infoPtr->owner)->selHandlerList; selPtr != NULL; selPtr = selPtr->nextPtr) { if (selPtr->target==target && selPtr->selection==selection) { |
︙ | ︙ | |||
826 827 828 829 830 831 832 | return result; } case SELECTION_HANDLE: { Atom target, format; const char *targetName = NULL; const char *formatName = NULL; | | | 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 | return result; } case SELECTION_HANDLE: { Atom target, format; const char *targetName = NULL; const char *formatName = NULL; CommandInfo *cmdInfoPtr; int cmdLength; static const char *const handleOptionStrings[] = { "-format", "-selection", "-type", NULL }; enum handleOptions { HANDLE_FORMAT, HANDLE_SELECTION, HANDLE_TYPE }; |
︙ | ︙ | |||
915 916 917 918 919 920 921 | Tk_CreateSelHandler(tkwin, selection, target, HandleTclCommand, cmdInfoPtr, format); } return TCL_OK; } case SELECTION_OWN: { | | | 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 | Tk_CreateSelHandler(tkwin, selection, target, HandleTclCommand, cmdInfoPtr, format); } return TCL_OK; } case SELECTION_OWN: { LostCommand *lostPtr; Tcl_Obj *commandObj = NULL; static const char *const ownOptionStrings[] = { "-command", "-displayof", "-selection", NULL }; enum ownOptions { OWN_COMMAND, OWN_DISPLAYOF, OWN_SELECTION }; int ownIndex; |
︙ | ︙ | |||
1088 1089 1090 1091 1092 1093 1094 | * Frees up memory associated with the selection. * *---------------------------------------------------------------------- */ void TkSelDeadWindow( | | | | | 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 | * Frees up memory associated with the selection. * *---------------------------------------------------------------------- */ void TkSelDeadWindow( TkWindow *winPtr) /* Window that's being deleted. */ { TkSelHandler *selPtr; TkSelInProgress *ipPtr; TkSelectionInfo *infoPtr, *prevPtr, *nextPtr; ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); /* * While deleting all the handlers, be careful to check whether * ConvertSelection or TkSelPropProc are about to process one of the |
︙ | ︙ | |||
1166 1167 1168 1169 1170 1171 1172 | */ void TkSelInit( Tk_Window tkwin) /* Window token (used to find display to * initialize). */ { | | | 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 | */ void TkSelInit( Tk_Window tkwin) /* Window token (used to find display to * initialize). */ { TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr; /* * Fetch commonly-used atoms. */ dispPtr->multipleAtom = Tk_InternAtom(tkwin, "MULTIPLE"); dispPtr->incrAtom = Tk_InternAtom(tkwin, "INCR"); |
︙ | ︙ | |||
1190 1191 1192 1193 1194 1195 1196 | /* * Using UTF8_STRING instead of the XA_UTF8_STRING macro allows us to * support older X servers that didn't have UTF8_STRING yet. This is * necessary on Unix systems. For more information, see: * http://www.cl.cam.ac.uk/~mgk25/unicode.html#x11 */ | | | 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 | /* * Using UTF8_STRING instead of the XA_UTF8_STRING macro allows us to * support older X servers that didn't have UTF8_STRING yet. This is * necessary on Unix systems. For more information, see: * http://www.cl.cam.ac.uk/~mgk25/unicode.html#x11 */ #if !defined(_WIN32) || defined(PLATFORM_SDL) dispPtr->utf8Atom = Tk_InternAtom(tkwin, "UTF8_STRING"); #else dispPtr->utf8Atom = (Atom) 0; #endif } /* |
︙ | ︙ | |||
1217 1218 1219 1220 1221 1222 1223 | * *---------------------------------------------------------------------- */ void TkSelClearSelection( Tk_Window tkwin, /* Window for which event was targeted. */ | | | | 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 | * *---------------------------------------------------------------------- */ void TkSelClearSelection( Tk_Window tkwin, /* Window for which event was targeted. */ XEvent *eventPtr) /* X SelectionClear event. */ { TkWindow *winPtr = (TkWindow *) tkwin; TkDisplay *dispPtr = winPtr->dispPtr; TkSelectionInfo *infoPtr; TkSelectionInfo *prevPtr; /* * Invoke clear function for window that just lost the selection. This * code is a bit tricky, because any callbacks due to selection changes |
︙ | ︙ | |||
1484 1485 1486 1487 1488 1489 1490 | TkSelectionInfo *infoPtr, /* Info about selection being retrieved. */ Atom target, /* Desired form of selection. */ char *buffer, /* Place to put selection characters. */ int maxBytes, /* Maximum # of bytes to store at buffer. */ Atom *typePtr) /* Store here the type of the selection, for * use in converting to proper X format. */ { | | | | 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 | TkSelectionInfo *infoPtr, /* Info about selection being retrieved. */ Atom target, /* Desired form of selection. */ char *buffer, /* Place to put selection characters. */ int maxBytes, /* Maximum # of bytes to store at buffer. */ Atom *typePtr) /* Store here the type of the selection, for * use in converting to proper X format. */ { TkWindow *winPtr = (TkWindow *) infoPtr->owner; TkDisplay *dispPtr = winPtr->dispPtr; if (target == dispPtr->timestampAtom) { if (maxBytes < 20) { return -1; } sprintf(buffer, "0x%x", (unsigned int) infoPtr->time); *typePtr = XA_INTEGER; return strlen(buffer); } if (target == dispPtr->targetsAtom) { TkSelHandler *selPtr; int length; Tcl_DString ds; if (maxBytes < 50) { return -1; } Tcl_DStringInit(&ds); |
︙ | ︙ |
Changes to jni/sdl2tk/sdl/SdlTkX.c.
︙ | ︙ | |||
1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 | } if (SdlTkX.focus_window_not_override == w) { SdlTkX.focus_window_not_override = None; } SdlTkClearPointer(_w); if (SdlTkX.current_primary == w) { SdlTkX.current_primary = None; SDL_SetClipboardText(""); } if (SdlTkX.current_clipboard == w) { SdlTkX.current_clipboard = None; SDL_SetClipboardText(""); } if (_w->atts.map_state != IsUnmapped) { SdlTkUnmapWindow(display, w); } /* Destroy children recursively */ | > > > > > > | 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 | } if (SdlTkX.focus_window_not_override == w) { SdlTkX.focus_window_not_override = None; } SdlTkClearPointer(_w); if (SdlTkX.current_primary == w) { SdlTkX.current_primary = None; #ifndef _WIN32 /* For _WIN32 this is done in tkEvent.c in exit handler. */ SDL_SetClipboardText(""); #endif } if (SdlTkX.current_clipboard == w) { SdlTkX.current_clipboard = None; #ifndef _WIN32 /* For _WIN32 this is done in tkEvent.c in exit handler. */ SDL_SetClipboardText(""); #endif } if (_w->atts.map_state != IsUnmapped) { SdlTkUnmapWindow(display, w); } /* Destroy children recursively */ |
︙ | ︙ |
Changes to jni/sdl2tk/sdl/tkSDLMenu.c.
︙ | ︙ | |||
1878 1879 1880 1881 1882 1883 1884 | void TkpMenuInit(void) { /* * Nothing to do. */ } | < | 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 | void TkpMenuInit(void) { /* * Nothing to do. */ } /* *---------------------------------------------------------------------- * * TkpMenuThreadInit -- * * Does platform-specific initialization of thread-specific menu state. |
︙ | ︙ |
Changes to jni/sdl2tk/sdl/tkSDLSelect.c.
︙ | ︙ | |||
88 89 90 91 92 93 94 | * until eventually there's no more selection to fetch. * *---------------------------------------------------------------------- */ void TkSelPropProc( | | | 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | * until eventually there's no more selection to fetch. * *---------------------------------------------------------------------- */ void TkSelPropProc( XEvent *eventPtr) /* X PropertyChange event. */ { } /* *-------------------------------------------------------------- * * TkSelEventProc -- |
︙ | ︙ | |||
113 114 115 116 117 118 119 | * *-------------------------------------------------------------- */ void TkSelEventProc( Tk_Window tkwin, /* Window for which event was targeted. */ | | | 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | * *-------------------------------------------------------------- */ void TkSelEventProc( Tk_Window tkwin, /* Window for which event was targeted. */ XEvent *eventPtr) /* X event: either SelectionClear, * SelectionRequest, or SelectionNotify. */ { /* * Case #1: SelectionClear events. */ if (eventPtr->type == SelectionClear) { |
︙ | ︙ | |||
162 163 164 165 166 167 168 169 170 171 172 173 174 175 | void TkSelUpdateClipboard( TkWindow *winPtr, /* Window associated with clipboard. */ TkClipboardTarget *targetPtr) /* Info about the content. */ { if ((targetPtr != NULL) && (targetPtr->format == XA_STRING) && (targetPtr->firstBufferPtr != NULL)) { Tcl_DString buffer, buffer2; Tcl_Encoding encoding; TkClipboardBuffer *bufPtr = targetPtr->firstBufferPtr; Tcl_DStringInit(&buffer); | > > > > > | 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | void TkSelUpdateClipboard( TkWindow *winPtr, /* Window associated with clipboard. */ TkClipboardTarget *targetPtr) /* Info about the content. */ { if (winPtr == NULL) { /* Clear SDL clipboard. */ SDL_SetClipboardText(""); return; } if ((targetPtr != NULL) && (targetPtr->format == XA_STRING) && (targetPtr->firstBufferPtr != NULL)) { Tcl_DString buffer, buffer2; Tcl_Encoding encoding; TkClipboardBuffer *bufPtr = targetPtr->firstBufferPtr; Tcl_DStringInit(&buffer); |
︙ | ︙ |
Changes to jni/sdl2tk/unix/tkUnixMenu.c.
︙ | ︙ | |||
1878 1879 1880 1881 1882 1883 1884 | void TkpMenuInit(void) { /* * Nothing to do. */ } | < | 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 | void TkpMenuInit(void) { /* * Nothing to do. */ } /* *---------------------------------------------------------------------- * * TkpMenuThreadInit -- * * Does platform-specific initialization of thread-specific menu state. |
︙ | ︙ |
Changes to jni/sdl2tk/unix/tkUnixSelect.c.
︙ | ︙ | |||
236 237 238 239 240 241 242 | * until eventually there's no more selection to fetch. * *---------------------------------------------------------------------- */ void TkSelPropProc( | | | | | 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 | * until eventually there's no more selection to fetch. * *---------------------------------------------------------------------- */ void TkSelPropProc( XEvent *eventPtr) /* X PropertyChange event. */ { IncrInfo *incrPtr; TkSelHandler *selPtr; int length, numItems; unsigned long i; Atom target, formatType; long buffer[TK_SEL_WORDS_AT_ONCE]; TkDisplay *dispPtr = TkGetDisplay(eventPtr->xany.display); Tk_ErrorHandler errorHandler; ThreadSpecificData *tsdPtr = |
︙ | ︙ | |||
515 516 517 518 519 520 521 | * *-------------------------------------------------------------- */ void TkSelEventProc( Tk_Window tkwin, /* Window for which event was targeted. */ | | | | | 515 516 517 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 544 545 546 547 548 549 550 | * *-------------------------------------------------------------- */ void TkSelEventProc( Tk_Window tkwin, /* Window for which event was targeted. */ XEvent *eventPtr) /* X event: either SelectionClear, * SelectionRequest, or SelectionNotify. */ { TkWindow *winPtr = (TkWindow *) tkwin; TkDisplay *dispPtr = winPtr->dispPtr; Tcl_Interp *interp; /* * Case #1: SelectionClear events. */ if (eventPtr->type == SelectionClear) { TkSelClearSelection(tkwin, eventPtr); } /* * Case #2: SelectionNotify events. Call the relevant function to handle * the incoming selection. */ if (eventPtr->type == SelectionNotify) { TkSelRetrievalInfo *retrPtr; char *propInfo, **propInfoPtr = &propInfo; Atom type; int format, result; unsigned long numItems, bytesAfter; Tcl_DString ds; for (retrPtr = pendingRetrievals; ; retrPtr = retrPtr->nextPtr) { |
︙ | ︙ | |||
756 757 758 759 760 761 762 | *---------------------------------------------------------------------- */ static void SelTimeoutProc( ClientData clientData) /* Information about retrieval in progress. */ { | | | 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 | *---------------------------------------------------------------------- */ static void SelTimeoutProc( ClientData clientData) /* Information about retrieval in progress. */ { TkSelRetrievalInfo *retrPtr = clientData; /* * Make sure that the retrieval is still in progress. Then see how long * it's been since any sort of response was received from the other side. */ if (retrPtr->result != -1) { |
︙ | ︙ | |||
810 811 812 813 814 815 816 | static void ConvertSelection( TkWindow *winPtr, /* Window that received the conversion * request; may not be selection's current * owner, be we set it to the current * owner. */ | | | 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 | static void ConvertSelection( TkWindow *winPtr, /* Window that received the conversion * request; may not be selection's current * owner, be we set it to the current * owner. */ XSelectionRequestEvent *eventPtr) /* Event describing request. */ { union { XSelectionEvent xsel; XEvent ev; } reply; /* Used to notify requestor that selection * info is ready. */ |
︙ | ︙ | |||
912 913 914 915 916 917 918 | */ incr.converts = ckalloc(incr.numConversions * sizeof(ConvertInfo)); incr.numIncrs = 0; for (i = 0; i < incr.numConversions; i++) { Atom target, property, type; long buffer[TK_SEL_WORDS_AT_ONCE]; | | | 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 | */ incr.converts = ckalloc(incr.numConversions * sizeof(ConvertInfo)); incr.numIncrs = 0; for (i = 0; i < incr.numConversions; i++) { Atom target, property, type; long buffer[TK_SEL_WORDS_AT_ONCE]; TkSelHandler *selPtr; int numItems, format; char *propPtr; target = incr.multAtoms[2*i]; property = incr.multAtoms[2*i + 1]; incr.converts[i].offset = -1; incr.converts[i].buffer[0] = '\0'; |
︙ | ︙ | |||
1157 1158 1159 1160 1161 1162 1163 | * *---------------------------------------------------------------------- */ static void SelRcvIncrProc( ClientData clientData, /* Information about retrieval. */ | | | | 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 | * *---------------------------------------------------------------------- */ static void SelRcvIncrProc( ClientData clientData, /* Information about retrieval. */ XEvent *eventPtr) /* X PropertyChange event. */ { TkSelRetrievalInfo *retrPtr = clientData; char *propInfo, **propInfoPtr = &propInfo; Atom type; int format, result; unsigned long numItems, bytesAfter; Tcl_Interp *interp; if ((eventPtr->xproperty.atom != retrPtr->property) |
︙ | ︙ | |||
1407 1408 1409 1410 1411 1412 1413 | static void IncrTimeoutProc( ClientData clientData) /* Information about INCR-mode selection * retrieval for which we are selection * owner. */ { | | | 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 | static void IncrTimeoutProc( ClientData clientData) /* Information about INCR-mode selection * retrieval for which we are selection * owner. */ { IncrInfo *incrPtr = clientData; incrPtr->idleTime++; if (incrPtr->idleTime >= 5) { incrPtr->numIncrs = 0; } else { incrPtr->timeout = Tcl_CreateTimerHandler(1000, IncrTimeoutProc, incrPtr); |
︙ | ︙ | |||
1520 1521 1522 1523 1524 1525 1526 | * None. * *---------------------------------------------------------------------- */ static void SelCvtFromX32( | | | 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 | * None. * *---------------------------------------------------------------------- */ static void SelCvtFromX32( long *propPtr, /* Property value from X. */ int numValues, /* Number of 32-bit values in property. */ Atom type, /* Type of property Should not be XA_STRING * (if so, don't bother calling this function * at all). */ Tk_Window tkwin, /* Window to use for atom conversion. */ Tcl_DString *dsPtr) /* Where to store the converted string. */ { |
︙ | ︙ | |||
1553 1554 1555 1556 1557 1558 1559 | } } Tcl_DStringAppend(dsPtr, " ", 1); } static void SelCvtFromX8( | | | 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 | } } Tcl_DStringAppend(dsPtr, " ", 1); } static void SelCvtFromX8( char *propPtr, /* Property value from X. */ int numValues, /* Number of 8-bit values in property. */ Atom type, /* Type of property Should not be XA_STRING * (if so, don't bother calling this function * at all). */ Tk_Window tkwin, /* Window to use for atom conversion. */ Tcl_DString *dsPtr) /* Where to store the converted string. */ { |
︙ | ︙ |