… | |
… | |
297 | ///////////////////////////////////////////////////////////////////////////// |
297 | ///////////////////////////////////////////////////////////////////////////// |
298 | |
298 | |
299 | rxvt_display::rxvt_display (const char *id) |
299 | rxvt_display::rxvt_display (const char *id) |
300 | : refcounted (id) |
300 | : refcounted (id) |
301 | , selection_owner (0) |
301 | , selection_owner (0) |
|
|
302 | , clipboard_owner (0) |
302 | { |
303 | { |
303 | x_ev .set<rxvt_display, &rxvt_display::x_cb > (this); |
304 | x_ev .set<rxvt_display, &rxvt_display::x_cb > (this); |
304 | flush_ev.set<rxvt_display, &rxvt_display::flush_cb> (this); |
305 | flush_ev.set<rxvt_display, &rxvt_display::flush_cb> (this); |
305 | } |
306 | } |
306 | |
307 | |
… | |
… | |
600 | xw[w->active - 1] = 0; |
601 | xw[w->active - 1] = 0; |
601 | w->active = 0; |
602 | w->active = 0; |
602 | } |
603 | } |
603 | } |
604 | } |
604 | |
605 | |
605 | void rxvt_display::set_selection_owner (rxvt_term *owner) |
606 | void rxvt_display::set_selection_owner (rxvt_term *owner, bool clipboard) |
606 | { |
607 | { |
|
|
608 | rxvt_term * &cur_owner = !clipboard ? selection_owner : clipboard_owner; |
|
|
609 | |
607 | if (selection_owner && selection_owner != owner) |
610 | if (cur_owner && cur_owner != owner) |
608 | { |
611 | { |
609 | rxvt_term *owner = selection_owner; |
|
|
610 | |
|
|
611 | owner->selection_clear (); |
612 | cur_owner->selection_clear (clipboard); |
612 | owner->flush (); |
613 | cur_owner->flush (); |
613 | } |
614 | } |
614 | |
615 | |
615 | selection_owner = owner; |
616 | cur_owner = owner; |
616 | } |
617 | } |
617 | |
618 | |
618 | #ifdef USE_XIM |
619 | #ifdef USE_XIM |
619 | |
620 | |
620 | void rxvt_display::reg (im_watcher *w) |
621 | void rxvt_display::reg (im_watcher *w) |