… | |
… | |
92 | */ |
92 | */ |
93 | #define drawBuffer TermWin.vt |
93 | #define drawBuffer TermWin.vt |
94 | |
94 | |
95 | #define CLEAR_ROWS(row, num) \ |
95 | #define CLEAR_ROWS(row, num) \ |
96 | if (TermWin.mapped) \ |
96 | if (TermWin.mapped) \ |
97 | XClearArea (Xdisplay, drawBuffer, TermWin.int_bwidth, \ |
97 | XClearArea (display->display, drawBuffer, TermWin.int_bwidth, \ |
98 | Row2Pixel(row), (unsigned int)TermWin.width, \ |
98 | Row2Pixel(row), (unsigned int)TermWin.width, \ |
99 | (unsigned int)Height2Pixel(num), False) |
99 | (unsigned int)Height2Pixel(num), False) |
100 | |
100 | |
101 | #define CLEAR_CHARS(x, y, num) \ |
101 | #define CLEAR_CHARS(x, y, num) \ |
102 | if (TermWin.mapped) \ |
102 | if (TermWin.mapped) \ |
103 | XClearArea (Xdisplay, drawBuffer, x, y, \ |
103 | XClearArea (display->display, drawBuffer, x, y, \ |
104 | (unsigned int)Width2Pixel(num), \ |
104 | (unsigned int)Width2Pixel(num), \ |
105 | (unsigned int)Height2Pixel(1), False) |
105 | (unsigned int)Height2Pixel(1), False) |
106 | |
106 | |
107 | #define ERASE_ROWS(row, num) \ |
107 | #define ERASE_ROWS(row, num) \ |
108 | XFillRectangle (Xdisplay, drawBuffer, TermWin.gc, \ |
108 | XFillRectangle (display->display, drawBuffer, TermWin.gc, \ |
109 | TermWin.int_bwidth, Row2Pixel(row), \ |
109 | TermWin.int_bwidth, Row2Pixel(row), \ |
110 | (unsigned int)TermWin.width, \ |
110 | (unsigned int)TermWin.width, \ |
111 | (unsigned int)Height2Pixel(num)) |
111 | (unsigned int)Height2Pixel(num)) |
112 | |
112 | |
113 | /* ------------------------------------------------------------------------- * |
113 | /* ------------------------------------------------------------------------- * |
… | |
… | |
1279 | } |
1279 | } |
1280 | else |
1280 | else |
1281 | { |
1281 | { |
1282 | ren = (rstyle & (RS_fgMask | RS_bgMask)); |
1282 | ren = (rstyle & (RS_fgMask | RS_bgMask)); |
1283 | gcvalue.foreground = PixColors[GET_BGCOLOR(rstyle)]; |
1283 | gcvalue.foreground = PixColors[GET_BGCOLOR(rstyle)]; |
1284 | XChangeGC(Xdisplay, TermWin.gc, GCForeground, &gcvalue); |
1284 | XChangeGC(display->display, TermWin.gc, GCForeground, &gcvalue); |
1285 | ERASE_ROWS(row, num); |
1285 | ERASE_ROWS(row, num); |
1286 | gcvalue.foreground = PixColors[Color_fg]; |
1286 | gcvalue.foreground = PixColors[Color_fg]; |
1287 | XChangeGC(Xdisplay, TermWin.gc, GCForeground, &gcvalue); |
1287 | XChangeGC(display->display, TermWin.gc, GCForeground, &gcvalue); |
1288 | } |
1288 | } |
1289 | for (; num--; row++) |
1289 | for (; num--; row++) |
1290 | { |
1290 | { |
1291 | scr_blank_screen_mem (screen.text, screen.rend, |
1291 | scr_blank_screen_mem (screen.text, screen.rend, |
1292 | (unsigned int)(row + row_offset), rstyle); |
1292 | (unsigned int)(row + row_offset), rstyle); |
… | |
… | |
1578 | if (bgPixmap.pixmap == None) |
1578 | if (bgPixmap.pixmap == None) |
1579 | #endif |
1579 | #endif |
1580 | #if defined(TRANSPARENT) |
1580 | #if defined(TRANSPARENT) |
1581 | if (!(Options & Opt_transparent) || am_transparent == 0) |
1581 | if (!(Options & Opt_transparent) || am_transparent == 0) |
1582 | #endif |
1582 | #endif |
1583 | XSetWindowBackground(Xdisplay, TermWin.vt, |
1583 | XSetWindowBackground(display->display, TermWin.vt, |
1584 | PixColors[Color_bg]); |
1584 | PixColors[Color_bg]); |
1585 | |
1585 | |
1586 | gcvalue.foreground = PixColors[Color_fg]; |
1586 | gcvalue.foreground = PixColors[Color_fg]; |
1587 | gcvalue.background = PixColors[Color_bg]; |
1587 | gcvalue.background = PixColors[Color_bg]; |
1588 | XChangeGC(Xdisplay, TermWin.gc, GCBackground | GCForeground, |
1588 | XChangeGC(display->display, TermWin.gc, GCBackground | GCForeground, |
1589 | &gcvalue); |
1589 | &gcvalue); |
1590 | scr_clear (); |
1590 | scr_clear (); |
1591 | scr_touch (true); |
1591 | scr_touch (true); |
1592 | } |
1592 | } |
1593 | } |
1593 | } |
… | |
… | |
1826 | #ifndef NO_BELL |
1826 | #ifndef NO_BELL |
1827 | # ifndef NO_MAPALERT |
1827 | # ifndef NO_MAPALERT |
1828 | # ifdef MAPALERT_OPTION |
1828 | # ifdef MAPALERT_OPTION |
1829 | if (Options & Opt_mapAlert) |
1829 | if (Options & Opt_mapAlert) |
1830 | # endif |
1830 | # endif |
1831 | XMapWindow(Xdisplay, TermWin.parent[0]); |
1831 | XMapWindow(display->display, TermWin.parent[0]); |
1832 | # endif |
1832 | # endif |
1833 | if (Options & Opt_visualBell) |
1833 | if (Options & Opt_visualBell) |
1834 | { |
1834 | { |
1835 | scr_rvideo_mode (!rvideo); /* refresh also done */ |
1835 | scr_rvideo_mode (!rvideo); /* refresh also done */ |
1836 | scr_rvideo_mode (!rvideo); /* refresh also done */ |
1836 | scr_rvideo_mode (!rvideo); /* refresh also done */ |
1837 | } |
1837 | } |
1838 | else |
1838 | else |
1839 | XBell(Xdisplay, 0); |
1839 | XBell(display->display, 0); |
1840 | #endif |
1840 | #endif |
1841 | } |
1841 | } |
1842 | |
1842 | |
1843 | /* ------------------------------------------------------------------------- */ |
1843 | /* ------------------------------------------------------------------------- */ |
1844 | /* ARGSUSED */ |
1844 | /* ARGSUSED */ |
… | |
… | |
2080 | /* also comes here at end if needed because of >= above */ |
2080 | /* also comes here at end if needed because of >= above */ |
2081 | if (wlen < len) |
2081 | if (wlen < len) |
2082 | SWAP_IT(wlen, len, int); |
2082 | SWAP_IT(wlen, len, int); |
2083 | |
2083 | |
2084 | D_SCREEN((stderr, "rxvt_scr_refresh(): XCopyArea: %d -> %d (height: %d)", len + i, len, wlen - len + 1)); |
2084 | D_SCREEN((stderr, "rxvt_scr_refresh(): XCopyArea: %d -> %d (height: %d)", len + i, len, wlen - len + 1)); |
2085 | XCopyArea (Xdisplay, TermWin.vt, TermWin.vt, |
2085 | XCopyArea (display->display, TermWin.vt, TermWin.vt, |
2086 | TermWin.gc, 0, Row2Pixel (len + i), |
2086 | TermWin.gc, 0, Row2Pixel (len + i), |
2087 | (unsigned int)TermWin_TotalWidth (), |
2087 | (unsigned int)TermWin_TotalWidth (), |
2088 | (unsigned int)Height2Pixel (wlen - len + 1), |
2088 | (unsigned int)Height2Pixel (wlen - len + 1), |
2089 | 0, Row2Pixel (len)); |
2089 | 0, Row2Pixel (len)); |
2090 | len = -1; |
2090 | len = -1; |
… | |
… | |
2248 | } |
2248 | } |
2249 | else |
2249 | else |
2250 | font->draw (xpixel, ypixel, text, count, fore, back); |
2250 | font->draw (xpixel, ypixel, text, count, fore, back); |
2251 | |
2251 | |
2252 | if ((rend & RS_Uline) && (font->descent > 1)) |
2252 | if ((rend & RS_Uline) && (font->descent > 1)) |
2253 | XDrawLine(Xdisplay, drawBuffer, TermWin.gc, |
2253 | XDrawLine(display->display, drawBuffer, TermWin.gc, |
2254 | xpixel, ypixel + font->ascent + 1, |
2254 | xpixel, ypixel + font->ascent + 1, |
2255 | xpixel + Width2Pixel(count) - 1, ypixel + font->ascent + 1); |
2255 | xpixel + Width2Pixel(count) - 1, ypixel + font->ascent + 1); |
2256 | } /* for (col....) */ |
2256 | } /* for (col....) */ |
2257 | } /* for (row....) */ |
2257 | } /* for (row....) */ |
2258 | |
2258 | |
… | |
… | |
2273 | } |
2273 | } |
2274 | else if (oldcursor.row >= 0) |
2274 | else if (oldcursor.row >= 0) |
2275 | { |
2275 | { |
2276 | #ifndef NO_CURSORCOLOR |
2276 | #ifndef NO_CURSORCOLOR |
2277 | if (ISSET_PIXCOLOR (Color_cursor)) |
2277 | if (ISSET_PIXCOLOR (Color_cursor)) |
2278 | XSetForeground (Xdisplay, TermWin.gc, PixColors[Color_cursor]); |
2278 | XSetForeground (display->display, TermWin.gc, PixColors[Color_cursor]); |
2279 | #endif |
2279 | #endif |
2280 | XDrawRectangle(Xdisplay, drawBuffer, TermWin.gc, |
2280 | XDrawRectangle(display->display, drawBuffer, TermWin.gc, |
2281 | Col2Pixel(oldcursor.col), |
2281 | Col2Pixel(oldcursor.col), |
2282 | Row2Pixel(oldcursor.row), |
2282 | Row2Pixel(oldcursor.row), |
2283 | (unsigned int)(Width2Pixel(cursorwidth) - 1), |
2283 | (unsigned int)(Width2Pixel(cursorwidth) - 1), |
2284 | (unsigned int)(Height2Pixel(1) - TermWin.lineSpace - 1)); |
2284 | (unsigned int)(Height2Pixel(1) - TermWin.lineSpace - 1)); |
2285 | } |
2285 | } |
… | |
… | |
2296 | if (clearfirst && TermWin.int_bwidth) |
2296 | if (clearfirst && TermWin.int_bwidth) |
2297 | /* |
2297 | /* |
2298 | * clear the whole screen height, note that width == 0 is treated |
2298 | * clear the whole screen height, note that width == 0 is treated |
2299 | * specially by XClearArea |
2299 | * specially by XClearArea |
2300 | */ |
2300 | */ |
2301 | XClearArea(Xdisplay, TermWin.vt, 0, 0, |
2301 | XClearArea(display->display, TermWin.vt, 0, 0, |
2302 | (unsigned int)TermWin.int_bwidth, |
2302 | (unsigned int)TermWin.int_bwidth, |
2303 | (unsigned int)TermWin_TotalHeight(), False); |
2303 | (unsigned int)TermWin_TotalHeight(), False); |
2304 | if (clearlast && TermWin.int_bwidth) |
2304 | if (clearlast && TermWin.int_bwidth) |
2305 | /* |
2305 | /* |
2306 | * clear the whole screen height, note that width == 0 is treated |
2306 | * clear the whole screen height, note that width == 0 is treated |
2307 | * specially by XClearArea |
2307 | * specially by XClearArea |
2308 | */ |
2308 | */ |
2309 | XClearArea(Xdisplay, TermWin.vt, |
2309 | XClearArea(display->display, TermWin.vt, |
2310 | TermWin.width + TermWin.int_bwidth, 0, |
2310 | TermWin.width + TermWin.int_bwidth, 0, |
2311 | (unsigned int)TermWin.int_bwidth, |
2311 | (unsigned int)TermWin.int_bwidth, |
2312 | (unsigned int)TermWin_TotalHeight(), False); |
2312 | (unsigned int)TermWin_TotalHeight(), False); |
2313 | if (refresh_type & SMOOTH_REFRESH) |
2313 | if (refresh_type & SMOOTH_REFRESH) |
2314 | XSync(Xdisplay, False); |
2314 | XSync(display->display, False); |
2315 | |
2315 | |
2316 | num_scr = 0; |
2316 | num_scr = 0; |
2317 | num_scr_allow = 1; |
2317 | num_scr_allow = 1; |
2318 | want_refresh = 0; /* screen is current */ |
2318 | want_refresh = 0; /* screen is current */ |
2319 | } |
2319 | } |
… | |
… | |
2337 | else |
2337 | else |
2338 | i = (int)(sizeof(TermWin.parent) / sizeof(Window)); |
2338 | i = (int)(sizeof(TermWin.parent) / sizeof(Window)); |
2339 | |
2339 | |
2340 | while (i--) |
2340 | while (i--) |
2341 | if (TermWin.parent[i] != None) |
2341 | if (TermWin.parent[i] != None) |
2342 | XClearWindow(Xdisplay, TermWin.parent[i]); |
2342 | XClearWindow(display->display, TermWin.parent[i]); |
2343 | } |
2343 | } |
2344 | #endif |
2344 | #endif |
2345 | |
2345 | |
2346 | XClearWindow (Xdisplay, TermWin.vt); |
2346 | XClearWindow (display->display, TermWin.vt); |
2347 | } |
2347 | } |
2348 | |
2348 | |
2349 | /* ------------------------------------------------------------------------- */ |
2349 | /* ------------------------------------------------------------------------- */ |
2350 | void |
2350 | void |
2351 | rxvt_term::scr_reverse_selection () |
2351 | rxvt_term::scr_reverse_selection () |
… | |
… | |
2514 | return 0; |
2514 | return 0; |
2515 | } |
2515 | } |
2516 | |
2516 | |
2517 | for (;;) |
2517 | for (;;) |
2518 | { |
2518 | { |
2519 | if (XGetWindowProperty(Xdisplay, win, prop, (long)(nread / 4), |
2519 | if (XGetWindowProperty(display->display, win, prop, (long)(nread / 4), |
2520 | (long)(PROP_SIZE / 4), delete_prop, |
2520 | (long)(PROP_SIZE / 4), delete_prop, |
2521 | AnyPropertyType, &ct.encoding, &ct.format, |
2521 | AnyPropertyType, &ct.encoding, &ct.format, |
2522 | &ct.nitems, &bytes_after, |
2522 | &ct.nitems, &bytes_after, |
2523 | &ct.value) != Success) |
2523 | &ct.value) != Success) |
2524 | break; |
2524 | break; |
… | |
… | |
2543 | /* |
2543 | /* |
2544 | * pass through again trying CUT_BUFFER0 if we've come from |
2544 | * pass through again trying CUT_BUFFER0 if we've come from |
2545 | * XConvertSelection() but nothing was presented |
2545 | * XConvertSelection() but nothing was presented |
2546 | */ |
2546 | */ |
2547 | D_SELECT((stderr, "rxvt_selection_request: pasting CUT_BUFFER0")); |
2547 | D_SELECT((stderr, "rxvt_selection_request: pasting CUT_BUFFER0")); |
2548 | selection_paste (Xroot, XA_CUT_BUFFER0, False); |
2548 | selection_paste (display->root, XA_CUT_BUFFER0, False); |
2549 | } |
2549 | } |
2550 | |
2550 | |
2551 | nread = -1; /* discount any previous stuff */ |
2551 | nread = -1; /* discount any previous stuff */ |
2552 | break; |
2552 | break; |
2553 | } |
2553 | } |
2554 | |
2554 | |
2555 | nread += ct.nitems; |
2555 | nread += ct.nitems; |
2556 | |
2556 | |
2557 | char **cl; |
2557 | char **cl; |
2558 | int cr; |
2558 | int cr; |
2559 | if (XmbTextPropertyToTextList (Xdisplay, &ct, &cl, |
2559 | if (XmbTextPropertyToTextList (display->display, &ct, &cl, |
2560 | &cr) >= 0 && cl) |
2560 | &cr) >= 0 && cl) |
2561 | { |
2561 | { |
2562 | for (int i = 0; i < cr; i++) |
2562 | for (int i = 0; i < cr; i++) |
2563 | paste ((unsigned char *)cl[i], STRLEN (cl[i])); |
2563 | paste ((unsigned char *)cl[i], STRLEN (cl[i])); |
2564 | |
2564 | |
… | |
… | |
2607 | int a, afmt; |
2607 | int a, afmt; |
2608 | Atom atype; |
2608 | Atom atype; |
2609 | unsigned long bytes_after, nitems; |
2609 | unsigned long bytes_after, nitems; |
2610 | unsigned char *s = NULL; |
2610 | unsigned char *s = NULL; |
2611 | |
2611 | |
2612 | a = XGetWindowProperty(Xdisplay, win, prop, 0L, 1L, False, |
2612 | a = XGetWindowProperty(display->display, win, prop, 0L, 1L, False, |
2613 | xa[XA_INCR], &atype, &afmt, &nitems, |
2613 | xa[XA_INCR], &atype, &afmt, &nitems, |
2614 | &bytes_after, &s); |
2614 | &bytes_after, &s); |
2615 | if (s) |
2615 | if (s) |
2616 | XFree(s); |
2616 | XFree(s); |
2617 | if (a != Success) |
2617 | if (a != Success) |
2618 | return; |
2618 | return; |
2619 | #ifndef __CYGWIN32__ |
2619 | #ifndef __CYGWIN32__ |
2620 | if (atype == xa[XA_INCR]) |
2620 | if (atype == xa[XA_INCR]) |
2621 | { /* start an INCR transfer */ |
2621 | { /* start an INCR transfer */ |
2622 | D_SELECT((stderr, "rxvt_selection_property: INCR: starting transfer")); |
2622 | D_SELECT((stderr, "rxvt_selection_property: INCR: starting transfer")); |
2623 | XDeleteProperty(Xdisplay, win, prop); |
2623 | XDeleteProperty(display->display, win, prop); |
2624 | XFlush(Xdisplay); |
2624 | XFlush(display->display); |
2625 | reget_time = 1; |
2625 | reget_time = 1; |
2626 | selection_wait = Sel_incr; |
2626 | selection_wait = Sel_incr; |
2627 | } |
2627 | } |
2628 | #endif |
2628 | #endif |
2629 | |
2629 | |
… | |
… | |
2684 | |
2684 | |
2685 | } |
2685 | } |
2686 | } |
2686 | } |
2687 | selection_wait = Sel_none; /* don't loop in rxvt_selection_paste() */ |
2687 | selection_wait = Sel_none; /* don't loop in rxvt_selection_paste() */ |
2688 | D_SELECT((stderr, "rxvt_selection_request: pasting CUT_BUFFER0")); |
2688 | D_SELECT((stderr, "rxvt_selection_request: pasting CUT_BUFFER0")); |
2689 | selection_paste (Xroot, XA_CUT_BUFFER0, False); |
2689 | selection_paste (display->root, XA_CUT_BUFFER0, False); |
2690 | } |
2690 | } |
2691 | |
2691 | |
2692 | int |
2692 | int |
2693 | rxvt_term::selection_request_other (Atom target, int selnum) |
2693 | rxvt_term::selection_request_other (Atom target, int selnum) |
2694 | { |
2694 | { |
… | |
… | |
2702 | sel = XA_PRIMARY; |
2702 | sel = XA_PRIMARY; |
2703 | else if (selnum == Sel_Secondary) |
2703 | else if (selnum == Sel_Secondary) |
2704 | sel = XA_SECONDARY; |
2704 | sel = XA_SECONDARY; |
2705 | else |
2705 | else |
2706 | sel = xa[XA_CLIPBOARD]; |
2706 | sel = xa[XA_CLIPBOARD]; |
2707 | if (XGetSelectionOwner(Xdisplay, sel) != None) |
2707 | if (XGetSelectionOwner(display->display, sel) != None) |
2708 | { |
2708 | { |
2709 | D_SELECT((stderr, "rxvt_selection_request_other: pasting %s", debug_xa_names[selnum])); |
2709 | D_SELECT((stderr, "rxvt_selection_request_other: pasting %s", debug_xa_names[selnum])); |
2710 | XConvertSelection(Xdisplay, sel, target, xa[XA_VT_SELECTION], |
2710 | XConvertSelection(display->display, sel, target, xa[XA_VT_SELECTION], |
2711 | TermWin.vt, selection_request_time); |
2711 | TermWin.vt, selection_request_time); |
2712 | return 1; |
2712 | return 1; |
2713 | } |
2713 | } |
2714 | return 0; |
2714 | return 0; |
2715 | } |
2715 | } |
… | |
… | |
2831 | if (selection.text) |
2831 | if (selection.text) |
2832 | free (selection.text); |
2832 | free (selection.text); |
2833 | |
2833 | |
2834 | selection.text = new_selection_text; |
2834 | selection.text = new_selection_text; |
2835 | |
2835 | |
2836 | XSetSelectionOwner(Xdisplay, XA_PRIMARY, TermWin.vt, tm); |
2836 | XSetSelectionOwner(display->display, XA_PRIMARY, TermWin.vt, tm); |
2837 | if (XGetSelectionOwner(Xdisplay, XA_PRIMARY) != TermWin.vt) |
2837 | if (XGetSelectionOwner(display->display, XA_PRIMARY) != TermWin.vt) |
2838 | rxvt_print_error("can't get primary selection"); |
2838 | rxvt_print_error("can't get primary selection"); |
2839 | |
2839 | |
2840 | |
2840 | |
2841 | { |
2841 | { |
2842 | XTextProperty ct; |
2842 | XTextProperty ct; |
2843 | char *cl = (char *)selection.text; |
2843 | char *cl = (char *)selection.text; |
2844 | |
2844 | |
2845 | if (XmbTextListToTextProperty(Xdisplay, &cl, 1, XStringStyle, &ct) >= 0) |
2845 | if (XmbTextListToTextProperty(display->display, &cl, 1, XStringStyle, &ct) >= 0) |
2846 | { |
2846 | { |
2847 | XChangeProperty(Xdisplay, Xroot, XA_CUT_BUFFER0, XA_STRING, 8, |
2847 | XChangeProperty(display->display, display->root, XA_CUT_BUFFER0, XA_STRING, 8, |
2848 | PropModeReplace, ct.value, ct.nitems); |
2848 | PropModeReplace, ct.value, ct.nitems); |
2849 | XFree (ct.value); |
2849 | XFree (ct.value); |
2850 | } |
2850 | } |
2851 | else |
2851 | else |
2852 | XChangeProperty(Xdisplay, Xroot, XA_CUT_BUFFER0, XA_STRING, 8, |
2852 | XChangeProperty(display->display, display->root, XA_CUT_BUFFER0, XA_STRING, 8, |
2853 | PropModeReplace, selection.text, (int)selection.len); |
2853 | PropModeReplace, selection.text, (int)selection.len); |
2854 | } |
2854 | } |
2855 | |
2855 | |
2856 | selection_time = tm; |
2856 | selection_time = tm; |
2857 | D_SELECT((stderr, "rxvt_selection_make(): selection.len=%d", selection.len)); |
2857 | D_SELECT((stderr, "rxvt_selection_make(): selection.len=%d", selection.len)); |
… | |
… | |
3371 | /* |
3371 | /* |
3372 | * Respond to a request for our current selection |
3372 | * Respond to a request for our current selection |
3373 | * EXT: SelectionRequest |
3373 | * EXT: SelectionRequest |
3374 | */ |
3374 | */ |
3375 | void |
3375 | void |
3376 | rxvt_term::selection_send (const XSelectionRequestEvent *rq) |
3376 | rxvt_term::selection_send (const XSelectionRequestEvent &rq) |
3377 | { |
3377 | { |
3378 | XSelectionEvent ev; |
3378 | XSelectionEvent ev; |
3379 | XTextProperty ct; |
3379 | XTextProperty ct; |
3380 | XICCEncodingStyle style; |
3380 | XICCEncodingStyle style; |
3381 | Atom target; |
3381 | Atom target; |
3382 | |
3382 | |
3383 | ev.type = SelectionNotify; |
3383 | ev.type = SelectionNotify; |
3384 | ev.property = None; |
3384 | ev.property = None; |
3385 | ev.display = rq->display; |
3385 | ev.display = rq.display; |
3386 | ev.requestor = rq->requestor; |
3386 | ev.requestor = rq.requestor; |
3387 | ev.selection = rq->selection; |
3387 | ev.selection = rq.selection; |
3388 | ev.target = rq->target; |
3388 | ev.target = rq.target; |
3389 | ev.time = rq->time; |
3389 | ev.time = rq.time; |
3390 | |
3390 | |
3391 | if (rq->target == xa[XA_TARGETS]) |
3391 | if (rq.target == xa[XA_TARGETS]) |
3392 | { |
3392 | { |
3393 | Atom32 target_list[5]; |
3393 | Atom32 target_list[5]; |
3394 | Atom32 *target = target_list; |
3394 | Atom32 *target = target_list; |
3395 | |
3395 | |
3396 | *target++ = (Atom32) xa[XA_TARGETS]; |
3396 | *target++ = (Atom32) xa[XA_TARGETS]; |
… | |
… | |
3398 | *target++ = (Atom32) xa[XA_TEXT]; |
3398 | *target++ = (Atom32) xa[XA_TEXT]; |
3399 | *target++ = (Atom32) xa[XA_COMPOUND_TEXT]; |
3399 | *target++ = (Atom32) xa[XA_COMPOUND_TEXT]; |
3400 | #if X_HAVE_UTF8_STRING |
3400 | #if X_HAVE_UTF8_STRING |
3401 | *target++ = (Atom32) xa[XA_UTF8_STRING]; |
3401 | *target++ = (Atom32) xa[XA_UTF8_STRING]; |
3402 | #endif |
3402 | #endif |
3403 | XChangeProperty(Xdisplay, rq->requestor, rq->property, XA_ATOM, |
3403 | XChangeProperty(display->display, rq.requestor, rq.property, XA_ATOM, |
3404 | (8 * sizeof(target_list[0])), PropModeReplace, |
3404 | (8 * sizeof(target_list[0])), PropModeReplace, |
3405 | (unsigned char *)target_list, |
3405 | (unsigned char *)target_list, |
3406 | target - target_list); |
3406 | target - target_list); |
3407 | ev.property = rq->property; |
3407 | ev.property = rq.property; |
3408 | } |
3408 | } |
3409 | else if (rq->target == xa[XA_MULTIPLE]) |
3409 | else if (rq.target == xa[XA_MULTIPLE]) |
3410 | { |
3410 | { |
3411 | /* TODO: Handle MULTIPLE */ |
3411 | /* TODO: Handle MULTIPLE */ |
3412 | } |
3412 | } |
3413 | else if (rq->target == xa[XA_TIMESTAMP] && selection.text) |
3413 | else if (rq.target == xa[XA_TIMESTAMP] && selection.text) |
3414 | { |
3414 | { |
3415 | XChangeProperty(Xdisplay, rq->requestor, rq->property, XA_INTEGER, |
3415 | XChangeProperty(display->display, rq.requestor, rq.property, XA_INTEGER, |
3416 | (8 * sizeof(Time)), PropModeReplace, |
3416 | (8 * sizeof(Time)), PropModeReplace, |
3417 | (unsigned char *)&selection_time, 1); |
3417 | (unsigned char *)&selection_time, 1); |
3418 | ev.property = rq->property; |
3418 | ev.property = rq.property; |
3419 | } |
3419 | } |
3420 | else if (rq->target == XA_STRING |
3420 | else if (rq.target == XA_STRING |
3421 | || rq->target == xa[XA_TEXT] |
3421 | || rq.target == xa[XA_TEXT] |
3422 | || rq->target == xa[XA_COMPOUND_TEXT] |
3422 | || rq.target == xa[XA_COMPOUND_TEXT] |
3423 | || rq->target == xa[XA_UTF8_STRING] |
3423 | || rq.target == xa[XA_UTF8_STRING] |
3424 | ) |
3424 | ) |
3425 | { |
3425 | { |
3426 | short freect = 0; |
3426 | short freect = 0; |
3427 | int selectlen; |
3427 | int selectlen; |
3428 | char *cl; |
3428 | char *cl; |
3429 | |
3429 | |
3430 | target = rq->target; |
3430 | target = rq.target; |
3431 | |
3431 | |
3432 | if (target == XA_STRING) |
3432 | if (target == XA_STRING) |
3433 | // we actually don't do XA_STRING, but who cares, as i18n clients |
3433 | // we actually don't do XA_STRING, but who cares, as i18n clients |
3434 | // will ask for another format anyways. |
3434 | // will ask for another format anyways. |
3435 | style = XStringStyle; |
3435 | style = XStringStyle; |
… | |
… | |
3456 | { |
3456 | { |
3457 | cl = ""; |
3457 | cl = ""; |
3458 | selectlen = 0; |
3458 | selectlen = 0; |
3459 | } |
3459 | } |
3460 | |
3460 | |
3461 | if (XmbTextListToTextProperty(Xdisplay, &cl, 1, style, &ct) >= 0) |
3461 | if (XmbTextListToTextProperty(display->display, &cl, 1, style, &ct) >= 0) |
3462 | freect = 1; |
3462 | freect = 1; |
3463 | else |
3463 | else |
3464 | { |
3464 | { |
3465 | /* if we failed to convert then send it raw */ |
3465 | /* if we failed to convert then send it raw */ |
3466 | ct.value = (unsigned char *)cl; |
3466 | ct.value = (unsigned char *)cl; |
3467 | ct.nitems = selectlen; |
3467 | ct.nitems = selectlen; |
3468 | } |
3468 | } |
3469 | |
3469 | |
3470 | XChangeProperty(Xdisplay, rq->requestor, rq->property, |
3470 | XChangeProperty (display->display, rq.requestor, rq.property, |
3471 | target, 8, PropModeReplace, |
3471 | target, 8, PropModeReplace, |
3472 | ct.value, (int)ct.nitems); |
3472 | ct.value, (int)ct.nitems); |
3473 | ev.property = rq->property; |
3473 | ev.property = rq.property; |
3474 | |
3474 | |
3475 | if (freect) |
3475 | if (freect) |
3476 | XFree (ct.value); |
3476 | XFree (ct.value); |
3477 | } |
3477 | } |
3478 | XSendEvent(Xdisplay, rq->requestor, False, 0L, (XEvent *)&ev); |
3478 | XSendEvent (display->display, rq.requestor, False, 0L, (XEvent *)&ev); |
3479 | } |
3479 | } |
3480 | |
3480 | |
3481 | /* ------------------------------------------------------------------------- * |
3481 | /* ------------------------------------------------------------------------- * |
3482 | * MOUSE ROUTINES * |
3482 | * MOUSE ROUTINES * |
3483 | * ------------------------------------------------------------------------- */ |
3483 | * ------------------------------------------------------------------------- */ |
… | |
… | |
3499 | void |
3499 | void |
3500 | rxvt_term::set_position (XPoint *pos) |
3500 | rxvt_term::set_position (XPoint *pos) |
3501 | { |
3501 | { |
3502 | XWindowAttributes xwa; |
3502 | XWindowAttributes xwa; |
3503 | |
3503 | |
3504 | XGetWindowAttributes (Xdisplay, TermWin.vt, &xwa); |
3504 | XGetWindowAttributes (display->display, TermWin.vt, &xwa); |
3505 | pos->x = Col2Pixel (screen.cur.col) + xwa.x; |
3505 | pos->x = Col2Pixel (screen.cur.col) + xwa.x; |
3506 | pos->y = Height2Pixel ((screen.cur.row + 1)) + xwa.y - TermWin.lineSpace; |
3506 | pos->y = Height2Pixel ((screen.cur.row + 1)) + xwa.y - TermWin.lineSpace; |
3507 | } |
3507 | } |
3508 | |
3508 | |
3509 | #endif |
3509 | #endif |