wineconsole[5/6]: when selection with the mouse, any key except for Enter should cancel the selection

Eric Pouech eric.pouech at wanadoo.fr
Wed Oct 18 14:33:55 CDT 2006


Mikołaj Zalewski wrote:

>
>------------------------------------------------------------------------
>
>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;
> };
>  
>
>------------------------------------------------------------------------
>
>
>  
>
as a principle, why do oppose keyboard selection to mouse selection
looks to me you could in principle do both... so any key except return, 
arrow keys should end the selection
and you woun't need the extraneous mouse_selection



More information about the wine-devel mailing list