Mercurial > dwindows
diff os2/dw.c @ 155:840c54766306
Another sync of sources, enhancements to dw_window_set_color() ... works
completely on Windows now and added DW_CLR_DEFAULT. Also color pairs don't
need to be of the same type anymore.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Thu, 07 Nov 2002 22:31:02 +0000 |
parents | 7f8fcce45bdd |
children | 63258b34e70d |
line wrap: on
line diff
--- a/os2/dw.c Thu Nov 07 06:21:29 2002 +0000 +++ b/os2/dw.c Thu Nov 07 22:31:02 2002 +0000 @@ -1384,6 +1384,8 @@ #define ENTRY_CUT 1001 #define ENTRY_COPY 1002 #define ENTRY_PASTE 1003 +#define ENTRY_UNDO 1004 +#define ENTRY_SALL 1005 /* Originally just intended for entryfields, it now serves as a generic * procedure for handling TAB presses to change input focus on controls. @@ -1413,13 +1415,21 @@ HMENUI hwndMenu = dw_menu_new(0L); long x, y; + if(strncmp(tmpbuf, "#10", 4)==0 && !WinSendMsg(hWnd, MLM_QUERYREADONLY, 0, 0)) + { + menuitem = dw_menu_append_item(hwndMenu, "Undo", ENTRY_UNDO, 0L, TRUE, FALSE, 0L); + dw_menu_append_item(hwndMenu, "", 0L, 0L, TRUE, FALSE, 0L); + } menuitem = dw_menu_append_item(hwndMenu, "Copy", ENTRY_COPY, 0L, TRUE, FALSE, 0L); if(strncmp(tmpbuf, "#10", 4)!=0 || (strncmp(tmpbuf, "#10", 4)==0 && !WinSendMsg(hWnd, MLM_QUERYREADONLY, 0, 0))) { menuitem = dw_menu_append_item(hwndMenu, "Cut", ENTRY_CUT, 0L, TRUE, FALSE, 0L); menuitem = dw_menu_append_item(hwndMenu, "Paste", ENTRY_PASTE, 0L, TRUE, FALSE, 0L); } - + dw_menu_append_item(hwndMenu, "", 0L, 0L, TRUE, FALSE, 0L); + menuitem = dw_menu_append_item(hwndMenu, "Select All", ENTRY_SALL, 0L, TRUE, FALSE, 0L); + + WinSetFocus(HWND_DESKTOP, hWnd); dw_pointer_query_pos(&x, &y); dw_menu_popup(&hwndMenu, hWnd, x, y); } @@ -1439,6 +1449,13 @@ return WinSendMsg(hWnd, MLM_COPY, 0, 0); case ENTRY_PASTE: return WinSendMsg(hWnd, MLM_PASTE, 0, 0); + case ENTRY_UNDO: + return WinSendMsg(hWnd, MLM_UNDO, 0, 0); + case ENTRY_SALL: + { + ULONG len = (ULONG)WinSendMsg(hWnd, MLM_QUERYTEXTLENGTH, 0, 0); + return WinSendMsg(hWnd, MLM_SETSEL, 0, (MPARAM)len); + } } } else /* Other */ @@ -1461,6 +1478,11 @@ return WinSendMsg(handle, EM_COPY, 0, 0); case ENTRY_PASTE: return WinSendMsg(handle, EM_PASTE, 0, 0); + case ENTRY_SALL: + { + LONG len = WinQueryWindowTextLength(hWnd); + return WinSendMsg(hWnd, EM_SETSEL, MPFROM2SHORT(0, (SHORT)len), 0); + } } } } @@ -1563,7 +1585,7 @@ { USHORT pos = SHORT1FROMMP(mp2); - return WinSendMsg(hWnd, msg, mp1, MPFROM2SHORT(pos, SB_SLIDERPOSITION)); + WinSendMsg(hWnd, msg, mp1, MPFROM2SHORT(pos, SB_SLIDERPOSITION)); } break; } @@ -3204,6 +3226,15 @@ WinSetPresParam(handle, PP_FOREGROUNDCOLOR, sizeof(RGB2), &rgb2); } + else if(fore != DW_CLR_DEFAULT) + { + if(fore == DW_CLR_BLACK) + fore = CLR_BLACK; + if(fore == DW_CLR_WHITE) + fore = CLR_WHITE; + + WinSetPresParam(handle, PP_FOREGROUNDCOLORINDEX, sizeof(ULONG), &fore); + } if((back & DW_RGB_COLOR) == DW_RGB_COLOR) { RGB2 rgb2; @@ -3216,22 +3247,16 @@ WinSetPresParam(handle, PP_BACKGROUNDCOLOR, sizeof(RGB2), &rgb2); return 0; } - if((fore & DW_RGB_COLOR) == DW_RGB_COLOR) - return 0; - - /* Slight conversion */ - if(fore == DW_CLR_BLACK) - fore = CLR_BLACK; - if(fore == DW_CLR_WHITE) - fore = CLR_WHITE; - - if(back == DW_CLR_BLACK) - back = CLR_BLACK; - if(back == DW_CLR_WHITE) - back = CLR_WHITE; - - return (WinSetPresParam(handle, PP_FOREGROUNDCOLORINDEX, sizeof(ULONG), &fore) | - WinSetPresParam(handle, PP_BACKGROUNDCOLORINDEX, sizeof(ULONG), &back)); + else if(back != DW_CLR_DEFAULT) + { + if(back == DW_CLR_BLACK) + back = CLR_BLACK; + if(back == DW_CLR_WHITE) + back = CLR_WHITE; + + WinSetPresParam(handle, PP_BACKGROUNDCOLORINDEX, sizeof(ULONG), &back); + } + return 0; } /*