diff --git a/src/msw/bmpbuttn.cpp b/src/msw/bmpbuttn.cpp index 744c8a48b6..e5b40ea968 100644 --- a/src/msw/bmpbuttn.cpp +++ b/src/msw/bmpbuttn.cpp @@ -75,12 +75,25 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit if ( height == -1 && bitmap.Ok()) height = bitmap.GetHeight() + 2*m_marginY; + long msStyle = WS_VISIBLE | WS_TABSTOP | WS_CHILD | BS_OWNERDRAW ; + +#ifdef __WIN32__ + if(m_windowStyle & wxBU_LEFT) + msStyle |= BS_LEFT; + if(m_windowStyle & wxBU_RIGHT) + msStyle |= BS_RIGHT; + if(m_windowStyle & wxBU_TOP) + msStyle |= BS_TOP; + if(m_windowStyle & wxBU_BOTTOM) + msStyle |= BS_BOTTOM; +#endif + m_hWnd = (WXHWND)CreateWindowEx ( 0, wxT("BUTTON"), wxT(""), - WS_VISIBLE | WS_TABSTOP | WS_CHILD | BS_OWNERDRAW , + msStyle, 0, 0, 0, 0, GetWinHwnd(parent), (HMENU)m_windowId, @@ -103,6 +116,9 @@ void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap) m_buttonBitmap = bitmap; } +// VZ: should be at the very least less than wxDEFAULT_BUTTON_MARGIN +#define FOCUS_MARGIN 3 + bool wxBitmapButton::MSWOnDraw(WXDRAWITEMSTRUCT *item) { #if defined(__WIN95__) @@ -144,8 +160,22 @@ bool wxBitmapButton::MSWOnDraw(WXDRAWITEMSTRUCT *item) int height = lpDIS->rcItem.bottom - y; int wBmp = bitmap->GetWidth(); int hBmp = bitmap->GetHeight(); - int x1 = x + (width - wBmp) / 2; - int y1 = y + (height - hBmp) / 2; + + int x1,y1; + + if(m_windowStyle & wxBU_LEFT) + x1 = x + (FOCUS_MARGIN+1); + else if(m_windowStyle & wxBU_RIGHT) + x1 = x + (width - wBmp) - (FOCUS_MARGIN+1); + else + x1 = x + (width - wBmp) / 2; + + if(m_windowStyle & wxBU_TOP) + y1 = y + (FOCUS_MARGIN+1); + else if(m_windowStyle & wxBU_BOTTOM) + y1 = y + (height - hBmp) - (FOCUS_MARGIN+1); + else + y1 = y + (height - hBmp) / 2; if ( isSelected && autoDraw ) { @@ -308,9 +338,6 @@ void wxBitmapButton::DrawFace( WXHDC dc, int left, int top, int right, int botto #endif // defined(__WIN95__) -// VZ: should be at the very least less than wxDEFAULT_BUTTON_MARGIN -#define FOCUS_MARGIN 3 - void wxBitmapButton::DrawButtonFocus( WXHDC dc, int left, int top, int right, int bottom, bool sel ) { RECT rect; diff --git a/src/msw/button.cpp b/src/msw/button.cpp index d6c31365cc..9700593435 100644 --- a/src/msw/button.cpp +++ b/src/msw/button.cpp @@ -74,13 +74,25 @@ bool wxButton::Create(wxWindow *parent, m_backgroundColour = parent->GetBackgroundColour(); m_foregroundColour = parent->GetForegroundColour(); + long msStyle = WS_VISIBLE | WS_TABSTOP | WS_CHILD; + +#ifdef __WIN32__ + if(m_windowStyle & wxBU_LEFT) + msStyle |= BS_LEFT; + if(m_windowStyle & wxBU_RIGHT) + msStyle |= BS_RIGHT; + if(m_windowStyle & wxBU_TOP) + msStyle |= BS_TOP; + if(m_windowStyle & wxBU_BOTTOM) + msStyle |= BS_BOTTOM; +#endif m_hWnd = (WXHWND)CreateWindowEx ( MakeExtendedStyle(m_windowStyle), wxT("BUTTON"), label, - WS_VISIBLE | WS_TABSTOP | WS_CHILD, + msStyle, 0, 0, 0, 0, GetWinHwnd(parent), (HMENU)m_windowId, diff --git a/src/msw/helpchm.cpp b/src/msw/helpchm.cpp index fa764212f8..2fa6dd4495 100644 --- a/src/msw/helpchm.cpp +++ b/src/msw/helpchm.cpp @@ -59,7 +59,8 @@ bool wxCHMHelpController::Initialize(const wxString& filename) bool wxCHMHelpController::LoadFile(const wxString& file) { - m_helpFile = file; + if (!file.IsEmpty()) + m_helpFile = file; return TRUE; } diff --git a/src/msw/helpwin.cpp b/src/msw/helpwin.cpp index fc3c34ba73..74d9160f7f 100644 --- a/src/msw/helpwin.cpp +++ b/src/msw/helpwin.cpp @@ -55,7 +55,8 @@ bool wxWinHelpController::Initialize(const wxString& filename) bool wxWinHelpController::LoadFile(const wxString& file) { - m_helpFile = file; + if (!file.IsEmpty()) + m_helpFile = file; return TRUE; } diff --git a/src/msw/makefile.vc b/src/msw/makefile.vc index 02c64926a3..967172ade2 100644 --- a/src/msw/makefile.vc +++ b/src/msw/makefile.vc @@ -615,7 +615,7 @@ rcparser: nmake -f makefile.vc FINAL=$(FINAL) cd $(WXDIR)\src\msw -cleanall: clean_png clean_zlib clean_xpm clean_jpeg clean_tiff +cleanall: clean clean_png clean_zlib clean_xpm clean_jpeg clean_tiff -erase ..\..\lib\wx$(WXVERSION)$(LIBEXT).dll -erase ..\..\lib\wx$(WXVERSION)$(LIBEXT).lib -erase ..\..\lib\wx$(WXVERSION)$(LIBEXT).exp diff --git a/src/msw/taskbar.cpp b/src/msw/taskbar.cpp index fc4f1cb9ca..13235cea9d 100644 --- a/src/msw/taskbar.cpp +++ b/src/msw/taskbar.cpp @@ -182,8 +182,14 @@ bool wxTaskBarIcon::PopupMenu(wxMenu *menu) //, int x, int y); menu->UpdateUI(); + // Work around a WIN32 bug + ::SetForegroundWindow ((HWND) win->GetHWND ()); + rval = win->PopupMenu(menu, 0, 0); + // Work around a WIN32 bug + ::PostMessage ((HWND) win->GetHWND(),WM_NULL,0,0L); + win->PopEventHandler(FALSE); win->Destroy(); delete win;