Release 970329
Fri Mar 28 14:18:32 1997 Alexandre Julliard <julliard@lrc.epfl.ch>
* [misc/main.c] [ANNOUNCE]
Update the list of contributors. Please let me know if I forgot
someone.
* [controls/combo.c]
Fixed bug in CB_DIR16 handling.
Use correct text color in CBPaintText.
* [controls/listbox.c]
Fixed WM_CTLCOLOR handling.
* [windows/winproc.c]
Added translation for EM_*32 messages.
Mon Mar 24 01:31:52 1997 Steffen Moeller <moeller@mpimg-berlin-dahlem.mpg.de>
* [files/drive.c]
Added information on device and inode numbers to the DOSDRIVE
struct, using it to find DOS drives in a path even if it contains
symbolic links, eliminating annoying messages at startup.
Edited functions DRIVE_Init and rewrote DRIVE_FindDriveRoot.
Wed Mar 19 16:31:18 1997 John Harvey <john@division.co.uk>
* [graphics/win16drv/font.c] [graphics/win16drv/init.c]
[graphics/x11drv/font.c] [objects/font.c] [include/gdi.h]
[include/win16drv.h] [include/x11drv.h]
Implemented GetCharWidth via graphics drivers.
* [graphics/win16drv/Makefile.in] [graphics/win16drv/prtdrv.c]
Moved printer driver interfaces into a separate file.
* [graphics/win16drv/text.c]
Fixed bugs that seg-faulted write.
Wed Mar 19 13:52:41 1997 Alex Korobka <alex@trantor.pharm.sunysb.edu>
* [BUGS]
Update.
* [controls/edit.c]
Removed useless parameters from a lot of functions.
* [controls/menu.c]
Improved keyboard shortcuts. Added check for entries with popup
menu in EnableMenuItem().
* [windows/winproc.c] [windows/win.c] [memory/selector.c]
Do not allocate separate thunks for new windows.
* [misc/clipboard.c] [windows/painting.c]
Fixed problems with ClipBook.
* [controls/combo.c] [controls/edit.c] [controls/listbox.c]
[controls/widgets.c] [windows/graphics.c] [windows/defdlg.c]
Combo rewrite.
* [objects/dib.c]
Slight improvements.
Wed Mar 19 11:21:17 1997 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [misc/crtdll.c]
Added chdir/mkdir.
* [misc/ntdll.c]
Fixed some bugs, added RtlUnicodeStringToAnsiString.
* [win32/process.c]
Added initialisation of events/semaphores/mutices.
Wed Mar 19 01:55:40 1997 Ricardo R. Massaro <massaro@ime.usp.br>
* [resources/sysres_Po.rc]
Added support for Portuguese language.
Sat Mar 18 18:00:14 1997 Uwe Bonnes <bon@elektron.ikp.physik.th-darmstadt.de>
* [windows/winpos.c] [if1632/user.spec] [if1632/user32.spec]
Implemented SwitchToThisWindow().
* [misc/ver.c]
Corrected a flaw in VerInstallFile32A.
* [msdos/int21.c]
Corrected wrong number in Int21 3305
Corrected Int21 714e, implemented Int21 7160,CL=2, 7143 and 7147
Sun Mar 16 09:53:04 1997 Andreas Mohr <100.30936@germany.net>
* [loader/ne_module.c]
Fixed NE_LoadSegments() to set size to pSeg->minsize rather than
setting it to 0x10000 if pSeg->size is 0.
Thu Mar 13 12:15:00 1997 Anand Kumria <akumria@ozemail.com.au>
* [ANNOUNCE]
Added ftp.progsoc.uts.edu.au as a mirror of Wine.
* [memory/global.c]
Removed MemManInfo sizeof check.
Mon Mar 10 10:35:44 MET 1997 Sven Verdoolaege <skimo@breughel.ufsia.ac.be>
* [files/dos_fs.c]
Pick up kernel dirent on glibc systems.
* [loader/signal.c]
Pick up kernel sigaction on glibc systems.
Sat Mar 8 21:05:37 1997 Jimen Ching <jching@aloha.com>
* [debugger/stabs.c] [debugger/msc.c]
Check return value of mmap.
Fri Mar 7 05:42:03 1997 Lee Jaekil <juria@seodu.co.kr>
* [win32/code_page.c]
Added IsValidCodePage.
diff --git a/controls/edit.c b/controls/edit.c
index 3187698..6f6f5ce 100644
--- a/controls/edit.c
+++ b/controls/edit.c
@@ -13,11 +13,13 @@
*
*/
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "windows.h"
#include "win.h"
+#include "combo.h"
#include "local.h"
#include "resource.h"
#include "stddebug.h"
@@ -35,6 +37,9 @@
#define GROWLENGTH 64 /* buffers grow by this much */
#define HSCROLL_FRACTION 3 /* scroll window by 1/3 width */
+#define EF_TEXTCHANGED 0x0001
+#define EF_FOCUSED 0x0002
+
typedef enum
{
END_0 = 0,
@@ -86,13 +91,12 @@
INT32 AveCharWidth; /* average character width in pixels */
INT32 BufLimit;
INT32 BufSize;
- BOOL32 TextChanged;
+ UINT32 eState; /* EF flags */
INT32 UndoInsertLen;
INT32 UndoPos;
INT32 UndoBufSize;
HLOCAL32 hUndoBuf;
LPSTR UndoText;
- BOOL32 Redraw;
INT32 SelStart; /* offset of selection start, == SelEnd if no selection */
INT32 SelEnd; /* offset of selection end == current caret position */
INT32 NumTabStops;
@@ -126,6 +130,7 @@
#define IsPassword(wndPtr) ((wndPtr)->dwStyle & ES_PASSWORD)
#define IsLower(wndPtr) ((wndPtr)->dwStyle & ES_LOWERCASE)
#define IsUpper(wndPtr) ((wndPtr)->dwStyle & ES_UPPERCASE)
+#define IsNoRedraw(wndPtr) ((wndPtr)->flags & WIN_NO_REDRAW)
#define EDITSTATEPTR(wndPtr) (*(EDITSTATE **)((wndPtr)->wExtra))
@@ -145,7 +150,6 @@
"edit: 32 bit : " str ": hwnd=%08x, wParam=%08x, lParam=%08x\n", \
(UINT32)hwnd, (UINT32)wParam, (UINT32)lParam)
-
/*********************************************************************
*
* Declarations
@@ -166,7 +170,6 @@
static void EDIT_GetLineRect(WND *wndPtr, INT32 line, INT32 scol, INT32 ecol, LPRECT32 rc);
static LPSTR EDIT_GetPointer(WND *wndPtr);
static LPSTR EDIT_GetPasswordPointer(WND *wndPtr);
-static BOOL32 EDIT_GetRedraw(WND *wndPtr);
static void EDIT_GetSel(WND *wndPtr, LPINT32 s, LPINT32 e);
static INT32 EDIT_GetTextWidth(WND *wndPtr);
static LPSTR EDIT_GetUndoPointer(WND *wndPtr);
@@ -196,39 +199,39 @@
static INT32 EDIT_WndYFromLine(WND *wndPtr, INT32 line);
static INT32 EDIT_WordBreakProc(LPSTR s, INT32 index, INT32 count, INT32 action);
-static LRESULT EDIT_EM_CanUndo(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_EM_CanUndo(WND *wndPtr);
static LRESULT EDIT_EM_CharFromPos(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_EmptyUndoBuffer(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_FmtLines(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_GetFirstVisibleLine(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_GetHandle(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_GetHandle16(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_EM_EmptyUndoBuffer(WND *wndPtr);
+static LRESULT EDIT_EM_FmtLines(WND *wndPtr, WPARAM32 wParam);
+static LRESULT EDIT_EM_GetFirstVisibleLine(WND *wndPtr);
+static LRESULT EDIT_EM_GetHandle(WND *wndPtr);
+static LRESULT EDIT_EM_GetHandle16(WND *wndPtr);
static LRESULT EDIT_EM_GetLimitText(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_EM_GetLine(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_GetLineCount(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_EM_GetLineCount(WND *wndPtr);
static LRESULT EDIT_EM_GetMargins(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_GetModify(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_GetPasswordChar(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_EM_GetModify(WND *wndPtr);
+static LRESULT EDIT_EM_GetPasswordChar(WND *wndPtr);
static LRESULT EDIT_EM_GetRect(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_EM_GetRect16(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_EM_GetSel(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_GetThumb(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_EM_GetThumb(WND *wndPtr);
static LRESULT EDIT_EM_GetWordBreakProc(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_LineFromChar(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_LineIndex(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_LineLength(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_EM_LineFromChar(WND *wndPtr, WPARAM32 wParam);
+static LRESULT EDIT_EM_LineIndex(WND *wndPtr, WPARAM32 wParam);
+static LRESULT EDIT_EM_LineLength(WND *wndPtr, WPARAM32 wParam);
static LRESULT EDIT_EM_LineScroll(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_PosFromChar(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_EM_PosFromChar(WND *wndPtr, WPARAM32 wParam);
static LRESULT EDIT_EM_ReplaceSel(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_Scroll(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_ScrollCaret(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_SetHandle(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_SetHandle16(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_EM_Scroll(WND *wndPtr, WPARAM32 wParam);
+static LRESULT EDIT_EM_ScrollCaret(WND *wndPtr);
+static LRESULT EDIT_EM_SetHandle(WND *wndPtr, WPARAM32 wParam);
+static LRESULT EDIT_EM_SetHandle16(WND *wndPtr, WPARAM32 wParam);
static LRESULT EDIT_EM_SetLimitText(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_EM_SetMargins(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_SetModify(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_SetPasswordChar(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_SetReadOnly(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_EM_SetModify(WND *wndPtr, WPARAM32 wParam);
+static LRESULT EDIT_EM_SetPasswordChar(WND *wndPtr, WPARAM32 wParam);
+static LRESULT EDIT_EM_SetReadOnly(WND *wndPtr, WPARAM32 wParam);
static LRESULT EDIT_EM_SetRect(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_EM_SetRectNP(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_EM_SetSel(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
@@ -236,36 +239,36 @@
static LRESULT EDIT_EM_SetTabStops(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_EM_SetTabStops16(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_EM_SetWordBreakProc(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_EM_Undo(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_EM_Undo(WND *wndPtr);
static LRESULT EDIT_WM_Char(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_WM_Clear(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_WM_Clear(WND *wndPtr);
static LRESULT EDIT_WM_Command(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_WM_ContextMenu(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_WM_Copy(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_WM_Cut(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_WM_Copy(WND *wndPtr);
+static LRESULT EDIT_WM_Cut(WND *wndPtr);
static LRESULT EDIT_WM_Create(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_WM_Destroy(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_WM_Enable(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_WM_EraseBkGnd(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_WM_GetDlgCode(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_WM_GetFont(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_WM_Destroy(WND *wndPtr);
+static LRESULT EDIT_WM_Enable(WND *wndPtr, WPARAM32 wParam);
+static LRESULT EDIT_WM_EraseBkGnd(WND *wndPtr, WPARAM32 wParam);
+static LRESULT EDIT_WM_GetDlgCode(WND *wndPtr);
+static LRESULT EDIT_WM_GetFont(WND *wndPtr);
static LRESULT EDIT_WM_GetText(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_WM_GetTextLength(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_WM_GetTextLength(WND *wndPtr);
static LRESULT EDIT_WM_HScroll(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_WM_InitMenuPopup(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_WM_KeyDown(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_WM_KillFocus(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_WM_KillFocus(WND *wndPtr, WPARAM32 wParam);
static LRESULT EDIT_WM_LButtonDblClk(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_WM_LButtonDown(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_WM_LButtonUp(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_WM_MouseMove(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_WM_Paint(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_WM_Paste(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_WM_Paint(WND *wndPtr, WPARAM32 wParam);
+static LRESULT EDIT_WM_Paste(WND *wndPtr);
static LRESULT EDIT_WM_SetCursor(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_WM_SetFocus(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_WM_SetFocus(WND *wndPtr, WPARAM32 wParam);
static LRESULT EDIT_WM_SetFont(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
-static LRESULT EDIT_WM_SetRedraw(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
+static LRESULT EDIT_WM_SetRedraw(WND *wndPtr, WPARAM32 wParam);
static LRESULT EDIT_WM_SetText(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_WM_Size(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static LRESULT EDIT_WM_SysKeyDown(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
@@ -368,7 +371,7 @@
/* fall through */
case EM_SCROLL32:
DPRINTF_EDIT_MSG32("EM_SCROLL");
- lResult = EDIT_EM_Scroll(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_Scroll(wndPtr, wParam);
break;
case EM_LINESCROLL16:
@@ -386,7 +389,7 @@
/* fall through */
case EM_SCROLLCARET32:
DPRINTF_EDIT_MSG32("EM_SCROLLCARET");
- lResult = EDIT_EM_ScrollCaret(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_ScrollCaret(wndPtr);
break;
case EM_GETMODIFY16:
@@ -394,7 +397,7 @@
/* fall through */
case EM_GETMODIFY32:
DPRINTF_EDIT_MSG32("EM_GETMODIFY");
- lResult = EDIT_EM_GetModify(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_GetModify(wndPtr);
break;
case EM_SETMODIFY16:
@@ -402,7 +405,7 @@
/* fall through */
case EM_SETMODIFY32:
DPRINTF_EDIT_MSG32("EM_SETMODIFY");
- lResult = EDIT_EM_SetModify(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_SetModify(wndPtr, wParam);
break;
case EM_GETLINECOUNT16:
@@ -410,7 +413,7 @@
/* fall through */
case EM_GETLINECOUNT32:
DPRINTF_EDIT_MSG32("EM_GETLINECOUNT");
- lResult = EDIT_EM_GetLineCount(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_GetLineCount(wndPtr);
break;
case EM_LINEINDEX16:
@@ -418,25 +421,25 @@
/* fall through */
case EM_LINEINDEX32:
DPRINTF_EDIT_MSG32("EM_LINEINDEX");
- lResult = EDIT_EM_LineIndex(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_LineIndex(wndPtr, wParam);
break;
case EM_SETHANDLE16:
DPRINTF_EDIT_MSG16("EM_SETHANDLE");
- lResult = EDIT_EM_SetHandle16(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_SetHandle16(wndPtr, wParam);
break;
case EM_SETHANDLE32:
DPRINTF_EDIT_MSG32("EM_SETHANDLE");
- lResult = EDIT_EM_SetHandle(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_SetHandle(wndPtr, wParam);
break;
case EM_GETHANDLE16:
DPRINTF_EDIT_MSG16("EM_GETHANDLE");
- lResult = EDIT_EM_GetHandle16(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_GetHandle16(wndPtr);
break;
case EM_GETHANDLE32:
DPRINTF_EDIT_MSG32("EM_GETHANDLE");
- lResult = EDIT_EM_GetHandle(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_GetHandle(wndPtr);
break;
case EM_GETTHUMB16:
@@ -444,7 +447,7 @@
/* fall through */
case EM_GETTHUMB32:
DPRINTF_EDIT_MSG32("EM_GETTHUMB");
- lResult = EDIT_EM_GetThumb(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_GetThumb(wndPtr);
break;
/* messages 0x00bf and 0x00c0 missing from specs */
@@ -470,7 +473,7 @@
/* fall through */
case EM_LINELENGTH32:
DPRINTF_EDIT_MSG32("EM_LINELENGTH");
- lResult = EDIT_EM_LineLength(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_LineLength(wndPtr, wParam);
break;
case EM_REPLACESEL16:
@@ -514,7 +517,7 @@
/* fall through */
case EM_CANUNDO32:
DPRINTF_EDIT_MSG32("EM_CANUNDO");
- lResult = EDIT_EM_CanUndo(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_CanUndo(wndPtr);
break;
case EM_UNDO16:
@@ -524,7 +527,7 @@
/* fall through */
case WM_UNDO:
DPRINTF_EDIT_MSG32("EM_UNDO / WM_UNDO");
- lResult = EDIT_EM_Undo(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_Undo(wndPtr);
break;
case EM_FMTLINES16:
@@ -532,7 +535,7 @@
/* fall through */
case EM_FMTLINES32:
DPRINTF_EDIT_MSG32("EM_FMTLINES");
- lResult = EDIT_EM_FmtLines(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_FmtLines(wndPtr, wParam);
break;
case EM_LINEFROMCHAR16:
@@ -540,7 +543,7 @@
/* fall through */
case EM_LINEFROMCHAR32:
DPRINTF_EDIT_MSG32("EM_LINEFROMCHAR");
- lResult = EDIT_EM_LineFromChar(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_LineFromChar(wndPtr, wParam);
break;
/* message 0x00ca missing from specs */
@@ -567,7 +570,7 @@
/* fall through */
case EM_SETPASSWORDCHAR32:
DPRINTF_EDIT_MSG32("EM_SETPASSWORDCHAR");
- lResult = EDIT_EM_SetPasswordChar(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_SetPasswordChar(wndPtr, wParam);
break;
case EM_EMPTYUNDOBUFFER16:
@@ -575,7 +578,7 @@
/* fall through */
case EM_EMPTYUNDOBUFFER32:
DPRINTF_EDIT_MSG32("EM_EMPTYUNDOBUFFER");
- lResult = EDIT_EM_EmptyUndoBuffer(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_EmptyUndoBuffer(wndPtr);
break;
case EM_GETFIRSTVISIBLELINE16:
@@ -583,7 +586,7 @@
/* fall through */
case EM_GETFIRSTVISIBLELINE32:
DPRINTF_EDIT_MSG32("EM_GETFIRSTVISIBLELINE");
- lResult = EDIT_EM_GetFirstVisibleLine(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_GetFirstVisibleLine(wndPtr);
break;
case EM_SETREADONLY16:
@@ -591,7 +594,7 @@
/* fall through */
case EM_SETREADONLY32:
DPRINTF_EDIT_MSG32("EM_SETREADONLY");
- lResult = EDIT_EM_SetReadOnly(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_SetReadOnly(wndPtr, wParam);
break;
case EM_SETWORDBREAKPROC16:
@@ -615,7 +618,7 @@
/* fall through */
case EM_GETPASSWORDCHAR32:
DPRINTF_EDIT_MSG32("EM_GETPASSWORDCHAR");
- lResult = EDIT_EM_GetPasswordChar(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_GetPasswordChar(wndPtr);
break;
/* The following EM_xxx are new to win95 and don't exist for 16 bit */
@@ -637,7 +640,7 @@
case EM_POSFROMCHAR32:
DPRINTF_EDIT_MSG16("EM_POSFROMCHAR");
- lResult = EDIT_EM_PosFromChar(wndPtr, wParam, lParam);
+ lResult = EDIT_EM_PosFromChar(wndPtr, wParam);
break;
case EM_CHARFROMPOS32:
@@ -647,7 +650,7 @@
case WM_GETDLGCODE:
DPRINTF_EDIT_MSG32("WM_GETDLGCODE");
- lResult = EDIT_WM_GetDlgCode(wndPtr, wParam, lParam);
+ lResult = EDIT_WM_GetDlgCode(wndPtr);
break;
case WM_CHAR:
@@ -657,7 +660,7 @@
case WM_CLEAR:
DPRINTF_EDIT_MSG32("WM_CLEAR");
- lResult = EDIT_WM_Clear(wndPtr, wParam, lParam);
+ lResult = EDIT_WM_Clear(wndPtr);
break;
case WM_COMMAND:
@@ -672,7 +675,7 @@
case WM_COPY:
DPRINTF_EDIT_MSG32("WM_COPY");
- lResult = EDIT_WM_Copy(wndPtr, wParam, lParam);
+ lResult = EDIT_WM_Copy(wndPtr);
break;
case WM_CREATE:
@@ -682,27 +685,27 @@
case WM_CUT:
DPRINTF_EDIT_MSG32("WM_CUT");
- lResult = EDIT_WM_Cut(wndPtr, wParam, lParam);
+ lResult = EDIT_WM_Cut(wndPtr);
break;
case WM_DESTROY:
DPRINTF_EDIT_MSG32("WM_DESTROY");
- lResult = EDIT_WM_Destroy(wndPtr, wParam, lParam);
+ lResult = EDIT_WM_Destroy(wndPtr);
break;
case WM_ENABLE:
DPRINTF_EDIT_MSG32("WM_ENABLE");
- lResult = EDIT_WM_Enable(wndPtr, wParam, lParam);
+ lResult = EDIT_WM_Enable(wndPtr, wParam);
break;
case WM_ERASEBKGND:
DPRINTF_EDIT_MSG32("WM_ERASEBKGND");
- lResult = EDIT_WM_EraseBkGnd(wndPtr, wParam, lParam);
+ lResult = EDIT_WM_EraseBkGnd(wndPtr, wParam);
break;
case WM_GETFONT:
DPRINTF_EDIT_MSG32("WM_GETFONT");
- lResult = EDIT_WM_GetFont(wndPtr, wParam, lParam);
+ lResult = EDIT_WM_GetFont(wndPtr);
break;
case WM_GETTEXT:
@@ -712,7 +715,7 @@
case WM_GETTEXTLENGTH:
DPRINTF_EDIT_MSG32("WM_GETTEXTLENGTH");
- lResult = EDIT_WM_GetTextLength(wndPtr, wParam, lParam);
+ lResult = EDIT_WM_GetTextLength(wndPtr);
break;
case WM_HSCROLL:
@@ -732,7 +735,7 @@
case WM_KILLFOCUS:
DPRINTF_EDIT_MSG32("WM_KILLFOCUS");
- lResult = EDIT_WM_KillFocus(wndPtr, wParam, lParam);
+ lResult = EDIT_WM_KillFocus(wndPtr, wParam);
break;
case WM_LBUTTONDBLCLK:
@@ -759,12 +762,12 @@
case WM_PAINT:
DPRINTF_EDIT_MSG32("WM_PAINT");
- lResult = EDIT_WM_Paint(wndPtr, wParam, lParam);
+ lResult = EDIT_WM_Paint(wndPtr, wParam);
break;
case WM_PASTE:
DPRINTF_EDIT_MSG32("WM_PASTE");
- lResult = EDIT_WM_Paste(wndPtr, wParam, lParam);
+ lResult = EDIT_WM_Paste(wndPtr);
break;
case WM_SETCURSOR:
@@ -776,7 +779,7 @@
case WM_SETFOCUS:
DPRINTF_EDIT_MSG32("WM_SETFOCUS");
- lResult = EDIT_WM_SetFocus(wndPtr, wParam, lParam);
+ lResult = EDIT_WM_SetFocus(wndPtr, wParam);
break;
case WM_SETFONT:
@@ -786,7 +789,7 @@
case WM_SETREDRAW:
DPRINTF_EDIT_MSG32("WM_SETREDRAW");
- lResult = EDIT_WM_SetRedraw(wndPtr, wParam, lParam);
+ lResult = EDIT_WM_SetRedraw(wndPtr, wParam);
break;
case WM_SETTEXT:
@@ -847,14 +850,14 @@
LINE_END ending;
hdc = GetDC32(wndPtr->hwndSelf);
- hFont = (HFONT32)EDIT_WM_GetFont(wndPtr, 0, 0);
+ hFont = (HFONT32)EDIT_WM_GetFont(wndPtr);
if (hFont) oldFont = SelectObject32(hdc, hFont);
if (!IsMultiLine(wndPtr)) {
es->LineCount = 1;
es->LineDefs = xrealloc(es->LineDefs, sizeof(LINEDEF));
es->LineDefs[0].offset = 0;
- es->LineDefs[0].length = EDIT_WM_GetTextLength(wndPtr, 0, 0);
+ es->LineDefs[0].length = EDIT_WM_GetTextLength(wndPtr);
es->LineDefs[0].ending = END_0;
es->TextWidth = (INT32)LOWORD(GetTabbedTextExtent32A(hdc, text,
es->LineDefs[0].length,
@@ -976,9 +979,9 @@
*/
static INT32 EDIT_ColFromWndX(WND *wndPtr, INT32 line, INT32 x)
{
- INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr, 0, 0);
- INT32 li = (INT32)EDIT_EM_LineIndex(wndPtr, line, 0);
- INT32 ll = (INT32)EDIT_EM_LineLength(wndPtr, li, 0);
+ INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr);
+ INT32 li = (INT32)EDIT_EM_LineIndex(wndPtr, line);
+ INT32 ll = (INT32)EDIT_EM_LineLength(wndPtr, li);
INT32 i;
line = MAX(0, MIN(line, lc - 1));
@@ -1000,7 +1003,7 @@
{
EDIT_EM_SetSel(wndPtr, -1, 0);
EDIT_MoveEnd(wndPtr, TRUE);
- EDIT_WM_Clear(wndPtr, 0, 0);
+ EDIT_WM_Clear(wndPtr);
}
@@ -1015,7 +1018,7 @@
{
EDIT_EM_SetSel(wndPtr, -1, 0);
EDIT_MoveBackward(wndPtr, TRUE);
- EDIT_WM_Clear(wndPtr, 0, 0);
+ EDIT_WM_Clear(wndPtr);
}
@@ -1030,7 +1033,7 @@
{
EDIT_EM_SetSel(wndPtr, -1, 0);
EDIT_MoveForward(wndPtr, TRUE);
- EDIT_WM_Clear(wndPtr, 0, 0);
+ EDIT_WM_Clear(wndPtr);
}
@@ -1126,19 +1129,6 @@
/*********************************************************************
*
- * EDIT_GetRedraw
- *
- */
-static BOOL32 EDIT_GetRedraw(WND *wndPtr)
-{
- EDITSTATE *es = EDITSTATEPTR(wndPtr);
-
- return es->Redraw;
-}
-
-
-/*********************************************************************
- *
* EDIT_GetSel
*
* Beware: This is not the function called on EM_GETSEL.
@@ -1242,7 +1232,7 @@
*/
static void EDIT_InvalidateText(WND *wndPtr, INT32 start, INT32 end)
{
- INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0);
+ INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr);
INT32 vlc = EDIT_GetVisibleLineCount(wndPtr);
INT32 sl;
INT32 el;
@@ -1257,15 +1247,15 @@
return;
if (end == -1)
- end = (INT32)EDIT_WM_GetTextLength(wndPtr, 0, 0);
+ end = (INT32)EDIT_WM_GetTextLength(wndPtr);
ORDER_INT32(start, end);
- sl = (INT32)EDIT_EM_LineFromChar(wndPtr, start, 0);
- el = (INT32)EDIT_EM_LineFromChar(wndPtr, end, 0);
+ sl = (INT32)EDIT_EM_LineFromChar(wndPtr, start);
+ el = (INT32)EDIT_EM_LineFromChar(wndPtr, end);
if ((el < fv) || (sl > fv + vlc))
return;
- sc = start - (INT32)EDIT_EM_LineIndex(wndPtr, sl, 0);
- ec = end - (INT32)EDIT_EM_LineIndex(wndPtr, el, 0);
+ sc = start - (INT32)EDIT_EM_LineIndex(wndPtr, sl);
+ ec = end - (INT32)EDIT_EM_LineIndex(wndPtr, el);
if (sl < fv) {
sl = fv;
sc = 0;
@@ -1273,7 +1263,7 @@
if (el > fv + vlc) {
el = fv + vlc;
ec = (INT32)EDIT_EM_LineLength(wndPtr,
- (INT32)EDIT_EM_LineIndex(wndPtr, el, 0), 0);
+ (INT32)EDIT_EM_LineIndex(wndPtr, el));
}
EDIT_EM_GetRect(wndPtr, 0, (LPARAM)&rcWnd);
if (sl == el) {
@@ -1283,14 +1273,14 @@
} else {
EDIT_GetLineRect(wndPtr, sl, sc,
(INT32)EDIT_EM_LineLength(wndPtr,
- (INT32)EDIT_EM_LineIndex(wndPtr, sl, 0), 0),
+ (INT32)EDIT_EM_LineIndex(wndPtr, sl)),
&rcLine);
if (IntersectRect32(&rcUpdate, &rcWnd, &rcLine))
InvalidateRect32( wndPtr->hwndSelf, &rcUpdate, FALSE );
for (l = sl + 1 ; l < el ; l++) {
EDIT_GetLineRect(wndPtr, l, 0,
(INT32)EDIT_EM_LineLength(wndPtr,
- (INT32)EDIT_EM_LineIndex(wndPtr, l, 0), 0),
+ (INT32)EDIT_EM_LineIndex(wndPtr, l)),
&rcLine);
if (IntersectRect32(&rcUpdate, &rcWnd, &rcLine))
InvalidateRect32(wndPtr->hwndSelf, &rcUpdate, FALSE);
@@ -1311,9 +1301,9 @@
*/
static INT32 EDIT_LineFromWndY(WND *wndPtr, INT32 y)
{
- INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0);
+ INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr);
INT32 lh = EDIT_GetLineHeight(wndPtr);
- INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr, 0, 0);
+ INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr);
return MAX(0, MIN(lc - 1, y / lh + fv));
}
@@ -1429,19 +1419,19 @@
INT32 li;
EDIT_GetSel(wndPtr, &s, &e);
- l = (INT32)EDIT_EM_LineFromChar(wndPtr, e, 0);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0);
+ l = (INT32)EDIT_EM_LineFromChar(wndPtr, e);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l);
if (e - li == 0) {
if (l) {
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l - 1, 0);
- e = li + (INT32)EDIT_EM_LineLength(wndPtr, li, 0);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l - 1);
+ e = li + (INT32)EDIT_EM_LineLength(wndPtr, li);
}
} else
e--;
if (!extend)
s = e;
EDIT_SetSel(wndPtr, s, e);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
}
@@ -1460,19 +1450,19 @@
INT32 x;
EDIT_GetSel(wndPtr, &s, &e);
- l = (INT32)EDIT_EM_LineFromChar(wndPtr, e, 0);
- lc = (INT32)EDIT_EM_GetLineCount(wndPtr, e, 0);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0);
+ l = (INT32)EDIT_EM_LineFromChar(wndPtr, e);
+ lc = (INT32)EDIT_EM_GetLineCount(wndPtr);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l);
if (l < lc - 1) {
x = EDIT_WndXFromCol(wndPtr, l, e - li);
l++;
- e = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0) +
+ e = (INT32)EDIT_EM_LineIndex(wndPtr, l) +
EDIT_ColFromWndX(wndPtr, l, x);
}
if (!extend)
s = e;
EDIT_SetSel(wndPtr, s, e);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
}
@@ -1490,14 +1480,14 @@
INT32 li;
EDIT_GetSel(wndPtr, &s, &e);
- l = (INT32)EDIT_EM_LineFromChar(wndPtr, e, 0);
- ll = (INT32)EDIT_EM_LineLength(wndPtr, e, 0);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0);
+ l = (INT32)EDIT_EM_LineFromChar(wndPtr, e);
+ ll = (INT32)EDIT_EM_LineLength(wndPtr, e);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l);
e = li + ll;
if (!extend)
s = e;
EDIT_SetSel(wndPtr, s, e);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
}
@@ -1516,19 +1506,19 @@
INT32 li;
EDIT_GetSel(wndPtr, &s, &e);
- l = (INT32)EDIT_EM_LineFromChar(wndPtr, e, 0);
- lc = (INT32)EDIT_EM_GetLineCount(wndPtr, e, 0);
- ll = (INT32)EDIT_EM_LineLength(wndPtr, e, 0);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0);
+ l = (INT32)EDIT_EM_LineFromChar(wndPtr, e);
+ lc = (INT32)EDIT_EM_GetLineCount(wndPtr);
+ ll = (INT32)EDIT_EM_LineLength(wndPtr, e);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l);
if (e - li == ll) {
if (l != lc - 1)
- e = (INT32)EDIT_EM_LineIndex(wndPtr, l + 1, 0);
+ e = (INT32)EDIT_EM_LineIndex(wndPtr, l + 1);
} else
e++;
if (!extend)
s = e;
EDIT_SetSel(wndPtr, s, e);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
}
@@ -1547,13 +1537,13 @@
INT32 li;
EDIT_GetSel(wndPtr, &s, &e);
- l = (INT32)EDIT_EM_LineFromChar(wndPtr, e, 0);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0);
+ l = (INT32)EDIT_EM_LineFromChar(wndPtr, e);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l);
e = li;
if (!extend)
s = e;
EDIT_SetSel(wndPtr, s, e);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
}
@@ -1572,19 +1562,19 @@
INT32 x;
EDIT_GetSel(wndPtr, &s, &e);
- l = (INT32)EDIT_EM_LineFromChar(wndPtr, e, 0);
- lc = (INT32)EDIT_EM_GetLineCount(wndPtr, e, 0);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0);
+ l = (INT32)EDIT_EM_LineFromChar(wndPtr, e);
+ lc = (INT32)EDIT_EM_GetLineCount(wndPtr);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l);
if (l < lc - 1) {
x = EDIT_WndXFromCol(wndPtr, l, e - li);
l = MIN(lc - 1, l + EDIT_GetVisibleLineCount(wndPtr));
- e = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0) +
+ e = (INT32)EDIT_EM_LineIndex(wndPtr, l) +
EDIT_ColFromWndX(wndPtr, l, x);
}
if (!extend)
s = e;
EDIT_SetSel(wndPtr, s, e);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
}
@@ -1602,18 +1592,18 @@
INT32 x;
EDIT_GetSel(wndPtr, &s, &e);
- l = (INT32)EDIT_EM_LineFromChar(wndPtr, e, 0);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0);
+ l = (INT32)EDIT_EM_LineFromChar(wndPtr, e);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l);
if (l) {
x = EDIT_WndXFromCol(wndPtr, l, e - li);
l = MAX(0, l - EDIT_GetVisibleLineCount(wndPtr));
- e = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0) +
+ e = (INT32)EDIT_EM_LineIndex(wndPtr, l) +
EDIT_ColFromWndX(wndPtr, l, x);
}
if (!extend)
s = e;
EDIT_SetSel(wndPtr, s, e);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
}
@@ -1631,18 +1621,18 @@
INT32 x;
EDIT_GetSel(wndPtr, &s, &e);
- l = (INT32)EDIT_EM_LineFromChar(wndPtr, e, 0);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0);
+ l = (INT32)EDIT_EM_LineFromChar(wndPtr, e);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l);
if (l) {
x = EDIT_WndXFromCol(wndPtr, l, e - li);
l--;
- e = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0) +
+ e = (INT32)EDIT_EM_LineIndex(wndPtr, l) +
EDIT_ColFromWndX(wndPtr, l, x);
}
if (!extend)
s = e;
EDIT_SetSel(wndPtr, s, e);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
}
@@ -1661,13 +1651,13 @@
LPSTR text;
EDIT_GetSel(wndPtr, &s, &e);
- l = (INT32)EDIT_EM_LineFromChar(wndPtr, e, 0);
- ll = (INT32)EDIT_EM_LineLength(wndPtr, e, 0);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0);
+ l = (INT32)EDIT_EM_LineFromChar(wndPtr, e);
+ ll = (INT32)EDIT_EM_LineLength(wndPtr, e);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l);
if (e - li == 0) {
if (l) {
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l - 1, 0);
- e = li + (INT32)EDIT_EM_LineLength(wndPtr, li, 0);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l - 1);
+ e = li + (INT32)EDIT_EM_LineLength(wndPtr, li);
}
} else {
text = EDIT_GetPointer(wndPtr);
@@ -1677,7 +1667,7 @@
if (!extend)
s = e;
EDIT_SetSel(wndPtr, s, e);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
}
@@ -1697,13 +1687,13 @@
LPSTR text;
EDIT_GetSel(wndPtr, &s, &e);
- l = (INT32)EDIT_EM_LineFromChar(wndPtr, e, 0);
- lc = (INT32)EDIT_EM_GetLineCount(wndPtr, e, 0);
- ll = (INT32)EDIT_EM_LineLength(wndPtr, e, 0);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0);
+ l = (INT32)EDIT_EM_LineFromChar(wndPtr, e);
+ lc = (INT32)EDIT_EM_GetLineCount(wndPtr);
+ ll = (INT32)EDIT_EM_LineLength(wndPtr, e);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l);
if (e - li == ll) {
if (l != lc - 1)
- e = (INT32)EDIT_EM_LineIndex(wndPtr, l + 1, 0);
+ e = (INT32)EDIT_EM_LineIndex(wndPtr, l + 1);
} else {
text = EDIT_GetPointer(wndPtr);
e = li + EDIT_CallWordBreakProc(wndPtr,
@@ -1712,7 +1702,7 @@
if (!extend)
s = e;
EDIT_SetSel(wndPtr, s, e);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
}
@@ -1723,15 +1713,16 @@
*/
static void EDIT_PaintLine(WND *wndPtr, HDC32 hdc, INT32 line, BOOL32 rev)
{
- INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0);
+ INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr);
INT32 vlc = EDIT_GetVisibleLineCount(wndPtr);
- INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr, 0, 0);
+ INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr);
INT32 li;
INT32 ll;
INT32 s;
INT32 e;
INT32 x;
INT32 y;
+ EDITSTATE *es = EDITSTATEPTR(wndPtr);
if ((line < fv) || (line > fv + vlc) || (line >= lc))
return;
@@ -1740,15 +1731,14 @@
x = EDIT_WndXFromCol(wndPtr, line, 0);
y = EDIT_WndYFromLine(wndPtr, line);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, line, 0);
- ll = (INT32)EDIT_EM_LineLength(wndPtr, li, 0);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, line);
+ ll = (INT32)EDIT_EM_LineLength(wndPtr, li);
EDIT_GetSel(wndPtr, &s, &e);
ORDER_INT32(s, e);
s = MIN(li + ll, MAX(li, s));
e = MIN(li + ll, MAX(li, e));
if (rev && (s != e) &&
- ((GetFocus32() == wndPtr->hwndSelf) ||
- (wndPtr->dwStyle & ES_NOHIDESEL))) {
+ ((es->eState & EF_FOCUSED) || (wndPtr->dwStyle & ES_NOHIDESEL)) ) {
x += EDIT_PaintText(wndPtr, hdc, x, y, line, 0, s - li, FALSE);
x += EDIT_PaintText(wndPtr, hdc, x, y, line, s - li, e - s, TRUE);
x += EDIT_PaintText(wndPtr, hdc, x, y, line, e - li, li + ll - e, FALSE);
@@ -1776,21 +1766,19 @@
return 0;
BkColor = GetBkColor32(hdc);
TextColor = GetTextColor32(hdc);
- if (rev)
- {
- SetBkColor32(hdc, GetSysColor32(COLOR_HIGHLIGHT));
- SetTextColor32(hdc, GetSysColor32(COLOR_HIGHLIGHTTEXT));
+ if (rev) {
+ SetBkColor32(hdc, GetSysColor32(COLOR_HIGHLIGHT));
+ SetTextColor32(hdc, GetSysColor32(COLOR_HIGHLIGHTTEXT));
}
text = EDIT_GetPasswordPointer(wndPtr);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, line, 0);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, line);
xoff = EDIT_GetXOffset(wndPtr);
ret = (INT32)LOWORD(TabbedTextOut32A(hdc, x, y, text + li + col, count,
es->NumTabStops, es->TabStops, -xoff));
free(text);
- if (rev)
- {
- SetBkColor32(hdc, BkColor);
- SetTextColor32(hdc, TextColor);
+ if (rev) {
+ SetBkColor32(hdc, BkColor);
+ SetTextColor32(hdc, TextColor);
}
return ret;
}
@@ -1860,9 +1848,9 @@
EDIT_EM_GetSel(wndPtr, (WPARAM32)&s, (LPARAM)&e);
es->SelStart = ns;
es->SelEnd = ne;
- if (EDIT_GetRedraw(wndPtr)) {
- if (wndPtr->hwndSelf == GetFocus32()) {
- pos = EDIT_EM_PosFromChar(wndPtr, ne, 0);
+ if (!IsNoRedraw(wndPtr)) {
+ if (es->eState & EF_FOCUSED) {
+ pos = EDIT_EM_PosFromChar(wndPtr, ne);
SetCaretPos16((INT16)LOWORD(pos), (INT16)HIWORD(pos));
}
ORDER_INT32(s, ns);
@@ -1894,13 +1882,13 @@
HDC32 hdc;
HFONT32 hFont;
HFONT32 oldFont = 0;
- INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr, 0, 0);
- INT32 li = (INT32)EDIT_EM_LineIndex(wndPtr, line, 0);
- INT32 ll = (INT32)EDIT_EM_LineLength(wndPtr, li, 0);
+ INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr);
+ INT32 li = (INT32)EDIT_EM_LineIndex(wndPtr, line);
+ INT32 ll = (INT32)EDIT_EM_LineLength(wndPtr, li);
INT32 xoff = EDIT_GetXOffset(wndPtr);
hdc = GetDC32(wndPtr->hwndSelf);
- hFont = (HFONT32)EDIT_WM_GetFont(wndPtr, 0, 0);
+ hFont = (HFONT32)EDIT_WM_GetFont(wndPtr);
if (hFont) oldFont = SelectObject32(hdc, hFont);
line = MAX(0, MIN(line, lc - 1));
col = MIN(col, ll);
@@ -1923,7 +1911,7 @@
*/
static INT32 EDIT_WndYFromLine(WND *wndPtr, INT32 line)
{
- INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0);
+ INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr);
INT32 lh = EDIT_GetLineHeight(wndPtr);
return (line - fv) * lh;
@@ -2001,7 +1989,7 @@
* EM_CANUNDO
*
*/
-static LRESULT EDIT_EM_CanUndo(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_CanUndo(WND *wndPtr)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
@@ -2031,7 +2019,7 @@
return -1;
l = EDIT_LineFromWndY(wndPtr, pt.y);
- li = EDIT_EM_LineIndex(wndPtr, l, 0);
+ li = EDIT_EM_LineIndex(wndPtr, l);
c = EDIT_ColFromWndX(wndPtr, l, pt.x);
return (LRESULT)MAKELONG(li + c, li);
@@ -2043,7 +2031,7 @@
* EM_EMPTYUNDOBUFFER
*
*/
-static LRESULT EDIT_EM_EmptyUndoBuffer(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_EmptyUndoBuffer(WND *wndPtr)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
@@ -2058,7 +2046,7 @@
* EM_FMTLINES
*
*/
-static LRESULT EDIT_EM_FmtLines(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_FmtLines(WND *wndPtr, WPARAM32 wParam)
{
fprintf(stdnimp, "edit: EM_FMTLINES: message not implemented\n");
return wParam ? TRUE : FALSE;
@@ -2070,7 +2058,7 @@
* EM_GETFIRSTVISIBLELINE
*
*/
-static LRESULT EDIT_EM_GetFirstVisibleLine(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_GetFirstVisibleLine(WND *wndPtr)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
@@ -2086,7 +2074,7 @@
* EM_GETHANDLE
*
*/
-static LRESULT EDIT_EM_GetHandle(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_GetHandle(WND *wndPtr)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
@@ -2115,7 +2103,7 @@
*
* In this function we'll try to switch to local heap.
*/
-static LRESULT EDIT_EM_GetHandle16(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_GetHandle16(WND *wndPtr)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
LPSTR text;
@@ -2138,8 +2126,7 @@
dprintf_edit(stddeb, "edit: EM_GETHANDLE: local heap initialized\n");
}
if (!(newBuf = LOCAL_Alloc(wndPtr->hInstance, LMEM_MOVEABLE,
- EDIT_WM_GetTextLength(wndPtr, 0, 0) + 1)))
- {
+ EDIT_WM_GetTextLength(wndPtr) + 1))) {
fprintf(stderr, "edit: EM_GETHANDLE: could not allocate new 16 bit buffer\n");
return 0;
}
@@ -2188,16 +2175,16 @@
LPSTR dst;
INT32 len;
INT32 i;
- INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr, 0, 0);
+ INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr);
if (!IsMultiLine(wndPtr))
wParam = 0;
if ((INT32)wParam >= lc)
return 0;
text = EDIT_GetPointer(wndPtr);
- src = text + (INT32)EDIT_EM_LineIndex(wndPtr, wParam, 0);
+ src = text + (INT32)EDIT_EM_LineIndex(wndPtr, wParam);
dst = (LPSTR)lParam;
- len = MIN(*(WORD *)dst, (INT32)EDIT_EM_LineLength(wndPtr, wParam, 0));
+ len = MIN(*(WORD *)dst, (INT32)EDIT_EM_LineLength(wndPtr, wParam));
for (i = 0 ; i < len ; i++) {
*dst = *src;
src++;
@@ -2212,7 +2199,7 @@
* EM_GETLINECOUNT
*
*/
-static LRESULT EDIT_EM_GetLineCount(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_GetLineCount(WND *wndPtr)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
@@ -2238,11 +2225,11 @@
* EM_GETMODIFY
*
*/
-static LRESULT EDIT_EM_GetModify(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_GetModify(WND *wndPtr)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
- return (LRESULT)es->TextChanged;
+ return (LRESULT)((es->eState & EF_TEXTCHANGED) != 0);
}
@@ -2251,7 +2238,7 @@
* EM_GETPASSWORDCHAR
*
*/
-static LRESULT EDIT_EM_GetPasswordChar(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_GetPasswordChar(WND *wndPtr)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
@@ -2320,7 +2307,7 @@
* All in all: very poorly documented
*
*/
-static LRESULT EDIT_EM_GetThumb(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_GetThumb(WND *wndPtr)
{
return MAKELONG(EDIT_WM_VScroll(wndPtr, EM_GETTHUMB16, 0),
EDIT_WM_HScroll(wndPtr, EM_GETTHUMB16, 0));
@@ -2350,7 +2337,7 @@
* EM_LINEFROMCHAR
*
*/
-static LRESULT EDIT_EM_LineFromChar(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_LineFromChar(WND *wndPtr, WPARAM32 wParam)
{
INT32 l;
@@ -2358,8 +2345,8 @@
return 0;
if ((INT32)wParam == -1)
EDIT_EM_GetSel(wndPtr, (WPARAM32)&wParam, 0); /* intentional (looks weird, doesn't it ?) */
- l = (INT32)EDIT_EM_GetLineCount(wndPtr, 0, 0) - 1;
- while ((INT32)EDIT_EM_LineIndex(wndPtr, l, 0) > (INT32)wParam)
+ l = (INT32)EDIT_EM_GetLineCount(wndPtr) - 1;
+ while ((INT32)EDIT_EM_LineIndex(wndPtr, l) > (INT32)wParam)
l--;
return (LRESULT)l;
}
@@ -2370,12 +2357,12 @@
* EM_LINEINDEX
*
*/
-static LRESULT EDIT_EM_LineIndex(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_LineIndex(WND *wndPtr, WPARAM32 wParam)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
INT32 e;
INT32 l;
- INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr, 0, 0);
+ INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr);
if ((INT32)wParam == -1) {
EDIT_GetSel(wndPtr, NULL, &e);
@@ -2395,7 +2382,7 @@
* EM_LINELENGTH
*
*/
-static LRESULT EDIT_EM_LineLength(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_LineLength(WND *wndPtr, WPARAM32 wParam)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
INT32 s;
@@ -2407,13 +2394,13 @@
return (LRESULT)es->LineDefs[0].length;
if ((INT32)wParam == -1) {
EDIT_GetSel(wndPtr, &s, &e);
- sl = (INT32)EDIT_EM_LineFromChar(wndPtr, s, 0);
- el = (INT32)EDIT_EM_LineFromChar(wndPtr, e, 0);
+ sl = (INT32)EDIT_EM_LineFromChar(wndPtr, s);
+ el = (INT32)EDIT_EM_LineFromChar(wndPtr, e);
return (LRESULT)(s - es->LineDefs[sl].offset +
es->LineDefs[el].offset +
es->LineDefs[el].length - e);
}
- return (LRESULT)es->LineDefs[(INT32)EDIT_EM_LineFromChar(wndPtr, wParam, 0)].length;
+ return (LRESULT)es->LineDefs[(INT32)EDIT_EM_LineFromChar(wndPtr, wParam)].length;
}
@@ -2430,8 +2417,8 @@
static LRESULT EDIT_EM_LineScroll(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
- INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr, 0, 0);
- INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0);
+ INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr);
+ INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr);
INT32 nfv = MAX(0, fv + (INT32)lParam);
INT32 xoff = EDIT_GetXOffset(wndPtr);
INT32 nxoff = MAX(0, xoff + (INT32)wParam);
@@ -2447,8 +2434,9 @@
dx = xoff - nxoff;
dy = EDIT_WndYFromLine(wndPtr, fv) - EDIT_WndYFromLine(wndPtr, nfv);
if (dx || dy) {
- if (EDIT_GetRedraw(wndPtr))
- ScrollWindow32(wndPtr->hwndSelf, dx, dy, NULL, NULL);
+ if (!IsNoRedraw(wndPtr))
+ ScrollWindowEx32(wndPtr->hwndSelf, dx, dy,
+ NULL, NULL, 0, NULL, (SW_INVALIDATE | SW_ERASE));
es->FirstVisibleLine = nfv;
es->XOffset = nxoff;
if (IsVScrollBar(wndPtr))
@@ -2470,15 +2458,15 @@
* EM_POSFROMCHAR
*
*/
-static LRESULT EDIT_EM_PosFromChar(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_PosFromChar(WND *wndPtr, WPARAM32 wParam)
{
- INT32 len = (INT32)EDIT_WM_GetTextLength(wndPtr, 0, 0);
+ INT32 len = (INT32)EDIT_WM_GetTextLength(wndPtr);
INT32 l;
INT32 li;
wParam = MIN(wParam, len);
- l = EDIT_EM_LineFromChar(wndPtr, wParam, 0);
- li = EDIT_EM_LineIndex(wndPtr, l, 0);
+ l = EDIT_EM_LineFromChar(wndPtr, wParam);
+ li = EDIT_EM_LineIndex(wndPtr, l);
return (LRESULT)MAKELONG(EDIT_WndXFromCol(wndPtr, l, wParam - li),
EDIT_WndYFromLine(wndPtr, l));
}
@@ -2494,7 +2482,7 @@
EDITSTATE *es = EDITSTATEPTR(wndPtr);
LPCSTR str = (LPCSTR)lParam;
INT32 strl = lstrlen32A(str);
- INT32 tl = (INT32)EDIT_WM_GetTextLength(wndPtr, 0, 0);
+ INT32 tl = (INT32)EDIT_WM_GetTextLength(wndPtr);
INT32 utl;
INT32 s;
INT32 e;
@@ -2540,7 +2528,7 @@
/* any deletion makes the old insertion-undo invalid */
es->UndoInsertLen = 0;
} else
- EDIT_EM_EmptyUndoBuffer(wndPtr, 0, 0);
+ EDIT_EM_EmptyUndoBuffer(wndPtr);
/* now delete */
lstrcpy32A(text + s, text + e);
@@ -2565,7 +2553,7 @@
*utext = '\0';
}
} else
- EDIT_EM_EmptyUndoBuffer(wndPtr, 0, 0);
+ EDIT_EM_EmptyUndoBuffer(wndPtr);
/* now insert */
tl = lstrlen32A(text);
@@ -2579,15 +2567,15 @@
CharLowerBuff32A(p, strl);
s += strl;
}
- redraw = EDIT_GetRedraw(wndPtr);
- EDIT_WM_SetRedraw(wndPtr, FALSE, 0);
+ redraw = !IsNoRedraw(wndPtr);
+ EDIT_WM_SetRedraw(wndPtr, FALSE);
EDIT_BuildLineDefs(wndPtr);
EDIT_EM_SetSel(wndPtr, s, s);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
- EDIT_EM_SetModify(wndPtr, TRUE, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
+ EDIT_EM_SetModify(wndPtr, TRUE);
dprintf_edit(stddeb, "edit: notification EN_UPDATE sent\n");
EDIT_NOTIFY_PARENT(wndPtr, EN_UPDATE);
- EDIT_WM_SetRedraw(wndPtr, redraw, 0);
+ EDIT_WM_SetRedraw(wndPtr, redraw);
if (redraw) {
InvalidateRect32( wndPtr->hwndSelf, NULL, TRUE );
dprintf_edit(stddeb, "edit: notification EN_CHANGE sent\n");
@@ -2600,14 +2588,32 @@
/*********************************************************************
*
* EM_SCROLL
- *
- * FIXME: Scroll what ??? And where ???
- *
*/
-static LRESULT EDIT_EM_Scroll(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_Scroll(WND *wndPtr, WPARAM32 wParam)
{
- fprintf(stdnimp, "edit: EM_SCROLL: message not implemented\n");
- return 0;
+ INT32 dy;
+
+ switch (wParam) {
+ case SB_LINEUP:
+ dy = -1;
+ break;
+ case SB_LINEDOWN:
+ dy = 1;
+ break;
+ case SB_PAGEUP:
+ case SB_PAGEDOWN:
+ dy = EDIT_GetVisibleLineCount(wndPtr);
+ if( wParam == SB_PAGEUP) dy = -dy;
+ break;
+ default:
+ return FALSE;
+ }
+ if (dy) {
+ EDIT_EM_LineScroll(wndPtr, 0, dy);
+ dprintf_edit(stddeb, "edit: notification EN_VSCROLL sent\n");
+ EDIT_NOTIFY_PARENT(wndPtr, EN_VSCROLL);
+ }
+ return MAKELONG( ((UINT16)(INT16)dy), TRUE );
}
@@ -2620,12 +2626,12 @@
* controls ???
*
*/
-static LRESULT EDIT_EM_ScrollCaret(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_ScrollCaret(WND *wndPtr)
{
INT32 e;
INT32 l;
INT32 li;
- INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0);
+ INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr);
INT32 vlc = EDIT_GetVisibleLineCount(wndPtr);
INT32 ww = EDIT_GetWndWidth(wndPtr);
INT32 cw = EDIT_GetAveCharWidth(wndPtr);
@@ -2634,8 +2640,8 @@
INT32 dx = 0;
EDIT_GetSel(wndPtr, NULL, &e);
- l = (INT32)EDIT_EM_LineFromChar(wndPtr, e, 0);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0);
+ l = (INT32)EDIT_EM_LineFromChar(wndPtr, e);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l);
x = EDIT_WndXFromCol(wndPtr, l, e - li);
if (l >= fv + vlc)
dy = l - vlc + 1 - fv;
@@ -2665,7 +2671,7 @@
* EM_SETHANDLE
*
*/
-static LRESULT EDIT_EM_SetHandle(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_SetHandle(WND *wndPtr, WPARAM32 wParam)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
@@ -2680,12 +2686,12 @@
es->LineCount = 0;
es->FirstVisibleLine = 0;
es->SelStart = es->SelEnd = 0;
- EDIT_EM_EmptyUndoBuffer(wndPtr, 0, 0);
- EDIT_EM_SetModify(wndPtr, FALSE, 0);
+ EDIT_EM_EmptyUndoBuffer(wndPtr);
+ EDIT_EM_SetModify(wndPtr, FALSE);
EDIT_BuildLineDefs(wndPtr);
- if (EDIT_GetRedraw(wndPtr))
+ if (!IsNoRedraw(wndPtr))
InvalidateRect32( wndPtr->hwndSelf, NULL, TRUE );
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
}
return 0;
}
@@ -2696,7 +2702,7 @@
* EM_SETHANDLE16
*
*/
-static LRESULT EDIT_EM_SetHandle16(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_SetHandle16(WND *wndPtr, WPARAM32 wParam)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
@@ -2711,12 +2717,12 @@
es->LineCount = 0;
es->FirstVisibleLine = 0;
es->SelStart = es->SelEnd = 0;
- EDIT_EM_EmptyUndoBuffer(wndPtr, 0, 0);
- EDIT_EM_SetModify(wndPtr, FALSE, 0);
+ EDIT_EM_EmptyUndoBuffer(wndPtr);
+ EDIT_EM_SetModify(wndPtr, FALSE);
EDIT_BuildLineDefs(wndPtr);
- if (EDIT_GetRedraw(wndPtr))
+ if (!IsNoRedraw(wndPtr))
InvalidateRect32( wndPtr->hwndSelf, NULL, TRUE );
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
}
return 0;
}
@@ -2784,11 +2790,14 @@
* EM_SETMODIFY
*
*/
-static LRESULT EDIT_EM_SetModify(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_SetModify(WND *wndPtr, WPARAM32 wParam)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
- es->TextChanged = (BOOL32)wParam;
+ if( wParam )
+ es->eState |= EF_TEXTCHANGED;
+ else
+ es->eState &= ~EF_TEXTCHANGED;
return 0;
}
@@ -2800,7 +2809,7 @@
* FIXME: This imlementation is way too simple
*
*/
-static LRESULT EDIT_EM_SetPasswordChar(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_SetPasswordChar(WND *wndPtr, WPARAM32 wParam)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
@@ -2814,7 +2823,7 @@
* EM_SETREADONLY
*
*/
-static LRESULT EDIT_EM_SetReadOnly(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_SetReadOnly(WND *wndPtr, WPARAM32 wParam)
{
if ((BOOL32)wParam)
wndPtr->dwStyle |= ES_READONLY;
@@ -2857,7 +2866,7 @@
{
INT32 ns = (INT32)wParam;
INT32 ne = (INT32)lParam;
- INT32 tl = (INT32)EDIT_WM_GetTextLength(wndPtr, 0, 0);
+ INT32 tl = (INT32)EDIT_WM_GetTextLength(wndPtr);
if (ns == -1) {
EDIT_GetSel(wndPtr, NULL, &ne);
@@ -2890,7 +2899,7 @@
ne = -1;
EDIT_EM_SetSel(wndPtr, ns, ne);
if (!wParam)
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
return -1;
}
@@ -2968,7 +2977,7 @@
* EM_UNDO / WM_UNDO
*
*/
-static LRESULT EDIT_EM_Undo(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_EM_Undo(WND *wndPtr)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
LPSTR utext = xstrdup(EDIT_GetUndoPointer(wndPtr));
@@ -2977,7 +2986,7 @@
es->UndoInsertLen, utext);
EDIT_EM_SetSel(wndPtr, es->UndoPos, es->UndoPos + es->UndoInsertLen);
- EDIT_EM_EmptyUndoBuffer(wndPtr, 0, 0);
+ EDIT_EM_EmptyUndoBuffer(wndPtr);
EDIT_EM_ReplaceSel(wndPtr, TRUE, (LPARAM)utext);
EDIT_EM_SetSel(wndPtr, es->UndoPos, es->UndoPos + es->UndoInsertLen);
free(utext);
@@ -3031,7 +3040,7 @@
* WM_CLEAR
*
*/
-static LRESULT EDIT_WM_Clear(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_WM_Clear(WND *wndPtr)
{
EDIT_EM_ReplaceSel(wndPtr, TRUE, (LPARAM)"");
@@ -3051,23 +3060,23 @@
switch (LOWORD(wParam)) {
case EM_UNDO32:
- EDIT_EM_Undo(wndPtr, 0, 0);
+ EDIT_EM_Undo(wndPtr);
break;
case WM_CUT:
- EDIT_WM_Cut(wndPtr, 0, 0);
+ EDIT_WM_Cut(wndPtr);
break;
case WM_COPY:
- EDIT_WM_Copy(wndPtr, 0, 0);
+ EDIT_WM_Copy(wndPtr);
break;
case WM_PASTE:
- EDIT_WM_Paste(wndPtr, 0, 0);
+ EDIT_WM_Paste(wndPtr);
break;
case WM_CLEAR:
- EDIT_WM_Clear(wndPtr, 0, 0);
+ EDIT_WM_Clear(wndPtr);
break;
case EM_SETSEL32:
EDIT_EM_SetSel(wndPtr, 0, -1);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
break;
default:
dprintf_edit(stddeb, "edit: unknown menu item, please report\n");
@@ -3103,7 +3112,7 @@
* WM_COPY
*
*/
-static LRESULT EDIT_WM_Copy(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_WM_Copy(WND *wndPtr)
{
INT32 s;
INT32 e;
@@ -3174,14 +3183,14 @@
}
es->BufSize = LocalSize32(es->hBuf32) - 1;
es->UndoBufSize = LocalSize32(es->hUndoBuf) - 1;
- EDIT_EM_EmptyUndoBuffer(wndPtr, 0, 0);
+ EDIT_EM_EmptyUndoBuffer(wndPtr);
text = EDIT_GetPointer(wndPtr);
*text = '\0';
EDIT_BuildLineDefs(wndPtr);
EDIT_WM_SetFont(wndPtr, 0, 0);
if (cs->lpszName && *(cs->lpszName) != '\0')
EDIT_EM_ReplaceSel(wndPtr, (WPARAM32)FALSE, (LPARAM)cs->lpszName);
- EDIT_WM_SetRedraw(wndPtr, TRUE, 0);
+ EDIT_WM_SetRedraw(wndPtr, TRUE);
return 0;
}
@@ -3191,10 +3200,10 @@
* WM_CUT
*
*/
-static LRESULT EDIT_WM_Cut(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_WM_Cut(WND *wndPtr)
{
- EDIT_WM_Copy(wndPtr, 0, 0);
- EDIT_WM_Clear(wndPtr, 0, 0);
+ EDIT_WM_Copy(wndPtr);
+ EDIT_WM_Clear(wndPtr);
return -1;
}
@@ -3204,7 +3213,7 @@
* WM_DESTROY
*
*/
-static LRESULT EDIT_WM_Destroy(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_WM_Destroy(WND *wndPtr)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
@@ -3219,7 +3228,8 @@
else
LOCAL_Free(wndPtr->hInstance, es->hBuf16);
free(es);
- *(EDITSTATE **)&wndPtr->wExtra = NULL;
+ wndPtr->wExtra[0] = 0;
+
return 0;
}
@@ -3229,7 +3239,7 @@
* WM_ENABLE
*
*/
-static LRESULT EDIT_WM_Enable(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_WM_Enable(WND *wndPtr, WPARAM32 wParam)
{
EDIT_InvalidateText(wndPtr, 0, -1);
return 0;
@@ -3241,7 +3251,7 @@
* WM_ERASEBKGND
*
*/
-static LRESULT EDIT_WM_EraseBkGnd(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_WM_EraseBkGnd(WND *wndPtr, WPARAM32 wParam)
{
HBRUSH32 hBrush;
RECT32 rc;
@@ -3269,7 +3279,7 @@
* WM_GETDLGCODE
*
*/
-static LRESULT EDIT_WM_GetDlgCode(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_WM_GetDlgCode(WND *wndPtr)
{
return DLGC_HASSETSEL | DLGC_WANTCHARS | DLGC_WANTARROWS;
}
@@ -3280,7 +3290,7 @@
* WM_GETFONT
*
*/
-static LRESULT EDIT_WM_GetFont(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_WM_GetFont(WND *wndPtr)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
@@ -3313,7 +3323,7 @@
* WM_GETTEXTLENGTH
*
*/
-static LRESULT EDIT_WM_GetTextLength(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_WM_GetTextLength(WND *wndPtr)
{
LPSTR text = EDIT_GetPointer(wndPtr);
@@ -3408,7 +3418,7 @@
/* undo */
EnableMenuItem32(hPopup, 0, MF_BYPOSITION |
- (EDIT_EM_CanUndo(wndPtr, 0, 0) ? MF_ENABLED : MF_GRAYED));
+ (EDIT_EM_CanUndo(wndPtr) ? MF_ENABLED : MF_GRAYED));
/* cut */
EnableMenuItem32(hPopup, 2, MF_BYPOSITION |
((e - s) && !IsPassword(wndPtr) ? MF_ENABLED : MF_GRAYED));
@@ -3423,11 +3433,63 @@
((e - s) ? MF_ENABLED : MF_GRAYED));
/* select all */
EnableMenuItem32(hPopup, 7, MF_BYPOSITION |
- (s || (e != EDIT_WM_GetTextLength(wndPtr, 0, 0)) ? MF_ENABLED : MF_GRAYED));
+ (s || (e != EDIT_WM_GetTextLength(wndPtr)) ? MF_ENABLED : MF_GRAYED));
return 0;
}
+/*********************************************************************
+ *
+ * EDIT_CheckCombo
+ *
+ */
+static BOOL32 EDIT_CheckCombo(WND *wndPtr, UINT32 msg, WPARAM32 wParam, LPARAM lParam)
+{
+ HWND32 hLBox;
+
+ if( WIDGETS_IsControl32( wndPtr->parent, BIC32_COMBO ) &&
+ (hLBox = COMBO_GetLBWindow( wndPtr->parent )) )
+ {
+ HWND32 hCombo = wndPtr->parent->hwndSelf;
+ BOOL32 bUIFlip = TRUE;
+
+ dprintf_combo(stddeb, "EDIT_CheckCombo [%04x]: handling msg %04x (%04x)\n",
+ wndPtr->hwndSelf, (UINT16)msg, (UINT16)wParam );
+ switch( msg )
+ {
+ case WM_KEYDOWN: /* Handle F4 and arrow keys */
+ if( wParam != VK_F4 )
+ {
+ bUIFlip = (BOOL32)SendMessage32A( hCombo, CB_GETEXTENDEDUI32, 0, 0 );
+ if( SendMessage32A( hCombo, CB_GETDROPPEDSTATE32, 0, 0 ) ) bUIFlip = FALSE;
+ }
+
+ if( !bUIFlip )
+ SendMessage32A( hLBox, WM_KEYDOWN, wParam, 0 );
+ else
+ {
+ /* make sure ComboLBox pops up */
+
+ SendMessage32A( hCombo, CB_SETEXTENDEDUI32, 0, 0 );
+ SendMessage32A( hLBox, WM_KEYDOWN, VK_F4, 0 );
+ SendMessage32A( hCombo, CB_SETEXTENDEDUI32, 1, 0 );
+ }
+ break;
+
+ case WM_SYSKEYDOWN: /* Handle Alt+up/down arrows */
+ bUIFlip = (BOOL32)SendMessage32A( hCombo, CB_GETEXTENDEDUI32, 0, 0 );
+
+ if( bUIFlip )
+ {
+ bUIFlip = (BOOL32)SendMessage32A( hCombo, CB_GETDROPPEDSTATE32, 0, 0 );
+ SendMessage32A( hCombo, CB_SHOWDROPDOWN32, (bUIFlip) ? FALSE : TRUE, 0 );
+ } else SendMessage32A( hLBox, WM_KEYDOWN, VK_F4, 0 );
+ break;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
/*********************************************************************
*
@@ -3452,8 +3514,12 @@
EDIT_GetSel(wndPtr, &s, &e);
switch (wParam) {
- case VK_LEFT:
+ case VK_F4:
case VK_UP:
+ if( EDIT_CheckCombo(wndPtr, WM_KEYDOWN, wParam, lParam) ) break;
+ if( wParam == VK_F4 ) break;
+ /* fall through */
+ case VK_LEFT:
if (IsMultiLine(wndPtr) && (wParam == VK_UP))
EDIT_MoveUpward(wndPtr, shift);
else
@@ -3462,8 +3528,10 @@
else
EDIT_MoveBackward(wndPtr, shift);
break;
- case VK_RIGHT:
case VK_DOWN:
+ if( EDIT_CheckCombo(wndPtr, WM_KEYDOWN, wParam, lParam) ) break;
+ /* fall through */
+ case VK_RIGHT:
if (IsMultiLine(wndPtr) && (wParam == VK_DOWN))
EDIT_MoveDownward(wndPtr, shift);
else if (control)
@@ -3488,7 +3556,7 @@
case VK_BACK:
if (!IsReadOnly(wndPtr) && !control)
if (e != s)
- EDIT_WM_Clear(wndPtr, 0, 0);
+ EDIT_WM_Clear(wndPtr);
else
EDIT_DelLeft(wndPtr);
break;
@@ -3496,9 +3564,9 @@
if (!IsReadOnly(wndPtr) && !(shift && control))
if (e != s) {
if (shift)
- EDIT_WM_Cut(wndPtr, 0, 0);
+ EDIT_WM_Cut(wndPtr);
else
- EDIT_WM_Clear(wndPtr, 0, 0);
+ EDIT_WM_Clear(wndPtr);
} else {
if (shift)
EDIT_DelLeft(wndPtr);
@@ -3511,9 +3579,9 @@
case VK_INSERT:
if (shift) {
if (!IsReadOnly(wndPtr))
- EDIT_WM_Paste(wndPtr, 0, 0);
+ EDIT_WM_Paste(wndPtr);
} else if (control)
- EDIT_WM_Copy(wndPtr, 0, 0);
+ EDIT_WM_Copy(wndPtr);
break;
}
return 0;
@@ -3525,11 +3593,13 @@
* WM_KILLFOCUS
*
*/
-static LRESULT EDIT_WM_KillFocus(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_WM_KillFocus(WND *wndPtr, WPARAM32 wParam)
{
INT32 s;
INT32 e;
+ EDITSTATE *es = EDITSTATEPTR(wndPtr);
+ es->eState &= ~EF_FOCUSED;
DestroyCaret32();
if(!(wndPtr->dwStyle & ES_NOHIDESEL)) {
EDIT_EM_GetSel(wndPtr, (WPARAM32)&s, (LPARAM)&e);
@@ -3558,13 +3628,13 @@
LPSTR text = EDIT_GetPointer(wndPtr);
EDIT_GetSel(wndPtr, NULL, &e);
- l = (INT32)EDIT_EM_LineFromChar(wndPtr, e, 0);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0);
- ll = (INT32)EDIT_EM_LineLength(wndPtr, e, 0);
+ l = (INT32)EDIT_EM_LineFromChar(wndPtr, e);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l);
+ ll = (INT32)EDIT_EM_LineLength(wndPtr, e);
s = li + EDIT_CallWordBreakProc (wndPtr, text + li, e - li, ll, WB_LEFT);
e = li + EDIT_CallWordBreakProc(wndPtr, text + li, e - li, ll, WB_RIGHT);
EDIT_EM_SetSel(wndPtr, s, e);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
return 0;
}
@@ -3582,7 +3652,7 @@
INT32 c;
INT32 s;
INT32 e;
- INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0);
+ INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr);
INT32 vlc = EDIT_GetVisibleLineCount(wndPtr);
INT32 li;
@@ -3591,14 +3661,14 @@
l = MIN(fv + vlc - 1, MAX(fv, l));
x = MIN(EDIT_GetWndWidth(wndPtr), MAX(0, x));
c = EDIT_ColFromWndX(wndPtr, l, x);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l);
e = li + c;
if (GetKeyState32(VK_SHIFT) & 0x8000)
EDIT_GetSel(wndPtr, &s, NULL);
else
s = e;
EDIT_SetSel(wndPtr, s, e);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ EDIT_EM_ScrollCaret(wndPtr);
SetTimer32(wndPtr->hwndSelf, 0, 100, NULL);
return 0;
}
@@ -3638,14 +3708,14 @@
if (GetCapture32() == wndPtr->hwndSelf) {
x = (INT32)(INT16)LOWORD(lParam);
y = (INT32)(INT16)HIWORD(lParam);
- fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0);
+ fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr);
vlc = EDIT_GetVisibleLineCount(wndPtr);
l = EDIT_LineFromWndY(wndPtr, y);
l = MIN(fv + vlc - 1, MAX(fv, l));
x = MIN(EDIT_GetWndWidth(wndPtr), MAX(0, x));
c = EDIT_ColFromWndX(wndPtr, l, x);
EDIT_GetSel(wndPtr, &s, NULL);
- li = (INT32)EDIT_EM_LineIndex(wndPtr, l, 0);
+ li = (INT32)EDIT_EM_LineIndex(wndPtr, l);
EDIT_SetSel(wndPtr, s, li + c);
}
/*
@@ -3661,13 +3731,13 @@
* WM_PAINT
*
*/
-static LRESULT EDIT_WM_Paint(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_WM_Paint(WND *wndPtr, WPARAM32 wParam)
{
PAINTSTRUCT32 ps;
INT32 i;
- INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0);
+ INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr);
INT32 vlc = EDIT_GetVisibleLineCount(wndPtr);
- INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr, 0, 0);
+ INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr);
HDC32 hdc;
HFONT32 hFont;
HFONT32 oldFont = 0;
@@ -3676,14 +3746,15 @@
RECT32 rcRgn;
LRESULT pos;
INT32 e;
+ EDITSTATE *es = EDITSTATEPTR(wndPtr);
BOOL32 rev = IsWindowEnabled32(wndPtr->hwndSelf) &&
- ((GetFocus32() == wndPtr->hwndSelf) ||
+ ((es->eState & EF_FOCUSED) ||
(wndPtr->dwStyle & ES_NOHIDESEL));
hdc = BeginPaint32(wndPtr->hwndSelf, &ps);
GetClientRect32(wndPtr->hwndSelf, &rc);
IntersectClipRect32( hdc, rc.left, rc.top, rc.right, rc.bottom );
- hFont = (HFONT32)EDIT_WM_GetFont(wndPtr, 0, 0);
+ hFont = (HFONT32)EDIT_WM_GetFont(wndPtr);
if (hFont)
oldFont = (HFONT32)SelectObject32(hdc, hFont);
EDIT_SEND_CTLCOLOR(wndPtr, hdc);
@@ -3696,10 +3767,10 @@
EDIT_PaintLine(wndPtr, hdc, i, rev);
}
if (hFont) SelectObject32(hdc, oldFont);
- if (wndPtr->hwndSelf == GetFocus32()) {
+ if (es->eState & EF_FOCUSED) {
EDIT_GetSel(wndPtr, NULL, &e);
- pos = EDIT_EM_PosFromChar(wndPtr, e, 0);
- SetCaretPos16( (INT16)LOWORD(pos), (INT16)HIWORD(pos) );
+ pos = EDIT_EM_PosFromChar(wndPtr, e);
+ SetCaretPos16((INT16)LOWORD(pos), (INT16)HIWORD(pos));
}
EndPaint32(wndPtr->hwndSelf, &ps);
return 0;
@@ -3711,14 +3782,13 @@
* WM_PASTE
*
*/
-static LRESULT EDIT_WM_Paste(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_WM_Paste(WND *wndPtr)
{
HGLOBAL16 hsrc;
LPSTR src;
OpenClipboard32(wndPtr->hwndSelf);
- if ((hsrc = GetClipboardData16(CF_TEXT)))
- {
+ if ((hsrc = GetClipboardData16(CF_TEXT))) {
src = (LPSTR)GlobalLock16(hsrc);
EDIT_EM_ReplaceSel(wndPtr, (WPARAM32)TRUE, (LPARAM)src);
GlobalUnlock16(hsrc);
@@ -3748,13 +3818,15 @@
* WM_SETFOCUS
*
*/
-static LRESULT EDIT_WM_SetFocus(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_WM_SetFocus(WND *wndPtr, WPARAM32 wParam)
{
INT32 s;
INT32 e;
+ EDITSTATE *es = EDITSTATEPTR(wndPtr);
+ es->eState |= EF_FOCUSED;
EDIT_GetSel(wndPtr, &s, &e);
- CreateCaret32( wndPtr->hwndSelf, 0, 2, EDIT_GetLineHeight(wndPtr) );
+ CreateCaret32(wndPtr->hwndSelf, 0, 2, EDIT_GetLineHeight(wndPtr));
EDIT_SetSel(wndPtr, s, e);
if(!(wndPtr->dwStyle & ES_NOHIDESEL))
EDIT_InvalidateText(wndPtr, s, e);
@@ -3789,12 +3861,11 @@
if (es->hFont) SelectObject32(hdc, oldFont);
ReleaseDC32(wndPtr->hwndSelf, hdc);
EDIT_BuildLineDefs(wndPtr);
- if ((BOOL32)lParam && EDIT_GetRedraw(wndPtr))
+ if ((BOOL32)lParam && !IsNoRedraw(wndPtr))
InvalidateRect32( wndPtr->hwndSelf, NULL, TRUE );
- if (wndPtr->hwndSelf == GetFocus32()) {
+ if (es->eState & EF_FOCUSED) {
DestroyCaret32();
- CreateCaret32( wndPtr->hwndSelf, 0,
- 2, EDIT_GetLineHeight(wndPtr) );
+ CreateCaret32(wndPtr->hwndSelf, 0, 2, EDIT_GetLineHeight(wndPtr));
EDIT_SetSel(wndPtr, s, e);
ShowCaret32(wndPtr->hwndSelf);
}
@@ -3807,11 +3878,12 @@
* WM_SETREDRAW
*
*/
-static LRESULT EDIT_WM_SetRedraw(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
+static LRESULT EDIT_WM_SetRedraw(WND *wndPtr, WPARAM32 wParam)
{
- EDITSTATE *es = EDITSTATEPTR(wndPtr);
-
- es->Redraw = (BOOL32)wParam;
+ if( wParam )
+ wndPtr->flags &= ~WIN_NO_REDRAW;
+ else
+ wndPtr->flags |= WIN_NO_REDRAW;
return 0;
}
@@ -3825,9 +3897,12 @@
{
EDIT_EM_SetSel(wndPtr, 0, -1);
if (lParam)
+ {
+ dprintf_edit(stddeb,"\t'%s'\n", (char*)lParam );
EDIT_EM_ReplaceSel(wndPtr, (WPARAM32)FALSE, lParam);
- EDIT_EM_SetModify(wndPtr, TRUE, 0);
- EDIT_EM_ScrollCaret(wndPtr, 0, 0);
+ }
+ EDIT_EM_SetModify(wndPtr, TRUE);
+ EDIT_EM_ScrollCaret(wndPtr);
return 1;
}
@@ -3846,7 +3921,7 @@
EDIT_GetSel(wndPtr, 0, &e);
GetClientRect32(wndPtr->hwndSelf, &es->FormatRect);
- if (EDIT_GetRedraw(wndPtr) &&
+ if (!IsNoRedraw(wndPtr) &&
((wParam == SIZE_MAXIMIZED) ||
(wParam == SIZE_RESTORED))) {
if (IsMultiLine(wndPtr) && IsWordWrap(wndPtr))
@@ -3865,8 +3940,10 @@
static LRESULT EDIT_WM_SysKeyDown(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
if ((wParam == VK_BACK) && (lParam & 0x2000) &&
- (BOOL32)EDIT_EM_CanUndo(wndPtr, 0, 0))
- EDIT_EM_Undo(wndPtr, 0, 0);
+ (BOOL32)EDIT_EM_CanUndo(wndPtr))
+ EDIT_EM_Undo(wndPtr);
+ else if( wParam == VK_UP || wParam == VK_DOWN )
+ EDIT_CheckCombo( wndPtr, WM_SYSKEYDOWN, wParam, lParam );
return 0;
}
@@ -3895,48 +3972,44 @@
*/
static LRESULT EDIT_WM_VScroll(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
- INT32 lc = (INT32)EDIT_EM_GetLineCount(wndPtr, 0, 0);
- INT32 fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0);
- INT32 vlc = EDIT_GetVisibleLineCount(wndPtr);
+ INT32 lc, fv;
INT32 dy = 0;
BOOL32 not = TRUE;
LRESULT ret = 0;
switch (wParam) {
case SB_LINEUP:
- dy = -1;
- break;
case SB_LINEDOWN:
- dy = 1;
- break;
case SB_PAGEUP:
- dy = -vlc;
- break;
case SB_PAGEDOWN:
- dy = vlc;
- break;
- case SB_TOP:
- dy = -fv;
- break;
- case SB_BOTTOM:
- dy = lc - 1 - fv;
- break;
- case SB_THUMBTRACK:
- not = FALSE;
- /* fall through */
- case SB_THUMBPOSITION:
- dy = HIWORD(wParam) * (lc - 1) / 100 - fv;
- break;
- /* The next two are undocumented ! */
- case EM_GETTHUMB16:
- ret = (lc > 1) ? MAKELONG(fv * 100 / (lc - 1), 0) : 0;
- break;
- case EM_LINESCROLL16:
- dy = (INT16)LOWORD(lParam);
- break;
- case SB_ENDSCROLL:
+ EDIT_EM_Scroll( wndPtr, wParam );
+ return ret;
default:
- break;
+ lc = (INT32)EDIT_EM_GetLineCount(wndPtr);
+ fv = (INT32)EDIT_EM_GetFirstVisibleLine(wndPtr);
+ switch( wParam ) {
+ case SB_TOP:
+ dy = -fv;
+ break;
+ case SB_BOTTOM:
+ dy = lc - 1 - fv;
+ break;
+ case SB_THUMBTRACK:
+ not = FALSE;
+ /* fall through */
+ case SB_THUMBPOSITION:
+ dy = HIWORD(wParam) * (lc - 1) / 100 - fv;
+ break;
+ /* The next two are undocumented ! */
+ case EM_GETTHUMB16:
+ ret = (lc > 1) ? MAKELONG(fv * 100 / (lc - 1), 0) : 0;
+ break;
+ case EM_LINESCROLL16:
+ dy = (INT16)LOWORD(lParam);
+ break;
+ case SB_ENDSCROLL:
+ /* nothing to do */
+ }
}
if (dy) {
EDIT_EM_LineScroll(wndPtr, 0, dy);