From: Vadim Zeitlin Date: Sun, 11 Jul 1999 22:08:17 +0000 (+0000) Subject: 1. wxFrame doesn't show incorrect hints in the status bar for popup items X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/c219cecc129fd06327faa9d0a417550740f8bd64 1. wxFrame doesn't show incorrect hints in the status bar for popup items 2. radio box handles wxSIZE_AUTO_WIDTH/HEIGHT correctly (finally!) 3. attempts to fix broken sash git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2985 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/generic/sashwin.cpp b/src/generic/sashwin.cpp index bcc734ffd9..50d70f984b 100644 --- a/src/generic/sashwin.cpp +++ b/src/generic/sashwin.cpp @@ -179,15 +179,17 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event) wxSashEdgePosition edge = m_draggingEdge; m_draggingEdge = wxSASH_NONE; + y = abs((short)y); + wxRect dragRect; wxSashDragStatus status = wxSASH_STATUS_OK; switch (edge) { case wxSASH_TOP: { - if (y > (yp + h)) + if ( y > (yp + h)) status = wxSASH_STATUS_OUT_OF_RANGE; - int newHeight = (h - y); + int newHeight = (yp + h - y); newHeight=wxMax(newHeight,m_minimumPaneSizeY); newHeight=wxMin(newHeight,m_maximumPaneSizeY); dragRect = wxRect(xp, (yp + h) - newHeight, w, newHeight); diff --git a/src/msw/frame.cpp b/src/msw/frame.cpp index 91ccc08d19..db3bd68269 100644 --- a/src/msw/frame.cpp +++ b/src/msw/frame.cpp @@ -636,18 +636,21 @@ void wxFrame::OnMenuHighlight(wxMenuEvent& event) { if (GetStatusBar()) { + wxString help; int menuId = event.GetMenuId(); if ( menuId != -1 ) { wxMenuBar *menuBar = GetMenuBar(); if (menuBar && menuBar->FindItem(menuId)) { - // set status text even if the string is empty - this will at - // least remove the string from the item which was previously - // selected - SetStatusText(menuBar->GetHelpString(menuId)); + help = menuBar->GetHelpString(menuId); } } + + // set status text even if the string is empty - this will at + // least remove the string from the item which was previously + // selected + SetStatusText(help); } } @@ -972,20 +975,22 @@ bool wxFrame::HandleCommand(WXWORD id, WXWORD cmd, WXHWND control) return FALSE; } -bool wxFrame::HandleMenuSelect(WXWORD nItem, WXWORD nFlags, WXHMENU hMenu) +bool wxFrame::HandleMenuSelect(WXWORD nItem, WXWORD flags, WXHMENU hMenu) { int item; - if ( nFlags == 0xFFFF && hMenu == 0 ) + if ( flags == 0xFFFF && hMenu == 0 ) { - // FIXME: what does this do? does it ever happen? + // menu was removed from screen item = -1; } - else if ((nFlags != MF_SEPARATOR) && (nItem != 0) && (nItem != 65535)) + else if ( !(flags & MF_POPUP) && !(flags & MF_SEPARATOR) ) { item = nItem; } else { + // don't give hints for separators (doesn't make sense) nor for the + // items opening popup menus (they don't have them anyhow) return FALSE; } diff --git a/src/msw/radiobox.cpp b/src/msw/radiobox.cpp index f0ab1b8a2d..0c1467a237 100644 --- a/src/msw/radiobox.cpp +++ b/src/msw/radiobox.cpp @@ -353,6 +353,9 @@ void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags) { int currentX, currentY; GetPosition(¤tX, ¤tY); + int widthOld, heightOld; + GetSize(&widthOld, &heightOld); + int xx = x; int yy = y; @@ -418,21 +421,36 @@ void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags) int extraHeight = cy1; -#if !CTL3D +#if defined(CTL3D) && !CTL3D // Requires a bigger group box in plain Windows extraHeight *= 3; extraHeight /= 2; #endif - MoveWindow(GetHwnd(), x_offset, y_offset, - totWidth+cx1, totHeight+extraHeight, - TRUE); + // only change our width/height if asked for + if ( width == -1 ) + { + if ( sizeFlags & wxSIZE_AUTO_WIDTH ) + width = totWidth + cx1; + else + width = widthOld; + } + + if ( height == -1 ) + { + if ( sizeFlags & wxSIZE_AUTO_HEIGHT ) + height = totHeight + extraHeight; + else + height = heightOld; + } + + MoveWindow(GetHwnd(), x_offset, y_offset, width, height, TRUE); x_offset += cx1; y_offset += cy1; } -#if (!CTL3D) +#if defined(CTL3D) && (!CTL3D) y_offset += (int)(cy1/2); // Fudge factor since buttons overlapped label // JACS 2/12/93. CTL3D draws group label quite high. #endif