wineconsole[5/6]: when selection with the mouse, any key except for
Enter should cancel the selection
Mikołaj Zalewski
mikolaj at zalewski.pl
Wed Oct 18 08:55:40 CDT 2006
-------------- next part --------------
diff --git a/programs/wineconsole/user.c b/programs/wineconsole/user.c
index c4250e5..19a1625 100644
--- a/programs/wineconsole/user.c
+++ b/programs/wineconsole/user.c
@@ -705,6 +705,12 @@ static void WCUSER_CopySelectionToClipbo
CloseClipboard();
}
+static void WCUSER_EndSelection(const struct inner_data* data)
+{
+ PRIVATE(data)->has_selection = FALSE;
+ WCUSER_SetSelection(data, 0);
+}
+
/******************************************************************
* WCUSER_PasteFromClipboard
*
@@ -935,15 +941,22 @@ static void WCUSER_HandleSelectionKey(st
if (!down) return;
+ if (PRIVATE(data)->mouse_selection)
+ {
+ if (state == 0 && wParam == VK_RETURN)
+ WCUSER_CopySelectionToClipboard(data);
+ WCUSER_EndSelection(data);
+ return;
+ }
+
switch (state)
{
case 0:
switch (wParam)
{
case VK_RETURN:
- PRIVATE(data)->has_selection = FALSE;
- WCUSER_SetSelection(data, 0);
WCUSER_CopySelectionToClipboard(data);
+ WCUSER_EndSelection(data);
break;
case VK_RIGHT:
c1 = PRIVATE(data)->selectPt1;
@@ -1131,6 +1144,7 @@ static LRESULT CALLBACK WCUSER_Proc(HWND
SetCapture(PRIVATE(data)->hWnd);
WCUSER_SetSelection(data, 0);
PRIVATE(data)->has_selection = TRUE;
+ PRIVATE(data)->mouse_selection = TRUE;
}
}
else
@@ -1292,6 +1306,7 @@ static LRESULT CALLBACK WCUSER_Proc(HWND
PRIVATE(data)->selectPt2.X = PRIVATE(data)->selectPt2.Y = 0;
WCUSER_SetSelection(data, 0);
PRIVATE(data)->has_selection = TRUE;
+ PRIVATE(data)->mouse_selection = FALSE;
break;
case IDS_COPY:
if (PRIVATE(data)->has_selection)
diff --git a/programs/wineconsole/winecon_user.h b/programs/wineconsole/winecon_user.h
index aa86338..1744fcd 100644
--- a/programs/wineconsole/winecon_user.h
+++ b/programs/wineconsole/winecon_user.h
@@ -37,6 +37,7 @@ struct inner_data_user {
HBITMAP cursor_bitmap; /* bitmap used for the caret */
BOOL has_selection; /* an area is being selected (selectPt[12] are edges of the rect) */
+ BOOL mouse_selection;/* the selection was made with a mouse */
COORD selectPt1; /* start (and end) point of a mouse selection */
COORD selectPt2;
};
--
1.4.2.3
More information about the wine-patches
mailing list