]> git.saurik.com Git - wxWidgets.git/commitdiff
1. wxFrame doesn't show incorrect hints in the status bar for popup items
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 11 Jul 1999 22:08:17 +0000 (22:08 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 11 Jul 1999 22:08:17 +0000 (22:08 +0000)
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

src/generic/sashwin.cpp
src/msw/frame.cpp
src/msw/radiobox.cpp

index bcc734ffd91b5cde0944fa0c00db813da0c5e137..50d70f984b289ad9182be26275f29fe4b54ba9ed 100644 (file)
@@ -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);
index 91ccc08d19b86a0d5a013c519853c66bbe94b1c8..db3bd68269d71c36b6e4142afb6b8834e9a723c7 100644 (file)
@@ -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;
     }
 
index f0ab1b8a2db7fd0ce84459705699278549e5f8e2..0c1467a2373b9f1d65bd6e7e23da28eafb2e0877 100644 (file)
@@ -353,6 +353,9 @@ void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
 {
     int currentX, currentY;
     GetPosition(&currentX, &currentY);
+    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