#endif
#include "wx/menuitem.h"
+#include "wx/log.h"
#include "wx/msw/private.h"
#include <string.h>
#undef GetClassInfo
#endif
+#ifdef __WXDEBUG__
+ static const char *GetMessageName(int message);
+#endif //WXDEBUG
+
#define WINDOW_MARGIN 3 // This defines sensitivity of Leave events
wxMenu *wxCurrentPopupMenu = NULL;
BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler)
EVT_CHAR(wxWindow::OnChar)
- EVT_SIZE(wxWindow::OnSize)
EVT_ERASE_BACKGROUND(wxWindow::OnEraseBackground)
EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged)
EVT_INIT_DIALOG(wxWindow::OnInitDialog)
#endif
// Find an item given the MS Windows id
-wxWindow *wxWindow::FindItem(const int id) const
+wxWindow *wxWindow::FindItem(int id) const
{
if (!GetChildren())
return NULL;
}
// Find an item given the MS Windows handle
-wxWindow *wxWindow::FindItemByHWND(const WXHWND hWnd, bool controlOnly) const
+wxWindow *wxWindow::FindItemByHWND(WXHWND hWnd, bool controlOnly) const
{
if (!GetChildren())
return NULL;
}
// Default command handler
-bool wxWindow::MSWCommand(const WXUINT WXUNUSED(param), const WXWORD WXUNUSED(id))
+bool wxWindow::MSWCommand(WXUINT WXUNUSED(param), WXWORD WXUNUSED(id))
{
return FALSE;
}
-bool wxWindow::MSWNotify(const WXWPARAM WXUNUSED(wParam), const WXLPARAM WXUNUSED(lParam))
+bool wxWindow::MSWNotify(WXWPARAM WXUNUSED(wParam), WXLPARAM WXUNUSED(lParam))
{
return FALSE;
}
-void wxWindow::PreDelete(const WXHDC WXUNUSED(dc))
+void wxWindow::PreDelete(WXHDC WXUNUSED(dc))
{
}
extern char wxCanvasClassName[];
// Constructor
-bool wxWindow::Create(wxWindow *parent, const wxWindowID id,
+bool wxWindow::Create(wxWindow *parent, wxWindowID id,
const wxPoint& pos,
const wxSize& size,
- const long style,
+ long style,
const wxString& name)
{
// Generic
::SetFocus(hWnd);
}
-void wxWindow::Enable(const bool enable)
+void wxWindow::Enable(bool enable)
{
m_winEnabled = enable;
HWND hWnd = (HWND) GetHWND();
// I think we should retain the old-style
// DragAcceptFiles in parallel with SetDropTarget.
// JACS
-void wxWindow::DragAcceptFiles(const bool accept)
+void wxWindow::DragAcceptFiles(bool accept)
{
HWND hWnd = (HWND) GetHWND();
if (hWnd)
*y = rect.bottom;
}
-void wxWindow::SetSize(const int x, const int y, const int width, const int height, const int sizeFlags)
+void wxWindow::SetSize(int x, int y, int width, int height, int sizeFlags)
{
int currentX, currentY;
GetPosition(¤tX, ¤tY);
HWND hWnd = (HWND) GetHWND();
if (hWnd)
MoveWindow(hWnd, actualX, actualY, actualWidth, actualHeight, (BOOL)TRUE);
-
-/* Not needed? should be called anyway via MoveWindow
- if (!(width == -1) && (height == -1))
- {
-#if WXWIN_COMPATIBILITY
- GetEventHandler()->OldOnSize(width, height);
-#else
- wxSizeEvent event(wxSize(width, height), m_windowId);
- event.eventObject = this;
- GetEventHandler()->ProcessEvent(event);
-#endif
- }
-*/
}
-void wxWindow::SetClientSize(const int width, const int height)
+void wxWindow::SetClientSize(int width, int height)
{
wxWindow *parent = GetParent();
HWND hWnd = (HWND) GetHWND();
}
MoveWindow(hWnd, point.x, point.y, actual_width, actual_height, (BOOL)TRUE);
-#if WXWIN_COMPATIBILITY
- GetEventHandler()->OldOnSize(width, height);
-#else
+
wxSizeEvent event(wxSize(width, height), m_windowId);
- event.m_eventObject = this;
+ event.SetEventObject(this);
GetEventHandler()->ProcessEvent(event);
-#endif
}
-bool wxWindow::Show(const bool show)
+bool wxWindow::Show(bool show)
{
HWND hWnd = (HWND) GetHWND();
int cshow;
}
void wxWindow::GetTextExtent(const wxString& string, int *x, int *y,
- int *descent, int *externalLeading, const wxFont *theFont, const bool) const
+ int *descent, int *externalLeading, const wxFont *theFont, bool) const
{
wxFont *fontToUse = (wxFont *)theFont;
if (!fontToUse)
if (fontToUse && fontToUse->Ok())
{
if ((fnt=(HFONT) fontToUse->GetResourceHandle()))
- was = SelectObject(dc,fnt) ;
+ was = (HFONT) SelectObject(dc,fnt) ;
}
SIZE sizeRect;
// fontToUse->ReleaseResource();
}
-#if WXWIN_COMPATIBILITY
-void wxWindow::GetTextExtent(const wxString& string, float *x, float *y,
- float *descent,
- float *externalLeading,
- const wxFont *theFont, const bool use16) const
- {
- int x1, y1, descent1, externalLeading1;
- GetTextExtent(string, &x1, &y1, &descent1, &externalLeading1, theFont, use16);
- *x = x1; *y = y1;
- if ( descent )
- *descent = descent1;
- if ( externalLeading )
- *externalLeading = externalLeading1;
- }
-#endif
-
-void wxWindow::Refresh(const bool eraseBack, const wxRectangle *rect)
+void wxWindow::Refresh(bool eraseBack, const wxRectangle *rect)
{
HWND hWnd = (HWND) GetHWND();
if (hWnd)
wxWndHook = NULL;
wnd->m_hWnd = (WXHWND) hWnd;
}
-#if (DEBUG > 1)
+#if (WXDEBUG > 1)
wxDebugMsg("hWnd = %d, m_hWnd = %d, msg = %d\n", hWnd, m_hWnd, message);
#endif
// Stop right here if we don't have a valid handle
// Main Windows 3 window proc
long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
{
-#if 0
- switch (message)
- {
- case WM_INITDIALOG:
- case WM_ACTIVATE:
- case WM_SETFOCUS:
- case WM_KILLFOCUS:
- case WM_CREATE:
- case WM_PAINT:
- case WM_QUERYDRAGICON:
- case WM_SIZE:
- case WM_RBUTTONDOWN:
- case WM_RBUTTONUP:
- case WM_RBUTTONDBLCLK:
- case WM_MBUTTONDOWN:
- case WM_MBUTTONUP:
- case WM_MBUTTONDBLCLK:
- case WM_LBUTTONDOWN:
- case WM_LBUTTONUP:
- case WM_LBUTTONDBLCLK:
- case WM_MOUSEMOVE:
-// case WM_DESTROY:
- case WM_COMMAND:
- case WM_NOTIFY:
- case WM_MENUSELECT:
- case WM_INITMENUPOPUP:
- case WM_DRAWITEM:
- case WM_MEASUREITEM:
- case WM_KEYDOWN:
- case WM_KEYUP:
- case WM_CHAR: // Always an ASCII character
- case WM_HSCROLL:
- case WM_VSCROLL:
- case WM_CTLCOLORBTN:
- case WM_CTLCOLORDLG:
- case WM_CTLCOLORLISTBOX:
- case WM_CTLCOLORMSGBOX:
- case WM_CTLCOLORSCROLLBAR:
- case WM_CTLCOLORSTATIC:
- case WM_CTLCOLOREDIT:
- case WM_SYSCOLORCHANGE:
- case WM_ERASEBKGND:
- case WM_MDIACTIVATE:
- case WM_DROPFILES:
- case WM_QUERYENDSESSION:
-// case WM_CLOSE:
- case WM_GETMINMAXINFO:
- return MSWDefWindowProc(message, wParam, lParam );
- }
-#endif
-
+ #ifdef __WXDEBUG__
+ wxLogTrace(wxTraceMessages, "Processing %s", GetMessageName(message));
+ #endif // WXDEBUG
HWND hWnd = (HWND)m_hWnd;
return MSWDefWindowProc(message, wParam, lParam );
break;
}
- case WM_CREATE:
- {
- MSWOnCreate((WXLPCREATESTRUCT) (LPCREATESTRUCT)lParam);
- return 0;
- break;
- }
- case WM_SHOWWINDOW:
- {
- MSWOnShow((wParam != 0), (int) lParam);
- break;
- }
- case WM_PAINT:
- {
+ case WM_CREATE:
+ {
+ MSWOnCreate((WXLPCREATESTRUCT) (LPCREATESTRUCT)lParam);
+ return 0;
+ break;
+ }
+ case WM_SHOWWINDOW:
+ {
+ MSWOnShow((wParam != 0), (int) lParam);
+ break;
+ }
+ case WM_PAINT:
+ {
if (MSWOnPaint())
return 0;
else return MSWDefWindowProc(message, wParam, lParam );
break;
}
- case WM_QUERYDRAGICON:
- {
- HICON hIcon = 0;
+ case WM_QUERYDRAGICON:
+ {
+ HICON hIcon = 0;
if ((hIcon = (HICON) MSWOnQueryDragIcon()))
return (long)hIcon;
else return MSWDefWindowProc(message, wParam, lParam );
break;
}
case WM_COMMAND:
- {
+ {
#ifdef __WIN32__
WORD id = LOWORD(wParam);
HWND hwnd = (HWND)lParam;
if (!MSWOnCommand(id, cmd, (WXHWND) hwnd))
return MSWDefWindowProc(message, wParam, lParam );
break;
- }
+ }
#if defined(__WIN95__)
case WM_NOTIFY:
- {
+ {
if (!MSWOnNotify(wParam, lParam))
return MSWDefWindowProc(message, wParam, lParam );
break;
}
case WM_KEYDOWN:
- {
- if (wParam == VK_SHIFT)
- return Default();
-
- else if (wParam == VK_CONTROL)
- return Default();
-
+ // we consider these message "not interesting"
+ if ( wParam == VK_SHIFT || wParam == VK_CONTROL )
+ return Default();
+
// Avoid duplicate messages to OnChar
- else if ((wParam != VK_ESCAPE) && (wParam != VK_SPACE) && (wParam != VK_RETURN) && (wParam != VK_BACK) && (wParam != VK_TAB))
- {
+ if ( (wParam != VK_ESCAPE) && (wParam != VK_SPACE) &&
+ (wParam != VK_RETURN) && (wParam != VK_BACK) &&
+ (wParam != VK_TAB) )
+ {
MSWOnChar((WORD)wParam, lParam);
- if (::GetKeyState(VK_CONTROL)&0x100?TRUE:FALSE)
- return Default();
- }
- else
- return Default();
- }
+ if ( ::GetKeyState(VK_CONTROL) & 0x100 )
+ return Default();
+ }
+ else if ( ::GetKeyState(VK_CONTROL) & 0x100 )
+ MSWOnChar((WORD)wParam, lParam);
+ else
+ return Default();
+ break;
+
case WM_KEYUP:
- {
break;
- }
- // VZ: WM_KEYUP not processed
+
case WM_CHAR: // Always an ASCII character
- {
- MSWOnChar((WORD)wParam, lParam, TRUE);
- break;
- }
+ {
+ MSWOnChar((WORD)wParam, lParam, TRUE);
+ break;
+ }
case WM_HSCROLL:
{
}
#ifdef __WIN32__
case WM_CTLCOLORBTN:
- {
+ {
int nCtlColor = CTLCOLOR_BTN;
HWND control = (HWND)lParam;
HDC pDC = (HDC)wParam;
return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor,
message, wParam, lParam);
break;
- }
+ }
case WM_CTLCOLORDLG:
- {
+ {
int nCtlColor = CTLCOLOR_DLG;
HWND control = (HWND)lParam;
HDC pDC = (HDC)wParam;
return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor,
message, wParam, lParam);\
break;
- }
+ }
case WM_CTLCOLORLISTBOX:
- {
+ {
int nCtlColor = CTLCOLOR_LISTBOX;
HWND control = (HWND)lParam;
HDC pDC = (HDC)wParam;
return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor,
message, wParam, lParam);
break;
- }
+ }
case WM_CTLCOLORMSGBOX:
- {
+ {
int nCtlColor = CTLCOLOR_MSGBOX;
HWND control = (HWND)lParam;
HDC pDC = (HDC)wParam;
return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor,
message, wParam, lParam);
break;
- }
+ }
case WM_CTLCOLORSCROLLBAR:
- {
+ {
int nCtlColor = CTLCOLOR_SCROLLBAR;
HWND control = (HWND)lParam;
HDC pDC = (HDC)wParam;
return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor,
message, wParam, lParam);
break;
- }
+ }
case WM_CTLCOLORSTATIC:
- {
+ {
int nCtlColor = CTLCOLOR_STATIC;
HWND control = (HWND)lParam;
HDC pDC = (HDC)wParam;
return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor,
message, wParam, lParam);
break;
- }
+ }
case WM_CTLCOLOREDIT:
- {
+ {
int nCtlColor = CTLCOLOR_EDIT;
HWND control = (HWND)lParam;
HDC pDC = (HDC)wParam;
return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor,
message, wParam, lParam);
break;
- }
+ }
#else
case WM_CTLCOLOR:
{
{
MSWOnDropFiles(wParam);
break;
- }
+ }
case WM_INITDIALOG:
{
return 0; // MSWOnInitDialog((WXHWND)(HWND)wParam);
break;
- }
+ }
case WM_QUERYENDSESSION:
{
- // Same as WM_CLOSE, but inverted results. Thx Microsoft :-)
+ // Same as WM_CLOSE, but inverted results. Thx Microsoft :-)
return MSWOnClose();
break;
}
break;
}
+ case WM_GETDLGCODE:
+ return MSWGetDlgCode();
+
/*
#if HAVE_SOCKET
case WM_TIMER:
{
#if 0
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWDestroyWindow %d\n", handle);
#endif
MSWDetachWindowMenu();
#endif
}
-void wxWindow::MSWCreate(const int id, wxWindow *parent, const char *wclass, wxWindow *wx_win, const char *title,
- const int x, const int y, const int width, const int height,
- const WXDWORD style, const char *dialog_template, const WXDWORD extendedStyle)
+void wxWindow::MSWCreate(int id, wxWindow *parent, const char *wclass, wxWindow *wx_win, const char *title,
+ int x, int y, int width, int height,
+ WXDWORD style, const char *dialog_template, WXDWORD extendedStyle)
{
bool is_dialog = (dialog_template != NULL);
int x1 = CW_USEDEFAULT;
wxWndHook = NULL;
wxWinHandleList->Append((long)m_hWnd, this);
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWCreate %d\n", m_hWnd);
#endif
}
bool wxWindow::MSWOnClose(void)
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnClose %d\n", handle);
#endif
return FALSE;
bool wxWindow::MSWOnDestroy(void)
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnDestroy %d\n", handle);
#endif
// delete our drop target if we've got one
// Deal with child commands from buttons etc.
-bool wxWindow::MSWOnNotify(const WXWPARAM wParam, const WXLPARAM lParam)
+bool wxWindow::MSWOnNotify(WXWPARAM wParam, WXLPARAM lParam)
{
#if defined(__WIN95__)
// Find a child window to send the notification to, e.g. a toolbar.
return FALSE;
}
-void wxWindow::MSWOnMenuHighlight(const WXWORD WXUNUSED(item), const WXWORD WXUNUSED(flags), const WXHMENU WXUNUSED(sysmenu))
+void wxWindow::MSWOnMenuHighlight(WXWORD WXUNUSED(item), WXWORD WXUNUSED(flags), WXHMENU WXUNUSED(sysmenu))
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnMenuHighlight %d\n", handle);
#endif
}
-void wxWindow::MSWOnInitMenuPopup(const WXHMENU menu, const int pos, const bool isSystem)
+void wxWindow::MSWOnInitMenuPopup(WXHMENU menu, int pos, bool isSystem)
{
- if (!isSystem)
- OldOnInitMenuPopup(pos);
}
-bool wxWindow::MSWOnActivate(const int state, const bool WXUNUSED(minimized), const WXHWND WXUNUSED(activate))
+bool wxWindow::MSWOnActivate(int state, bool WXUNUSED(minimized), WXHWND WXUNUSED(activate))
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnActivate %d\n", handle);
#endif
-#if WXWIN_COMPATIBILITY
- GetEventHandler()->OldOnActivate(((state == WA_ACTIVE) || (state == WA_CLICKACTIVE)));
-#else
wxActivateEvent event(wxEVT_ACTIVATE, ((state == WA_ACTIVE) || (state == WA_CLICKACTIVE)),
m_windowId);
- event.m_eventObject = this;
+ event.SetEventObject(this);
GetEventHandler()->ProcessEvent(event);
-#endif
return 0;
}
-bool wxWindow::MSWOnSetFocus(const WXHWND WXUNUSED(hwnd))
+bool wxWindow::MSWOnSetFocus(WXHWND WXUNUSED(hwnd))
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnSetFocus %d\n", m_hWnd);
#endif
// Deal with caret
::ShowCaret((HWND) GetHWND());
}
-#if WXWIN_COMPATIBILITY
- GetEventHandler()->OldOnSetFocus();
-#else
wxFocusEvent event(wxEVT_SET_FOCUS, m_windowId);
- event.m_eventObject = this;
- GetEventHandler()->ProcessEvent(event);
-#endif
- return TRUE;
+ event.SetEventObject(this);
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
+ return TRUE;
}
-bool wxWindow::MSWOnKillFocus(const WXHWND WXUNUSED(hwnd))
+bool wxWindow::MSWOnKillFocus(WXHWND WXUNUSED(hwnd))
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnKillFocus %d\n", m_hWnd);
#endif
// Deal with caret
::DestroyCaret();
}
-#if WXWIN_COMPATIBILITY
- GetEventHandler()->OldOnKillFocus();
-#else
wxFocusEvent event(wxEVT_KILL_FOCUS, m_windowId);
- event.m_eventObject = this;
- GetEventHandler()->ProcessEvent(event);
-#endif
+ event.SetEventObject(this);
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
return TRUE;
}
-void wxWindow::MSWOnDropFiles(const WXWPARAM wParam)
+void wxWindow::MSWOnDropFiles(WXWPARAM wParam)
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnDropFiles %d\n", m_hWnd);
#endif
- HANDLE hFilesInfo = (HANDLE)wParam;
+ HDROP hFilesInfo = (HDROP) wParam;
POINT dropPoint;
DragQueryPoint(hFilesInfo, (LPPOINT) &dropPoint);
event.m_eventObject = this;
event.m_pos.x = dropPoint.x; event.m_pos.x = dropPoint.y;
- GetEventHandler()->ProcessEvent(event);
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
delete[] files;
}
-bool wxWindow::MSWOnDrawItem(const int id, WXDRAWITEMSTRUCT *itemStruct)
+bool wxWindow::MSWOnDrawItem(int id, WXDRAWITEMSTRUCT *itemStruct)
{
#if USE_OWNER_DRAWN
if ( id == 0 ) { // is it a menu item?
return FALSE;
}
-bool wxWindow::MSWOnMeasureItem(const int id, WXMEASUREITEMSTRUCT *itemStruct)
+bool wxWindow::MSWOnMeasureItem(int id, WXMEASUREITEMSTRUCT *itemStruct)
{
#if USE_OWNER_DRAWN
if ( id == 0 ) { // is it a menu item?
return FALSE;
}
-WXHBRUSH wxWindow::MSWOnCtlColor(const WXHDC pDC, const WXHWND pWnd, const WXUINT nCtlColor,
- const WXUINT message, const WXWPARAM wParam, const WXLPARAM lParam)
+WXHBRUSH wxWindow::MSWOnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
+ WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnCtlColour %d\n", m_hWnd);
#endif
if (nCtlColor == CTLCOLOR_DLG)
}
// Define for each class of dialog and control
-WXHBRUSH wxWindow::OnCtlColor(const WXHDC pDC, const WXHWND pWnd, const WXUINT nCtlColor,
+WXHBRUSH wxWindow::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
{
return (WXHBRUSH) MSWDefWindowProc(message, wParam, lParam);
}
-bool wxWindow::MSWOnColorChange(const WXHWND hWnd, const WXUINT message, const WXWPARAM wParam, const WXLPARAM lParam)
+bool wxWindow::MSWOnColorChange(WXHWND hWnd, WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
{
wxSysColourChangedEvent event;
event.m_eventObject = this;
if (GetEventHandler()->ProcessEvent(event))
return 0;
-#if WXWIN_COMPATIBILITY
- if (GetEventHandler()->OldOnSysColourChange())
- return 0;
-#endif
-
// We didn't process it
return 1;
}
if (m_lastMsg == 0)
return 0;
+ #ifdef __WXDEBUG__
+ wxLogTrace(wxTraceMessages, "Forwarding %s to DefWindowProc.",
+ GetMessageName(m_lastMsg));
+ #endif // WXDEBUG
+
return this->MSWDefWindowProc(m_lastMsg, m_lastWParam, m_lastLParam);
}
bool wxWindow::MSWProcessMessage(WXMSG* pMsg)
{
- if (!m_hWnd)
- return FALSE;
- else
- {
- // Suggestion by Andrew Davison to allow
- // a panel to accept character input in user edit mode
-
- // OK, what we probably want to do here for wxWin 2.0
- // is have a window style to indicate whether the window
- // should process dialog-style input, since we can't
- // otherwise tell whether it's supposed to do tab traversal
- // or not.
- if (GetWindowStyleFlag() & wxTAB_TRAVERSAL)
- return (::IsDialogMessage((HWND) m_hWnd, (MSG *)pMsg) != 0);
- else
- return FALSE;
+ if ( m_hWnd != 0 && (GetWindowStyleFlag() & wxTAB_TRAVERSAL) ) {
+ // intercept dialog navigation keys
+ MSG *msg = (MSG *)pMsg;
+ bool bProcess = TRUE;
+ if ( msg->message != WM_KEYDOWN )
+ bProcess = FALSE;
+
+ if ( (HIWORD(msg->lParam) & KF_ALTDOWN) == KF_ALTDOWN )
+ bProcess = FALSE;
+
+ bool bCtrlDown = (::GetKeyState(VK_CONTROL) & 0x100) != 0;
+
+ // WM_GETDLGCODE: if the control wants it for itself, don't process it
+ // (except for Ctrl-Tab combination which is always processed)
+ LONG lDlgCode;
+ if ( bProcess && !bCtrlDown ) {
+ lDlgCode = ::SendMessage(msg->hwnd, WM_GETDLGCODE, 0, 0);
+ }
+
+ bool bForward;
+ if ( bProcess ) {
+ switch ( msg->wParam ) {
+ case VK_TAB:
+ if ( lDlgCode & DLGC_WANTTAB )
+ bProcess = FALSE;
+ else
+ bForward = !(::GetKeyState(VK_SHIFT) & 0x100);
+ break;
+
+ case VK_UP:
+ case VK_LEFT:
+ if ( lDlgCode & DLGC_WANTARROWS || bCtrlDown )
+ bProcess = FALSE;
+ else
+ bForward = FALSE;
+ break;
+
+ case VK_DOWN:
+ case VK_RIGHT:
+ if ( lDlgCode & DLGC_WANTARROWS || bCtrlDown )
+ bProcess = FALSE;
+ else
+ bForward = TRUE;
+ break;
+
+ default:
+ bProcess = FALSE;
+ }
+ }
+
+ if ( bProcess ) {
+ wxNavigationKeyEvent event;
+ event.SetDirection(bForward);
+ event.SetWindowChange(bCtrlDown);
+ event.SetEventObject(this);
+
+ if ( GetEventHandler()->ProcessEvent(event) )
+ return TRUE;
+ }
+
+ return ::IsDialogMessage((HWND)GetHWND(), msg) != 0;
}
+
+ return FALSE;
}
-long wxWindow::MSWOnMDIActivate(const long WXUNUSED(flag), const WXHWND WXUNUSED(activate), const WXHWND WXUNUSED(deactivate))
+long wxWindow::MSWOnMDIActivate(long WXUNUSED(flag), WXHWND WXUNUSED(activate), WXHWND WXUNUSED(deactivate))
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnMDIActivate %d\n", m_hWnd);
#endif
return 1;
bool wxWindow::MSWOnPaint(void)
{
-#if WXWIN_COMPATIBILITY
- GetEventHandler()->OldOnPaint();
-#else
wxPaintEvent event(m_windowId);
- event.m_eventObject = this;
- GetEventHandler()->ProcessEvent(event);
-#endif
+ event.SetEventObject(this);
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
return TRUE;
-
-#if 0
-
-#if DEBUG > 1
- wxDebugMsg("wxWindow::MSWOnPaint %d\n", m_hWnd);
-#endif
-#ifdef __WIN32__
- HRGN tRgn=CreateRectRgn(0,0,0,0); //Dummy call to get a handle!
- if (GetUpdateRgn(m_hWnd, tRgn, FALSE))
-#else
- RECT tRect;
- if (GetUpdateRect((HWND) m_hWnd, &tRect, FALSE))
-#endif
- {
- PAINTSTRUCT ps;
- // Hold a pointer to the dc so long as the OnPaint() message
- // is being processed
- HDC dc = BeginPaint(m_hWnd, &ps);
- bool isPanel = IsKindOf(CLASSINFO(wxWindow));
- m_paintHDC = (WXHDC) dc;
- RECT updateRect1 = ps.rcPaint;
- m_updateRect.x = updateRect1.left;
- m_updateRect.y = updateRect1.top;
- m_updateRect.width = updateRect1.right - updateRect1.left;
- m_updateRect.height = updateRect1.bottom - updateRect1.top;
-
- GetEventHandler()->OldOnPaint();
-
- m_paintHDC = 0;
- EndPaint((HWND) m_hWnd, &ps);
-#ifdef __WIN32__
- DeleteObject(tRgn);
-#endif
-
- if (isPanel)
- // Do default processing
- return FALSE;
- else
- return TRUE;
- }
-#ifdef __WIN32__
- DeleteObject(tRgn);
-#endif
- return FALSE;
-#endif
}
-void wxWindow::MSWOnSize(const int w, const int h, const WXUINT WXUNUSED(flag))
+void wxWindow::MSWOnSize(int w, int h, WXUINT WXUNUSED(flag))
{
if (m_inOnSize)
return;
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnSize %d\n", m_hWnd);
#endif
if (!m_hWnd)
m_inOnSize = TRUE;
-#if WXWIN_COMPATIBILITY
- GetEventHandler()->OldOnSize(w, h);
-#else
wxSizeEvent event(wxSize(w, h), m_windowId);
- event.m_eventObject = this;
- GetEventHandler()->ProcessEvent(event);
-#endif
+ event.SetEventObject(this);
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
m_inOnSize = FALSE;
}
}
// Deal with child commands from buttons etc.
-bool wxWindow::MSWOnCommand(const WXWORD id, const WXWORD cmd, const WXHWND WXUNUSED(control))
+bool wxWindow::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND WXUNUSED(control))
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnCommand\n");
#endif
if (wxCurrentPopupMenu)
bool succ = popupMenu->MSWCommand(cmd, id);
return succ;
}
-#if DEBUG > 1
+#if WXDEBUG > 1
char buf[80];
sprintf(buf, "Looking for item %d...\n", id);
wxDebugMsg(buf);
if (item)
{
bool value = item->MSWCommand(cmd, id);
-#if DEBUG > 1
+#if WXDEBUG > 1
if (value)
wxDebugMsg("MSWCommand succeeded\n");
else
}
else
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("Could not find item!\n");
char buf[100];
wxDebugMsg("Item ids for this panel:\n");
return 0;
}
-void wxWindow::MSWOnLButtonDown(const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnLButtonDown(int x, int y, WXUINT flags)
{
-#if 0 // defined(__WIN32__) && !defined(WIN95)
- // DClick not clean supported on Win3.1, except if someone know
- // how to emulate Sleep()...
- // This means that your app will receive Down-Up-Dclick sequences
- // rather than Dclick
- if (m_doubleClickAllowed)
- {
- UINT time = GetDoubleClickTime() ;
- Sleep(time) ;
- MSG dummy ;
- if (PeekMessage(&dummy,m_hWnd,
- WM_LBUTTONDBLCLK,WM_LBUTTONDBLCLK,
- PM_NOREMOVE)
- )
- {
- PeekMessage(&dummy,m_hWnd,WM_LBUTTONUP,WM_LBUTTONUP,PM_REMOVE);
- return;
- }
- }
-#endif
-
- wxMouseEvent event(wxEVENT_TYPE_LEFT_DOWN);
+ wxMouseEvent event(wxEVT_LEFT_DOWN);
event.m_x = x; event.m_y = y;
event.m_shiftDown = ((flags & MK_SHIFT) != 0);
event.m_eventObject = this;
m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVENT_TYPE_LEFT_DOWN;
- GetEventHandler()->OldOnMouseEvent(event);
+
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
}
-void wxWindow::MSWOnLButtonUp(const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnLButtonUp(int x, int y, WXUINT flags)
{
- wxMouseEvent event(wxEVENT_TYPE_LEFT_UP);
+ wxMouseEvent event(wxEVT_LEFT_UP);
event.m_x = x; event.m_y = y;
event.m_shiftDown = ((flags & MK_SHIFT) != 0);
event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
event.m_eventObject = this;
- m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVENT_TYPE_LEFT_UP;
+ m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_LEFT_UP;
- GetEventHandler()->OldOnMouseEvent(event);
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
}
-void wxWindow::MSWOnLButtonDClick(const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnLButtonDClick(int x, int y, WXUINT flags)
{
- wxMouseEvent event(wxEVENT_TYPE_LEFT_DCLICK);
+ wxMouseEvent event(wxEVT_LEFT_DCLICK);
event.m_x = x; event.m_y = y;
event.m_shiftDown = ((flags & MK_SHIFT) != 0);
event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
event.m_eventObject = this;
- m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVENT_TYPE_LEFT_DCLICK;
+ m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_LEFT_DCLICK;
-// if (m_doubleClickAllowed)
- GetEventHandler()->OldOnMouseEvent(event);
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
}
-void wxWindow::MSWOnMButtonDown(const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnMButtonDown(int x, int y, WXUINT flags)
{
-#if 0 // defined(__WIN32__) && !defined(__WIN95__)
- // DClick not clean supported on Win3.1, except if someone know
- // how to emulate Sleep()...
- // This means that your app will receive Down-Up-Dclick sequences
- // rather than Dclick
- if (m_doubleClickAllowed)
- {
- UINT time = GetDoubleClickTime() ;
- Sleep(time) ;
- MSG dummy ;
- if (PeekMessage(&dummy,m_hWnd,
- WM_MBUTTONDBLCLK,WM_MBUTTONDBLCLK,
- PM_NOREMOVE)
- )
- {
- PeekMessage(&dummy,m_hWnd,WM_MBUTTONUP,WM_MBUTTONUP,PM_REMOVE);
- return;
- }
- }
-#endif
-
- wxMouseEvent event(wxEVENT_TYPE_MIDDLE_DOWN);
+ wxMouseEvent event(wxEVT_MIDDLE_DOWN);
event.m_x = x; event.m_y = y;
event.m_shiftDown = ((flags & MK_SHIFT) != 0);
event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
event.m_eventObject = this;
- m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVENT_TYPE_MIDDLE_DOWN;
- GetEventHandler()->OldOnMouseEvent(event);
+ m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_MIDDLE_DOWN;
+
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
}
-void wxWindow::MSWOnMButtonUp(const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnMButtonUp(int x, int y, WXUINT flags)
{
//wxDebugMsg("MButtonUp\n") ;
- wxMouseEvent event(wxEVENT_TYPE_MIDDLE_UP);
+ wxMouseEvent event(wxEVT_MIDDLE_UP);
event.m_x = x; event.m_y = y;
event.m_shiftDown = ((flags & MK_SHIFT) != 0);
event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
event.m_eventObject = this;
- m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVENT_TYPE_MIDDLE_UP;
- GetEventHandler()->OldOnMouseEvent(event);
+ m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_MIDDLE_UP;
+
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
}
-void wxWindow::MSWOnMButtonDClick(const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnMButtonDClick(int x, int y, WXUINT flags)
{
- wxMouseEvent event(wxEVENT_TYPE_MIDDLE_DCLICK);
+ wxMouseEvent event(wxEVT_MIDDLE_DCLICK);
event.m_x = x; event.m_y = y;
event.m_shiftDown = ((flags & MK_SHIFT) != 0);
event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
event.m_eventObject = this;
- m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVENT_TYPE_MIDDLE_DCLICK;
-// if (m_doubleClickAllowed)
- GetEventHandler()->OldOnMouseEvent(event);
+ m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_MIDDLE_DCLICK;
+
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
}
-void wxWindow::MSWOnRButtonDown(const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnRButtonDown(int x, int y, WXUINT flags)
{
-#if 0 // defined(__WIN32__) && !defined(__WIN95__)
- // DClick not clean supported on Win3.1, except if someone know
- // how to emulate Sleep()...
- // This means that your app will receive Down-Up-Dclick sequences
- // rather than Dclick
- if (m_doubleClickAllowed)
- {
- UINT time = GetDoubleClickTime() ;
- Sleep(time) ;
- MSG dummy ;
- if (PeekMessage(&dummy,m_hWnd,
- WM_RBUTTONDBLCLK,WM_RBUTTONDBLCLK,
- PM_NOREMOVE)
- )
- {
- PeekMessage(&dummy,m_hWnd,WM_RBUTTONUP,WM_RBUTTONUP,PM_REMOVE);
- return;
- }
- }
-#endif
-
- wxMouseEvent event(wxEVENT_TYPE_RIGHT_DOWN);
+ wxMouseEvent event(wxEVT_RIGHT_DOWN);
event.m_x = x; event.m_y = y;
event.m_shiftDown = ((flags & MK_SHIFT) != 0);
event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
event.m_eventObject = this;
- m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVENT_TYPE_RIGHT_DOWN;
- GetEventHandler()->OldOnMouseEvent(event);
+ m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_RIGHT_DOWN;
+
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
}
-void wxWindow::MSWOnRButtonUp(const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnRButtonUp(int x, int y, WXUINT flags)
{
- wxMouseEvent event(wxEVENT_TYPE_RIGHT_UP);
+ wxMouseEvent event(wxEVT_RIGHT_UP);
event.m_x = x; event.m_y = y;
event.m_shiftDown = ((flags & MK_SHIFT) != 0);
event.m_eventObject = this;
event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
- m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVENT_TYPE_RIGHT_UP;
- GetEventHandler()->OldOnMouseEvent(event);
+ m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_RIGHT_UP;
+
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
}
-void wxWindow::MSWOnRButtonDClick(const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnRButtonDClick(int x, int y, WXUINT flags)
{
- wxMouseEvent event(wxEVENT_TYPE_RIGHT_DCLICK);
+ wxMouseEvent event(wxEVT_RIGHT_DCLICK);
event.m_x = x; event.m_y = y;
event.m_shiftDown = ((flags & MK_SHIFT) != 0);
event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
event.m_eventObject = this;
- m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVENT_TYPE_RIGHT_DCLICK;
-// if (m_doubleClickAllowed)
- GetEventHandler()->OldOnMouseEvent(event);
+ m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_RIGHT_DCLICK;
+
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
}
-void wxWindow::MSWOnMouseMove(const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnMouseMove(int x, int y, WXUINT flags)
{
// 'normal' move event...
// Set cursor, but only if we're not in 'busy' mode
MSWOnMouseEnter(x, y, flags);
}
- wxMouseEvent event(wxEVENT_TYPE_MOTION);
+ wxMouseEvent event(wxEVT_MOTION);
event.m_x = x; event.m_y = y;
event.m_shiftDown = ((flags & MK_SHIFT) != 0);
// Window gets a click down message followed by a mouse move
// message even if position isn't changed! We want to discard
// the trailing move event if x and y are the same.
- if ((m_lastEvent == wxEVENT_TYPE_RIGHT_DOWN || m_lastEvent == wxEVENT_TYPE_LEFT_DOWN ||
- m_lastEvent == wxEVENT_TYPE_MIDDLE_DOWN) &&
+ if ((m_lastEvent == wxEVT_RIGHT_DOWN || m_lastEvent == wxEVT_LEFT_DOWN ||
+ m_lastEvent == wxEVT_MIDDLE_DOWN) &&
(m_lastXPos == event.m_x && m_lastYPos == event.m_y))
{
m_lastXPos = event.m_x; m_lastYPos = event.m_y;
- m_lastEvent = wxEVENT_TYPE_MOTION;
+ m_lastEvent = wxEVT_MOTION;
return;
}
- m_lastEvent = wxEVENT_TYPE_MOTION;
+ m_lastEvent = wxEVT_MOTION;
m_lastXPos = event.m_x; m_lastYPos = event.m_y;
- GetEventHandler()->OldOnMouseEvent(event);
+
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
}
-void wxWindow::MSWOnMouseEnter(const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnMouseEnter(int x, int y, WXUINT flags)
{
wxMouseEvent event(wxEVT_ENTER_WINDOW);
GetEventHandler()->ProcessEvent(event);
}
-void wxWindow::MSWOnMouseLeave(const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnMouseLeave(int x, int y, WXUINT flags)
{
wxMouseEvent event(wxEVT_LEAVE_WINDOW);
GetEventHandler()->ProcessEvent(event);
}
-void wxWindow::MSWOnChar(const WXWORD wParam, const WXLPARAM lParam, const bool isASCII)
+void wxWindow::MSWOnChar(WXWORD wParam, WXLPARAM lParam, bool isASCII)
{
int id;
bool tempControlDown = FALSE;
event.m_x = pt.x; event.m_y = pt.y;
-#if WXWIN_COMPATIBILITY
- GetEventHandler()->OldOnChar(event);
-#else
if (!GetEventHandler()->ProcessEvent(event))
Default();
-#endif
}
}
-void wxWindow::MSWOnJoyDown(const int joystick, const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnJoyDown(int joystick, int x, int y, WXUINT flags)
{
int buttons = 0;
int change = 0;
GetEventHandler()->ProcessEvent(event);
}
-void wxWindow::MSWOnJoyUp(const int joystick, const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnJoyUp(int joystick, int x, int y, WXUINT flags)
{
int buttons = 0;
int change = 0;
GetEventHandler()->ProcessEvent(event);
}
-void wxWindow::MSWOnJoyMove(const int joystick, const int x, const int y, const WXUINT flags)
+void wxWindow::MSWOnJoyMove(int joystick, int x, int y, WXUINT flags)
{
int buttons = 0;
if (flags & JOY_BUTTON1)
GetEventHandler()->ProcessEvent(event);
}
-void wxWindow::MSWOnJoyZMove(const int joystick, const int z, const WXUINT flags)
+void wxWindow::MSWOnJoyZMove(int joystick, int z, WXUINT flags)
{
int buttons = 0;
if (flags & JOY_BUTTON1)
GetEventHandler()->ProcessEvent(event);
}
-void wxWindow::MSWOnVScroll(const WXWORD wParam, const WXWORD pos, const WXHWND control)
+void wxWindow::MSWOnVScroll(WXWORD wParam, WXWORD pos, WXHWND control)
{
if (control)
{
wxWindow *child = wxFindWinFromHandle(control);
- if ( child )
- child->MSWOnVScroll(wParam, pos, control);
+ if ( child )
+ child->MSWOnVScroll(wParam, pos, control);
return;
}
- wxScrollEvent event;
- event.SetPosition(pos);
- event.SetOrientation(wxVERTICAL);
- event.m_eventObject = this;
+ wxScrollEvent event;
+ event.SetPosition(pos);
+ event.SetOrientation(wxVERTICAL);
+ event.m_eventObject = this;
switch ( wParam )
{
case SB_TOP:
- event.m_eventType = wxEVENT_TYPE_SCROLL_TOP;
+ event.m_eventType = wxEVT_SCROLL_TOP;
break;
case SB_BOTTOM:
- event.m_eventType = wxEVENT_TYPE_SCROLL_BOTTOM;
+ event.m_eventType = wxEVT_SCROLL_BOTTOM;
break;
case SB_LINEUP:
- event.m_eventType = wxEVENT_TYPE_SCROLL_LINEUP;
+ event.m_eventType = wxEVT_SCROLL_LINEUP;
break;
case SB_LINEDOWN:
- event.m_eventType = wxEVENT_TYPE_SCROLL_LINEDOWN;
+ event.m_eventType = wxEVT_SCROLL_LINEDOWN;
break;
case SB_PAGEUP:
- event.m_eventType = wxEVENT_TYPE_SCROLL_PAGEUP;
+ event.m_eventType = wxEVT_SCROLL_PAGEUP;
break;
case SB_PAGEDOWN:
- event.m_eventType = wxEVENT_TYPE_SCROLL_PAGEDOWN;
+ event.m_eventType = wxEVT_SCROLL_PAGEDOWN;
break;
case SB_THUMBTRACK:
case SB_THUMBPOSITION:
- event.m_eventType = wxEVENT_TYPE_SCROLL_THUMBTRACK;
+ event.m_eventType = wxEVT_SCROLL_THUMBTRACK;
break;
default:
}
if (!GetEventHandler()->ProcessEvent(event))
-#if WXWIN_COMPATIBILITY
- GetEventHandler()->OldOnScroll(event);
-#else
Default();
-#endif
}
-void wxWindow::MSWOnHScroll( const WXWORD wParam, const WXWORD pos, const WXHWND control)
+void wxWindow::MSWOnHScroll( WXWORD wParam, WXWORD pos, WXHWND control)
{
if (control)
{
wxWindow *child = wxFindWinFromHandle(control);
- if ( child )
- child->MSWOnHScroll(wParam, pos, control);
+ if ( child )
+ child->MSWOnHScroll(wParam, pos, control);
return;
}
-
- wxScrollEvent event;
- event.SetPosition(pos);
- event.SetOrientation(wxHORIZONTAL);
- event.m_eventObject = this;
-
- switch ( wParam )
- {
+
+ wxScrollEvent event;
+ event.SetPosition(pos);
+ event.SetOrientation(wxHORIZONTAL);
+ event.m_eventObject = this;
+
+ switch ( wParam )
+ {
case SB_TOP:
- event.m_eventType = wxEVENT_TYPE_SCROLL_TOP;
+ event.m_eventType = wxEVT_SCROLL_TOP;
break;
case SB_BOTTOM:
- event.m_eventType = wxEVENT_TYPE_SCROLL_BOTTOM;
+ event.m_eventType = wxEVT_SCROLL_BOTTOM;
break;
case SB_LINEUP:
- event.m_eventType = wxEVENT_TYPE_SCROLL_LINEUP;
+ event.m_eventType = wxEVT_SCROLL_LINEUP;
break;
case SB_LINEDOWN:
- event.m_eventType = wxEVENT_TYPE_SCROLL_LINEDOWN;
+ event.m_eventType = wxEVT_SCROLL_LINEDOWN;
break;
case SB_PAGEUP:
- event.m_eventType = wxEVENT_TYPE_SCROLL_PAGEUP;
+ event.m_eventType = wxEVT_SCROLL_PAGEUP;
break;
case SB_PAGEDOWN:
- event.m_eventType = wxEVENT_TYPE_SCROLL_PAGEDOWN;
+ event.m_eventType = wxEVT_SCROLL_PAGEDOWN;
break;
case SB_THUMBTRACK:
case SB_THUMBPOSITION:
- event.m_eventType = wxEVENT_TYPE_SCROLL_THUMBTRACK;
+ event.m_eventType = wxEVT_SCROLL_THUMBTRACK;
break;
default:
break;
}
if (!GetEventHandler()->ProcessEvent(event))
-#if WXWIN_COMPATIBILITY
- GetEventHandler()->OldOnScroll(event);
-#else
Default();
-#endif
}
void wxWindow::MSWOnShow(bool show, int status)
{
- wxShowEvent event(GetId(), show);
- event.m_eventObject = this;
- GetEventHandler()->ProcessEvent(event);
+ wxShowEvent event(GetId(), show);
+ event.m_eventObject = this;
+ GetEventHandler()->ProcessEvent(event);
}
bool wxWindow::MSWOnInitDialog(WXHWND WXUNUSED(hWndFocus))
{
- wxInitDialogEvent event(GetId());
- event.m_eventObject = this;
- GetEventHandler()->ProcessEvent(event);
- return TRUE;
+ wxInitDialogEvent event(GetId());
+ event.m_eventObject = this;
+ GetEventHandler()->ProcessEvent(event);
+ return TRUE;
}
void wxWindow::InitDialog(void)
{
- wxInitDialogEvent event(GetId());
- event.SetEventObject( this );
- GetEventHandler()->ProcessEvent(event);
+ wxInitDialogEvent event(GetId());
+ event.SetEventObject( this );
+ GetEventHandler()->ProcessEvent(event);
}
// Default init dialog behaviour is to transfer data to window
void wxWindow::OnInitDialog(wxInitDialogEvent& event)
{
- TransferDataToWindow();
+ TransferDataToWindow();
}
void wxGetCharSize(WXHWND wnd, int *x, int *y,wxFont *the_font)
HFONT was = 0;
if (the_font)
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxGetCharSize: Selecting HFONT %X\n", fnt);
#endif
// the_font->UseResource();
// the_font->RealizeResource();
if ((fnt=(HFONT) the_font->GetResourceHandle()))
- was = SelectObject(dc,fnt) ;
+ was = (HFONT) SelectObject(dc,fnt) ;
}
GetTextMetrics(dc, &tm);
if (the_font && fnt && was)
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxGetCharSize: Selecting old HFONT %X\n", was);
#endif
SelectObject(dc,was) ;
}
// Caret manipulation
-void wxWindow::CreateCaret(const int w, const int h)
+void wxWindow::CreateCaret(int w, int h)
{
m_caretWidth = w;
m_caretHeight = h;
// Not implemented
}
-void wxWindow::ShowCaret(const bool show)
+void wxWindow::ShowCaret(bool show)
{
if (m_caretEnabled)
{
m_caretEnabled = FALSE;
}
-void wxWindow::SetCaretPos(const int x, const int y)
+void wxWindow::SetCaretPos(int x, int y)
{
::SetCaretPos(x, y);
}
/* end Albert's fix for control and shift key 26.5 */
event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
-#if WXWIN_COMPATIBILITY
- if ( wxTheApp && wxTheApp->OldOnCharHook(event) )
- return 1;
-#endif
wxWindow *win = wxGetActiveWindow();
if (win)
{
return (int)CallNextHookEx(wxTheKeyboardHook, nCode, wParam, lParam);
}
-void wxWindow::SetSizeHints(const int minW, const int minH, const int maxW, const int maxH, const int WXUNUSED(incW), const int WXUNUSED(incH))
+void wxWindow::SetSizeHints(int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH))
{
m_minSizeX = minW;
m_minSizeY = minH;
m_maxSizeY = maxH;
}
-void wxWindow::Centre(const int direction)
+void wxWindow::Centre(int direction)
{
int x, y, width, height, panel_width, panel_height, new_x, new_y;
}
*/
-void wxWindow::WarpPointer (const int x_pos, const int y_pos)
+void wxWindow::WarpPointer (int x_pos, int y_pos)
{
// Move the pointer to (x_pos,y_pos) coordinates. They are expressed in
// pixel coordinates, relatives to the canvas -- So, we first need to
*/
}
-bool wxWindow::MSWOnEraseBkgnd (const WXHDC pDC)
+bool wxWindow::MSWOnEraseBkgnd (WXHDC pDC)
{
wxDC dc ;
}
#if WXWIN_COMPATIBILITY
-void wxWindow::SetScrollRange(const int orient, const int range, const bool refresh)
+void wxWindow::SetScrollRange(int orient, int range, bool refresh)
{
#if defined(__WIN95__)
#endif
}
-void wxWindow::SetScrollPage(const int orient, const int page, const bool refresh)
+void wxWindow::SetScrollPage(int orient, int page, bool refresh)
{
#if defined(__WIN95__)
SCROLLINFO info;
#endif
}
-int wxWindow::OldGetScrollRange(const int orient) const
+int wxWindow::OldGetScrollRange(int orient) const
{
int wOrient ;
if (orient == wxHORIZONTAL)
return 0;
}
-int wxWindow::GetScrollPage(const int orient) const
+int wxWindow::GetScrollPage(int orient) const
{
if (orient == wxHORIZONTAL)
return m_xThumbSize;
}
#endif
-int wxWindow::GetScrollPos(const int orient) const
+int wxWindow::GetScrollPos(int orient) const
{
int wOrient ;
if (orient == wxHORIZONTAL)
// This now returns the whole range, not just the number
// of positions that we can scroll.
-int wxWindow::GetScrollRange(const int orient) const
+int wxWindow::GetScrollRange(int orient) const
{
int wOrient ;
if (orient == wxHORIZONTAL)
return 0;
}
-int wxWindow::GetScrollThumb(const int orient) const
+int wxWindow::GetScrollThumb(int orient) const
{
if (orient == wxHORIZONTAL)
return m_xThumbSize;
return m_yThumbSize;
}
-void wxWindow::SetScrollPos(const int orient, const int pos, const bool refresh)
+void wxWindow::SetScrollPos(int orient, int pos, bool refresh)
{
#if defined(__WIN95__)
SCROLLINFO info;
}
// New function that will replace some of the above.
-void wxWindow::SetScrollbar(const int orient, const int pos, const int thumbVisible,
- const int range, const bool refresh)
+void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible,
+ int range, bool refresh)
{
/*
SetScrollPage(orient, thumbVisible, FALSE);
}
}
-void wxWindow::ScrollWindow(const int dx, const int dy, const wxRectangle *rect)
+void wxWindow::ScrollWindow(int dx, int dy, const wxRectangle *rect)
{
RECT rect2;
if ( rect )
::ScrollWindow((HWND) GetHWND(), dx, dy, NULL, NULL);
}
-void wxWindow::OnSize(wxSizeEvent& event)
-{
- Default();
-#if USE_CONSTRAINTS
- if (GetAutoLayout())
- Layout();
-#endif
-}
-
/*
-void wxWindow::CalcScrolledPosition(const int x, const int y, int *xx, int *yy) const
+void wxWindow::CalcScrolledPosition(int x, int y, int *xx, int *yy) const
{
*xx = x;
*yy = y;
}
-void wxWindow::CalcUnscrolledPosition(const int x, const int y, float *xx, float *yy) const
+void wxWindow::CalcUnscrolledPosition(int x, int y, float *xx, float *yy) const
{
*xx = x;
*yy = y;
return exStyle;
}
-#if WXWIN_COMPATIBILITY
-void wxWindow::OldOnPaint(void)
-{
- wxPaintEvent event(m_windowId);
- event.m_eventObject = this;
- if (!GetEventHandler()->ProcessEvent(event))
- Default();
-};
-
-void wxWindow::OldOnSize(int w, int h)
-{
- wxSizeEvent event(wxSize(w, h), m_windowId);
- event.m_eventObject = this;
- if (!GetEventHandler()->ProcessEvent(event))
- Default();
-};
-
-void wxWindow::OldOnMouseEvent(wxMouseEvent& event)
-{
- if (!GetEventHandler()->ProcessEvent(event))
- Default();
-};
-
-void wxWindow::OldOnChar(wxKeyEvent& event)
-{
- if (!GetEventHandler()->ProcessEvent(event))
- Default();
-};
-
-void wxWindow::OldOnSetFocus(void)
-{
- wxFocusEvent event(wxEVT_SET_FOCUS, m_windowId);
- event.m_eventObject = this;
- if (!GetEventHandler()->ProcessEvent(event))
- Default();
-};
-
-void wxWindow::OldOnKillFocus(void)
-{
- wxFocusEvent event(wxEVT_KILL_FOCUS, m_windowId);
- event.m_eventObject = this;
- if (!GetEventHandler()->ProcessEvent(event))
- Default();
-};
-#endif
-
void wxWindow::OnChar(wxKeyEvent& event)
{
- bool isVirtual;
- int id = wxCharCodeWXToMSW((int)event.KeyCode(), &isVirtual);
+ if ( event.KeyCode() == WXK_TAB ) {
+ // propagate the TABs to the parent - it's up to it to decide what
+ // to do with it
+ if ( GetParent() ) {
+ if ( GetParent()->ProcessEvent(event) )
+ return;
+ }
+ }
+
+ bool isVirtual;
+ int id = wxCharCodeWXToMSW((int)event.KeyCode(), &isVirtual);
- if ( id == -1 )
- id= m_lastWParam;
+ if ( id == -1 )
+ id= m_lastWParam;
if ( !event.ControlDown() )
- (void) MSWDefWindowProc(m_lastMsg, (WPARAM) id, m_lastLParam);
+ (void) MSWDefWindowProc(m_lastMsg, (WPARAM) id, m_lastLParam);
}
void wxWindow::OnPaint(wxPaintEvent& event)
}
}
-void wxWindow::MakeModal(const bool modal)
+void wxWindow::MakeModal(bool modal)
{
// Disable all other windows
if (this->IsKindOf(CLASSINFO(wxDialog)) || this->IsKindOf(CLASSINFO(wxFrame)))
}
// Do a phase of evaluating child constraints
-bool wxWindow::DoPhase(const int phase)
+bool wxWindow::DoPhase(int phase)
{
int noIterations = 0;
int maxIterations = 500;
// Need to distinguish between setting the 'fake' size for
// windows and sizers, and setting the real values.
-void wxWindow::SetConstraintSizes(const bool recurse)
+void wxWindow::SetConstraintSizes(bool recurse)
{
wxLayoutConstraints *constr = GetConstraints();
if (constr && constr->left.GetDone() && constr->right.GetDone() &&
*y += yp;
}
-void wxWindow::SizerSetSize(const int x, const int y, const int w, const int h)
+void wxWindow::SizerSetSize(int x, int y, int w, int h)
{
int xx = x;
int yy = y;
SetSize(xx, yy, w, h);
}
-void wxWindow::SizerMove(const int x, const int y)
+void wxWindow::SizerMove(int x, int y)
{
int xx = x;
int yy = y;
}
// Only set the size/position of the constraint (if any)
-void wxWindow::SetSizeConstraint(const int x, const int y, const int w, const int h)
+void wxWindow::SetSizeConstraint(int x, int y, int w, int h)
{
wxLayoutConstraints *constr = GetConstraints();
if (constr)
}
}
-void wxWindow::MoveConstraint(const int x, const int y)
+void wxWindow::MoveConstraint(int x, int y)
{
wxLayoutConstraints *constr = GetConstraints();
if (constr)
GetPosition(x, y);
}
-bool wxWindow::Close(const bool force)
+bool wxWindow::Close(bool force)
{
// Let's generalise it to work the same for any window.
/*
*/
}
-wxObject* wxWindow::GetChild(const int number) const
+wxObject* wxWindow::GetChild(int number) const
{
// Return a pointer to the Nth object in the Panel
if (!GetChildren())
void wxWindow::OnDefaultAction(wxControl *initiatingItem)
{
- if (initiatingItem->IsKindOf(CLASSINFO(wxListBox)) && initiatingItem->GetCallback())
+/* This is obsolete now; if we wish to intercept listbox double-clicks,
+ * we explicitly intercept the wxEVT_COMMAND_LISTBOX_DOUBLECLICKED
+ * event.
+
+ if (initiatingItem->IsKindOf(CLASSINFO(wxListBox)))
{
wxListBox *lbox = (wxListBox *)initiatingItem;
- wxCommandEvent event(wxEVENT_TYPE_LISTBOX_DCLICK_COMMAND);
+ wxCommandEvent event(wxEVT_COMMAND_LEFT_DCLICK);
event.m_commandInt = -1;
if ((lbox->GetWindowStyleFlag() & wxLB_MULTIPLE) == 0)
{
wxButton *but = GetDefaultItem();
if (but)
{
- wxCommandEvent event(wxEVENT_TYPE_BUTTON_COMMAND);
+ wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED);
+ event.SetEventObject(but);
but->Command(event);
}
+*/
}
void wxWindow::Clear(void)
}
// Find a window by id or name
-wxWindow *wxWindow::FindWindow(const long id)
+wxWindow *wxWindow::FindWindow(long id)
{
if ( GetId() == id)
return this;
if (vert_units)
y_pages = (int)(v_height/vert_units) - y_page;
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
int y = 0;
#else
int y = y_page-1;
::SetWindowPos((HWND) GetHWND(), HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
}
+long wxWindow::MSWGetDlgCode()
+{
+ // default: just forward to def window proc (the msg has no parameters)
+ return MSWDefWindowProc(WM_GETDLGCODE, 0, 0);
+}
+
+bool wxWindow::AcceptsFocus() const
+{
+ return IsShown() && IsEnabled();
+}
+
+#ifdef __WXDEBUG__
+static const char *GetMessageName(int message)
+{
+ switch ( message ) {
+ case 0x0000: return "WM_NULL";
+ case 0x0001: return "WM_CREATE";
+ case 0x0002: return "WM_DESTROY";
+ case 0x0003: return "WM_MOVE";
+ case 0x0005: return "WM_SIZE";
+ case 0x0006: return "WM_ACTIVATE";
+ case 0x0007: return "WM_SETFOCUS";
+ case 0x0008: return "WM_KILLFOCUS";
+ case 0x000A: return "WM_ENABLE";
+ case 0x000B: return "WM_SETREDRAW";
+ case 0x000C: return "WM_SETTEXT";
+ case 0x000D: return "WM_GETTEXT";
+ case 0x000E: return "WM_GETTEXTLENGTH";
+ case 0x000F: return "WM_PAINT";
+ case 0x0010: return "WM_CLOSE";
+ case 0x0011: return "WM_QUERYENDSESSION";
+ case 0x0012: return "WM_QUIT";
+ case 0x0013: return "WM_QUERYOPEN";
+ case 0x0014: return "WM_ERASEBKGND";
+ case 0x0015: return "WM_SYSCOLORCHANGE";
+ case 0x0016: return "WM_ENDSESSION";
+ case 0x0017: return "WM_SYSTEMERROR";
+ case 0x0018: return "WM_SHOWWINDOW";
+ case 0x0019: return "WM_CTLCOLOR";
+ case 0x001A: return "WM_WININICHANGE";
+ case 0x001B: return "WM_DEVMODECHANGE";
+ case 0x001C: return "WM_ACTIVATEAPP";
+ case 0x001D: return "WM_FONTCHANGE";
+ case 0x001E: return "WM_TIMECHANGE";
+ case 0x001F: return "WM_CANCELMODE";
+ case 0x0020: return "WM_SETCURSOR";
+ case 0x0021: return "WM_MOUSEACTIVATE";
+ case 0x0022: return "WM_CHILDACTIVATE";
+ case 0x0023: return "WM_QUEUESYNC";
+ case 0x0024: return "WM_GETMINMAXINFO";
+ case 0x0026: return "WM_PAINTICON";
+ case 0x0027: return "WM_ICONERASEBKGND";
+ case 0x0028: return "WM_NEXTDLGCTL";
+ case 0x002A: return "WM_SPOOLERSTATUS";
+ case 0x002B: return "WM_DRAWITEM";
+ case 0x002C: return "WM_MEASUREITEM";
+ case 0x002D: return "WM_DELETEITEM";
+ case 0x002E: return "WM_VKEYTOITEM";
+ case 0x002F: return "WM_CHARTOITEM";
+ case 0x0030: return "WM_SETFONT";
+ case 0x0031: return "WM_GETFONT";
+ case 0x0037: return "WM_QUERYDRAGICON";
+ case 0x0039: return "WM_COMPAREITEM";
+ case 0x0041: return "WM_COMPACTING";
+ case 0x0044: return "WM_COMMNOTIFY";
+ case 0x0046: return "WM_WINDOWPOSCHANGING";
+ case 0x0047: return "WM_WINDOWPOSCHANGED";
+ case 0x0048: return "WM_POWER";
+ case 0x0081: return "WM_NCCREATE";
+ case 0x0082: return "WM_NCDESTROY";
+ case 0x0083: return "WM_NCCALCSIZE";
+ case 0x0084: return "WM_NCHITTEST";
+ case 0x0085: return "WM_NCPAINT";
+ case 0x0086: return "WM_NCACTIVATE";
+ case 0x0087: return "WM_GETDLGCODE";
+ case 0x00A0: return "WM_NCMOUSEMOVE";
+ case 0x00A1: return "WM_NCLBUTTONDOWN";
+ case 0x00A2: return "WM_NCLBUTTONUP";
+ case 0x00A3: return "WM_NCLBUTTONDBLCLK";
+ case 0x00A4: return "WM_NCRBUTTONDOWN";
+ case 0x00A5: return "WM_NCRBUTTONUP";
+ case 0x00A6: return "WM_NCRBUTTONDBLCLK";
+ case 0x00A7: return "WM_NCMBUTTONDOWN";
+ case 0x00A8: return "WM_NCMBUTTONUP";
+ case 0x00A9: return "WM_NCMBUTTONDBLCLK";
+ case 0x0100: return "WM_KEYDOWN";
+ case 0x0101: return "WM_KEYUP";
+ case 0x0102: return "WM_CHAR";
+ case 0x0103: return "WM_DEADCHAR";
+ case 0x0104: return "WM_SYSKEYDOWN";
+ case 0x0105: return "WM_SYSKEYUP";
+ case 0x0106: return "WM_SYSCHAR";
+ case 0x0107: return "WM_SYSDEADCHAR";
+ case 0x0108: return "WM_KEYLAST";
+ case 0x0110: return "WM_INITDIALOG";
+ case 0x0111: return "WM_COMMAND";
+ case 0x0112: return "WM_SYSCOMMAND";
+ case 0x0113: return "WM_TIMER";
+ case 0x0114: return "WM_HSCROLL";
+ case 0x0115: return "WM_VSCROLL";
+ case 0x0116: return "WM_INITMENU";
+ case 0x0117: return "WM_INITMENUPOPUP";
+ case 0x011F: return "WM_MENUSELECT";
+ case 0x0120: return "WM_MENUCHAR";
+ case 0x0121: return "WM_ENTERIDLE";
+ case 0x0200: return "WM_MOUSEMOVE";
+ case 0x0201: return "WM_LBUTTONDOWN";
+ case 0x0202: return "WM_LBUTTONUP";
+ case 0x0203: return "WM_LBUTTONDBLCLK";
+ case 0x0204: return "WM_RBUTTONDOWN";
+ case 0x0205: return "WM_RBUTTONUP";
+ case 0x0206: return "WM_RBUTTONDBLCLK";
+ case 0x0207: return "WM_MBUTTONDOWN";
+ case 0x0208: return "WM_MBUTTONUP";
+ case 0x0209: return "WM_MBUTTONDBLCLK";
+ case 0x0210: return "WM_PARENTNOTIFY";
+ case 0x0220: return "WM_MDICREATE";
+ case 0x0221: return "WM_MDIDESTROY";
+ case 0x0222: return "WM_MDIACTIVATE";
+ case 0x0223: return "WM_MDIRESTORE";
+ case 0x0224: return "WM_MDINEXT";
+ case 0x0225: return "WM_MDIMAXIMIZE";
+ case 0x0226: return "WM_MDITILE";
+ case 0x0227: return "WM_MDICASCADE";
+ case 0x0228: return "WM_MDIICONARRANGE";
+ case 0x0229: return "WM_MDIGETACTIVE";
+ case 0x0230: return "WM_MDISETMENU";
+ case 0x0233: return "WM_DROPFILES";
+ case 0x0300: return "WM_CUT";
+ case 0x0301: return "WM_COPY";
+ case 0x0302: return "WM_PASTE";
+ case 0x0303: return "WM_CLEAR";
+ case 0x0304: return "WM_UNDO";
+ case 0x0305: return "WM_RENDERFORMAT";
+ case 0x0306: return "WM_RENDERALLFORMATS";
+ case 0x0307: return "WM_DESTROYCLIPBOARD";
+ case 0x0308: return "WM_DRAWCLIPBOARD";
+ case 0x0309: return "WM_PAINTCLIPBOARD";
+ case 0x030A: return "WM_VSCROLLCLIPBOARD";
+ case 0x030B: return "WM_SIZECLIPBOARD";
+ case 0x030C: return "WM_ASKCBFORMATNAME";
+ case 0x030D: return "WM_CHANGECBCHAIN";
+ case 0x030E: return "WM_HSCROLLCLIPBOARD";
+ case 0x030F: return "WM_QUERYNEWPALETTE";
+ case 0x0310: return "WM_PALETTEISCHANGING";
+ case 0x0311: return "WM_PALETTECHANGED";
+ default:
+ static char s_szBuf[128];
+ sprintf(s_szBuf, "<unknown message = %d>", message);
+ return s_szBuf;
+ }
+}
+#endif //WXDEBUG