Prevent wxChoice from resizing when items are added/deleted. Corrected
DoGetBestSize. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19579 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -36,6 +36,10 @@
|
|||||||
|
|
||||||
#include "wx/motif/private.h"
|
#include "wx/motif/private.h"
|
||||||
|
|
||||||
|
#define WIDTH_OVERHEAD 48
|
||||||
|
#define WIDTH_OVERHEAD_SUBTRACT 40
|
||||||
|
#define HEIGHT_OVERHEAD 15
|
||||||
|
|
||||||
IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl)
|
IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl)
|
||||||
|
|
||||||
void wxChoiceCallback (Widget w, XtPointer clientData,
|
void wxChoiceCallback (Widget w, XtPointer clientData,
|
||||||
@@ -75,6 +79,8 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id,
|
|||||||
XmNmarginWidth, 0,
|
XmNmarginWidth, 0,
|
||||||
XmNpacking, XmPACK_TIGHT,
|
XmNpacking, XmPACK_TIGHT,
|
||||||
XmNorientation, XmHORIZONTAL,
|
XmNorientation, XmHORIZONTAL,
|
||||||
|
XmNresizeWidth, False,
|
||||||
|
XmNresizeHeight, False,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
XtVaSetValues ((Widget) m_formWidget, XmNspacing, 0, NULL);
|
XtVaSetValues ((Widget) m_formWidget, XmNspacing, 0, NULL);
|
||||||
@@ -131,12 +137,11 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id,
|
|||||||
XtVaSetValues((Widget) m_formWidget, XmNresizePolicy, XmRESIZE_NONE, NULL);
|
XtVaSetValues((Widget) m_formWidget, XmNresizePolicy, XmRESIZE_NONE, NULL);
|
||||||
|
|
||||||
ChangeFont(FALSE);
|
ChangeFont(FALSE);
|
||||||
|
ChangeBackgroundColour();
|
||||||
|
|
||||||
AttachWidget (parent, m_buttonWidget, m_formWidget,
|
AttachWidget (parent, m_buttonWidget, m_formWidget,
|
||||||
pos.x, pos.y, bestSize.x, bestSize.y);
|
pos.x, pos.y, bestSize.x, bestSize.y);
|
||||||
|
|
||||||
ChangeBackgroundColour();
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,7 +186,7 @@ int wxChoice::DoAppend(const wxString& item)
|
|||||||
|
|
||||||
m_widgetArray.Add(w);
|
m_widgetArray.Add(w);
|
||||||
|
|
||||||
char mnem = wxFindMnemonic ((char*) (const char*) item);
|
char mnem = wxFindMnemonic (item);
|
||||||
if (mnem != 0)
|
if (mnem != 0)
|
||||||
XtVaSetValues (w, XmNmnemonic, mnem, NULL);
|
XtVaSetValues (w, XmNmnemonic, mnem, NULL);
|
||||||
|
|
||||||
@@ -359,7 +364,8 @@ void wxChoice::DoSetSize(int x, int y, int width, int height, int sizeFlags)
|
|||||||
if (managed)
|
if (managed)
|
||||||
XtUnmanageChild ((Widget) m_formWidget);
|
XtUnmanageChild ((Widget) m_formWidget);
|
||||||
|
|
||||||
int actualWidth = width, actualHeight = height;
|
int actualWidth = width - WIDTH_OVERHEAD_SUBTRACT,
|
||||||
|
actualHeight = height - HEIGHT_OVERHEAD;
|
||||||
|
|
||||||
if (width > -1)
|
if (width > -1)
|
||||||
{
|
{
|
||||||
@@ -373,11 +379,13 @@ void wxChoice::DoSetSize(int x, int y, int width, int height, int sizeFlags)
|
|||||||
}
|
}
|
||||||
if (height > -1)
|
if (height > -1)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
size_t i;
|
size_t i;
|
||||||
for (i = 0; i < m_noStrings; i++)
|
for (i = 0; i < m_noStrings; i++)
|
||||||
XtVaSetValues ((Widget) m_widgetArray[i],
|
XtVaSetValues ((Widget) m_widgetArray[i],
|
||||||
XmNheight, actualHeight,
|
XmNheight, actualHeight,
|
||||||
NULL);
|
NULL);
|
||||||
|
#endif
|
||||||
XtVaSetValues ((Widget) m_buttonWidget, XmNheight, actualHeight,
|
XtVaSetValues ((Widget) m_buttonWidget, XmNheight, actualHeight,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
@@ -523,6 +531,6 @@ wxSize wxChoice::DoGetBestSize() const
|
|||||||
{
|
{
|
||||||
wxSize items = GetItemsSize();
|
wxSize items = GetItemsSize();
|
||||||
// FIXME arbitrary constants
|
// FIXME arbitrary constants
|
||||||
return wxSize( ( items.x ? items.x + 50 : 120 ),
|
return wxSize( ( items.x ? items.x + WIDTH_OVERHEAD : 120 ),
|
||||||
items.y + 15 );
|
items.y + HEIGHT_OVERHEAD );
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user