summaryrefslogtreecommitdiffstats
path: root/tv
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2019-01-29 01:28:36 +0100
committertv <tv@krebsco.de>2019-01-29 01:28:36 +0100
commitfd41443c9047b91e8ca1952881a096a2270f8643 (patch)
tree8322255a1a3b9c46f4ad806784cf83f62c452cee /tv
parent35acdb3ff498856f1301b92fe9d7e5c86d51c441 (diff)
tv rxvt_unicode: finish running selection
Diffstat (limited to 'tv')
-rw-r--r--tv/5pkgs/override/default.nix6
-rw-r--r--tv/5pkgs/override/rxvt_unicode/default.nix6
-rw-r--r--tv/5pkgs/override/rxvt_unicode/finish-running-selection.patch41
3 files changed, 53 insertions, 0 deletions
diff --git a/tv/5pkgs/override/default.nix b/tv/5pkgs/override/default.nix
new file mode 100644
index 00000000..cd7c5645
--- /dev/null
+++ b/tv/5pkgs/override/default.nix
@@ -0,0 +1,6 @@
+with import <stockholm/lib>;
+self: super: {
+ rxvt_unicode = self.callPackage ./rxvt_unicode {
+ rxvt_unicode = super.rxvt_unicode;
+ };
+}
diff --git a/tv/5pkgs/override/rxvt_unicode/default.nix b/tv/5pkgs/override/rxvt_unicode/default.nix
new file mode 100644
index 00000000..858a46be
--- /dev/null
+++ b/tv/5pkgs/override/rxvt_unicode/default.nix
@@ -0,0 +1,6 @@
+{ rxvt_unicode }:
+rxvt_unicode.overrideAttrs (old: {
+ patches = old.patches ++ [
+ ./finish-running-selection.patch
+ ];
+})
diff --git a/tv/5pkgs/override/rxvt_unicode/finish-running-selection.patch b/tv/5pkgs/override/rxvt_unicode/finish-running-selection.patch
new file mode 100644
index 00000000..a342ccf5
--- /dev/null
+++ b/tv/5pkgs/override/rxvt_unicode/finish-running-selection.patch
@@ -0,0 +1,41 @@
+diff --git a/src/rxvttoolkit.h b/src/rxvttoolkit.h
+index 56c9a3f..429055d 100644
+--- a/src/rxvttoolkit.h
++++ b/src/rxvttoolkit.h
+@@ -384,6 +384,7 @@ struct rxvt_selection
+ {
+ rxvt_selection (rxvt_display *disp, int selnum, Time tm, Window win, Atom prop, rxvt_term *term);
+ void run ();
++ void finish (char *data = 0, unsigned int len = 0);
+ ~rxvt_selection ();
+
+ rxvt_term *term; // terminal to paste to, may be 0
+@@ -404,7 +405,6 @@ private:
+ void timer_cb (ev::timer &w, int revents); ev::timer timer_ev;
+ void x_cb (XEvent &xev); xevent_watcher x_ev;
+
+- void finish (char *data = 0, unsigned int len = 0);
+ void stop ();
+ bool request (Atom target, int selnum);
+ void handle_selection (Window win, Atom prop, bool delete_prop);
+diff --git a/src/screen.C b/src/screen.C
+index 9eb375a..77e7109 100644
+--- a/src/screen.C
++++ b/src/screen.C
+@@ -2736,11 +2736,11 @@ rxvt_term::paste (char *data, unsigned int len) NOTHROW
+ void
+ rxvt_term::selection_request (Time tm, int selnum) NOTHROW
+ {
+- if (!selection_req)
+- {
+- selection_req = new rxvt_selection (display, selnum, tm, vt, xa[XA_VT_SELECTION], this);
+- selection_req->run ();
+- }
++ if (selection_req)
++ selection_req->finish ();
++
++ selection_req = new rxvt_selection (display, selnum, tm, vt, xa[XA_VT_SELECTION], this);
++ selection_req->run ();
+ }
+
+ /* ------------------------------------------------------------------------- */