From a6fc8ae3c22f72f1caa78bc993ac8db545c49b6a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 6 Jan 2000 15:58:48 +0000 Subject: [PATCH] corrected wxComboBox::GetBestSize() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5274 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/combobox.cpp | 22 +++++++++++++++++++++- src/gtk1/combobox.cpp | 22 +++++++++++++++++++++- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/gtk/combobox.cpp b/src/gtk/combobox.cpp index eb10d33e38..8369ebbf0f 100644 --- a/src/gtk/combobox.cpp +++ b/src/gtk/combobox.cpp @@ -668,7 +668,27 @@ bool wxComboBox::IsOwnGtkWindow( GdkWindow *window ) wxSize wxComboBox::DoGetBestSize() const { wxSize ret( wxControl::DoGetBestSize() ); - if (ret.x < 100) ret.x = 100; + + // we know better our horizontal extent: it depends on the longest string + // in the combobox + ret.x = 0; + if ( m_widget ) + { + GdkFont *font = m_font.GetInternalFont(); + + wxCoord width; + size_t count = Number(); + for ( size_t n = 0; n < count; n++ ) + { + width = (wxCoord)gdk_string_width(font, GetString(n).mbc_str()); + if ( width > ret.x ) + ret.x = width; + } + } + + // empty combobox should have some reasonable default size too + if ( ret.x < 100 ) + ret.x = 100; return ret; } diff --git a/src/gtk1/combobox.cpp b/src/gtk1/combobox.cpp index eb10d33e38..8369ebbf0f 100644 --- a/src/gtk1/combobox.cpp +++ b/src/gtk1/combobox.cpp @@ -668,7 +668,27 @@ bool wxComboBox::IsOwnGtkWindow( GdkWindow *window ) wxSize wxComboBox::DoGetBestSize() const { wxSize ret( wxControl::DoGetBestSize() ); - if (ret.x < 100) ret.x = 100; + + // we know better our horizontal extent: it depends on the longest string + // in the combobox + ret.x = 0; + if ( m_widget ) + { + GdkFont *font = m_font.GetInternalFont(); + + wxCoord width; + size_t count = Number(); + for ( size_t n = 0; n < count; n++ ) + { + width = (wxCoord)gdk_string_width(font, GetString(n).mbc_str()); + if ( width > ret.x ) + ret.x = width; + } + } + + // empty combobox should have some reasonable default size too + if ( ret.x < 100 ) + ret.x = 100; return ret; } -- 2.45.2