Revision: 2806
http://tmux.svn.sourceforge.net/tmux/?rev=2806&view=rev
Author: tcunha
Date: 2012-05-22 21:04:25 +0000 (Tue, 22 May 2012)
Log Message:
-----------
Sync OpenBSD patchset 1120:
Store mouse data in tty structure not on the stack.
Modified Paths:
--------------
trunk/tmux.h
trunk/tty-keys.c
Modified: trunk/tmux.h
===================================================================
--- trunk/tmux.h 2012-05-22 21:03:25 UTC (rev 2805)
+++ trunk/tmux.h 2012-05-22 21:04:25 UTC (rev 2806)
@@ -1044,6 +1044,29 @@
RB_HEAD(sessions, session);
ARRAY_DECL(sessionslist, struct session *);
+/*
+ * Mouse input. xterm mouse mode is fairly silly. Buttons are in the bottom two
+ * bits: 0 = button 1; 1 = button 2; 2 = button 3; 3 = buttons released. Bits
+ * 3, 4 and 5 are for keys. Bit 6 is set for dragging and 7 for mouse buttons 4
+ * and 5.
+ */
+struct mouse_event {
+ u_int b;
+#define MOUSE_1 0
+#define MOUSE_2 1
+#define MOUSE_3 2
+#define MOUSE_UP 3
+#define MOUSE_BUTTON 3
+#define MOUSE_SHIFT 4
+#define MOUSE_ESCAPE 8
+#define MOUSE_CTRL 16
+#define MOUSE_DRAG 32
+#define MOUSE_45 64
+#define MOUSE_RESIZE_PANE 128 /* marker for resizing */
+ u_int x;
+ u_int y;
+};
+
/* TTY information. */
struct tty_key {
char ch;
@@ -1111,6 +1134,7 @@
int term_flags;
+ struct mouse_event mouse_event;
void (*key_callback)(int, struct mouse_event *, void *);
void *key_data;
struct event key_timer;
@@ -1147,29 +1171,6 @@
u_int last_width;
};
-/*
- * Mouse input. xterm mouse mode is fairly silly. Buttons are in the bottom two
- * bits: 0 = button 1; 1 = button 2; 2 = button 3; 3 = buttons released. Bits
- * 3, 4 and 5 are for keys. Bit 6 is set for dragging and 7 for mouse buttons 4
- * and 5.
- */
-struct mouse_event {
- u_int b;
-#define MOUSE_1 0
-#define MOUSE_2 1
-#define MOUSE_3 2
-#define MOUSE_UP 3
-#define MOUSE_BUTTON 3
-#define MOUSE_SHIFT 4
-#define MOUSE_ESCAPE 8
-#define MOUSE_CTRL 16
-#define MOUSE_DRAG 32
-#define MOUSE_45 64
-#define MOUSE_RESIZE_PANE 128 /* marker for resizing */
- u_int x;
- u_int y;
-};
-
/* Saved message entry. */
struct message_entry {
char *msg;
@@ -1220,7 +1221,7 @@
#define CLIENT_EXIT 0x4
#define CLIENT_REDRAW 0x8
#define CLIENT_STATUS 0x10
-#define CLIENT_REPEAT 0x20 /* allow command to repeat within repeat time */
+#define CLIENT_REPEAT 0x20 /* allow command to repeat within repeat time */
#define CLIENT_SUSPENDED 0x40
#define CLIENT_BAD 0x80
#define CLIENT_IDENTIFY 0x100
Modified: trunk/tty-keys.c
===================================================================
--- trunk/tty-keys.c 2012-05-22 21:03:25 UTC (rev 2805)
+++ trunk/tty-keys.c 2012-05-22 21:04:25 UTC (rev 2806)
@@ -40,8 +40,7 @@
struct tty_key *, const char *, size_t, size_t *);
struct tty_key *tty_keys_find(struct tty *, const char *, size_t, size_t *);
void tty_keys_callback(int, short, void *);
-int tty_keys_mouse(struct tty *,
- const char *, size_t, size_t *, struct mouse_event *);
+int tty_keys_mouse(struct tty *, const char *, size_t, size_t *);
int tty_keys_device(struct tty *, const char *, size_t, size_t *);
struct tty_key_ent {
@@ -434,13 +433,12 @@
int
tty_keys_next(struct tty *tty)
{
- struct tty_key *tk;
- struct timeval tv;
- struct mouse_event mouse;
- const char *buf;
- size_t len, size;
- cc_t bspace;
- int key, delay;
+ struct tty_key *tk;
+ struct timeval tv;
+ const char *buf;
+ size_t len, size;
+ cc_t bspace;
+ int key, delay;
buf = EVBUFFER_DATA(tty->event->input);
len = EVBUFFER_LENGTH(tty->event->input);
@@ -477,7 +475,7 @@
}
/* Is this a mouse key press? */
- switch (tty_keys_mouse(tty, buf, len, &size, &mouse)) {
+ switch (tty_keys_mouse(tty, buf, len, &size)) {
case 0: /* yes */
evbuffer_drain(tty->event->input, size);
key = KEYC_MOUSE;
@@ -582,7 +580,7 @@
evtimer_del(&tty->key_timer);
if (key != KEYC_NONE)
- tty->key_callback(key, &mouse, tty->key_data);
+ tty->key_callback(key, &tty->mouse_event, tty->key_data);
tty->flags &= ~TTY_ESCAPE;
return (1);
@@ -607,11 +605,11 @@
* (probably a mouse sequence but need more data).
*/
int
-tty_keys_mouse(struct tty *tty,
- const char *buf, size_t len, size_t *size, struct mouse_event *m)
+tty_keys_mouse(struct tty *tty, const char *buf, size_t len, size_t *size)
{
- struct utf8_data utf8data;
- u_int i, value;
+ struct mouse_event *m = &tty->mouse_event;
+ struct utf8_data utf8data;
+ u_int i, value;
/*
* Standard mouse sequences are \033[M followed by three characters
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
tmux-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-cvs