From 04f8a852c16e57efd9a19ca12341cd7b0e665ba5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 14 Nov 2012 13:47:13 +0000 Subject: [PATCH] Handle wxBORDER_NONE in wxGTK wxTextCtrl::DoGetSizeFromTextSize(). Don't add margins for the controls without borders, they are not used in this case. See #14816. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72952 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/textctrl.cpp | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index dcfe229e22..ecb98e6bdc 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -1832,12 +1832,24 @@ wxSize wxTextCtrl::DoGetSizeFromTextSize(int xlen, int ylen) const if ( IsSingleLine() ) { - // default height - tsize.y = GTKGetPreferredSize(m_widget).y; - // Add the margins we have previously set, but only the horizontal border - // as vertical one has been taken account at GTKGetPreferredSize(). - // Also get other GTK+ margins. - tsize.IncBy( GTKGetEntryMargins(GetEntry()).x, 0); + if ( HasFlag(wxBORDER_NONE) ) + { + tsize.y = cHeight; +#ifdef __WXGTK3__ + tsize.IncBy(9, 0); +#else + tsize.IncBy(4, 0); +#endif // GTK3 + } + else + { + // default height + tsize.y = GTKGetPreferredSize(m_widget).y; + // Add the margins we have previously set, but only the horizontal border + // as vertical one has been taken account at GTKGetPreferredSize(). + // Also get other GTK+ margins. + tsize.IncBy( GTKGetEntryMargins(GetEntry()).x, 0); + } } //multiline @@ -1851,17 +1863,21 @@ wxSize wxTextCtrl::DoGetSizeFromTextSize(int xlen, int ylen) const tsize.y = cHeight; if ( ylen <= 0 ) { - tsize.y = cHeight * wxMax(wxMin(GetNumberOfLines(), 10), 2); + tsize.y = 1 + cHeight * wxMax(wxMin(GetNumberOfLines(), 10), 2); // add space for horizontal scrollbar if ( m_scrollBar[0] && (m_windowStyle & wxHSCROLL) ) tsize.IncBy(0, GTKGetPreferredSize(GTK_WIDGET(m_scrollBar[0])).y + 3); } - // hardcode borders, margins, etc - tsize.IncBy(5, 5); + if ( !HasFlag(wxBORDER_NONE) ) + { + // hardcode borders, margins, etc + tsize.IncBy(5, 4); + } } - // Perhaps the user wants something different from CharHeight + // Perhaps the user wants something different from CharHeight, or ylen + // is used as the height of a multiline text. if ( ylen > 0 ) tsize.IncBy(0, ylen - cHeight); -- 2.47.2