~mdw
/
sgt
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Rectangular-block selection. Enabled by Alt+drag, unless you
[sgt/putty]
/
window.c
diff --git
a/window.c
b/window.c
index
006e5ff
..
9e09223
100644
(file)
--- a/
window.c
+++ b/
window.c
@@
-1335,13
+1335,13
@@
static void reset_window(int reinit) {
}
}
}
}
-static void click(Mouse_Button b, int x, int y, int shift, int ctrl)
+static void click(Mouse_Button b, int x, int y, int shift, int ctrl
, int alt
)
{
int thistime = GetMessageTime();
if (send_raw_mouse && !(cfg.mouse_override && shift)) {
lastbtn = MBT_NOTHING;
{
int thistime = GetMessageTime();
if (send_raw_mouse && !(cfg.mouse_override && shift)) {
lastbtn = MBT_NOTHING;
- term_mouse(b, MA_CLICK, x, y, shift, ctrl);
+ term_mouse(b, MA_CLICK, x, y, shift, ctrl
, alt
);
return;
}
return;
}
@@
-1354,7
+1354,7
@@
static void click(Mouse_Button b, int x, int y, int shift, int ctrl)
lastact = MA_CLICK;
}
if (lastact != MA_NOTHING)
lastact = MA_CLICK;
}
if (lastact != MA_NOTHING)
- term_mouse(b, lastact, x, y, shift, ctrl);
+ term_mouse(b, lastact, x, y, shift, ctrl
, alt
);
lasttime = thistime;
}
lasttime = thistime;
}
@@
-1385,6
+1385,19
@@
static void show_mouseptr(int show)
cursor_visible = show;
}
cursor_visible = show;
}
+static int is_alt_pressed(void)
+{
+ BYTE keystate[256];
+ int r = GetKeyboardState(keystate);
+ if (!r)
+ return FALSE;
+ if (keystate[VK_MENU] & 0x80)
+ return TRUE;
+ if (keystate[VK_RMENU] & 0x80)
+ return TRUE;
+ return FALSE;
+}
+
static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
@@
-1730,14
+1743,15
@@
static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
if (send_raw_mouse) {
/* send a mouse-down followed by a mouse up */
if (send_raw_mouse) {
/* send a mouse-down followed by a mouse up */
+
term_mouse(b,
MA_CLICK,
TO_CHR_X(X_POS(lParam)),
TO_CHR_Y(Y_POS(lParam)), wParam & MK_SHIFT,
term_mouse(b,
MA_CLICK,
TO_CHR_X(X_POS(lParam)),
TO_CHR_Y(Y_POS(lParam)), wParam & MK_SHIFT,
- wParam & MK_CONTROL);
+ wParam & MK_CONTROL
, is_alt_pressed()
);
term_mouse(b, MA_RELEASE, TO_CHR_X(X_POS(lParam)),
TO_CHR_Y(Y_POS(lParam)), wParam & MK_SHIFT,
term_mouse(b, MA_RELEASE, TO_CHR_X(X_POS(lParam)),
TO_CHR_Y(Y_POS(lParam)), wParam & MK_SHIFT,
- wParam & MK_CONTROL);
+ wParam & MK_CONTROL
, is_alt_pressed()
);
} else {
/* trigger a scroll */
term_scroll(0,
} else {
/* trigger a scroll */
term_scroll(0,
@@
-1754,6
+1768,7
@@
static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
case WM_RBUTTONUP:
{
int button, press;
case WM_RBUTTONUP:
{
int button, press;
+
switch (message) {
case WM_LBUTTONDOWN:
button = MBT_LEFT;
switch (message) {
case WM_LBUTTONDOWN:
button = MBT_LEFT;
@@
-1786,13
+1801,14
@@
static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
if (press) {
click(button,
TO_CHR_X(X_POS(lParam)), TO_CHR_Y(Y_POS(lParam)),
if (press) {
click(button,
TO_CHR_X(X_POS(lParam)), TO_CHR_Y(Y_POS(lParam)),
- wParam & MK_SHIFT, wParam & MK_CONTROL);
+ wParam & MK_SHIFT, wParam & MK_CONTROL,
+ is_alt_pressed());
SetCapture(hwnd);
} else {
term_mouse(button, MA_RELEASE,
TO_CHR_X(X_POS(lParam)),
TO_CHR_Y(Y_POS(lParam)), wParam & MK_SHIFT,
SetCapture(hwnd);
} else {
term_mouse(button, MA_RELEASE,
TO_CHR_X(X_POS(lParam)),
TO_CHR_Y(Y_POS(lParam)), wParam & MK_SHIFT,
- wParam & MK_CONTROL);
+ wParam & MK_CONTROL
, is_alt_pressed()
);
ReleaseCapture();
}
}
ReleaseCapture();
}
}
@@
-1815,7
+1831,7
@@
static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
b = MBT_RIGHT;
term_mouse(b, MA_DRAG, TO_CHR_X(X_POS(lParam)),
TO_CHR_Y(Y_POS(lParam)), wParam & MK_SHIFT,
b = MBT_RIGHT;
term_mouse(b, MA_DRAG, TO_CHR_X(X_POS(lParam)),
TO_CHR_Y(Y_POS(lParam)), wParam & MK_SHIFT,
- wParam & MK_CONTROL);
+ wParam & MK_CONTROL
, is_alt_pressed()
);
}
return 0;
case WM_NCMOUSEMOVE:
}
return 0;
case WM_NCMOUSEMOVE: