From 693460233749fec3bf79720268d3cd8dfc55c78d Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Sat, 9 Sep 2006 02:42:48 +0000 Subject: [PATCH] don't set negative window size git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41080 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/toplvcmn.cpp | 12 +++++++++--- src/generic/splitter.cpp | 12 ++++++++++-- src/gtk/frame.cpp | 2 ++ src/gtk/toplevel.cpp | 14 ++++++-------- src/gtk/win_gtk.c | 4 ++++ src/gtk/window.cpp | 4 ++++ 6 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/common/toplvcmn.cpp b/src/common/toplvcmn.cpp index 60376d3ebc..101f64677f 100644 --- a/src/common/toplvcmn.cpp +++ b/src/common/toplvcmn.cpp @@ -350,12 +350,18 @@ void wxTopLevelWindowBase::DoLayout() // for whatever reasons, wxGTK wants to have a small offset - it // probably looks better with it? #ifdef __WXGTK__ - static const int ofs = 1; + const int ofs = 1; + clientW -= 2 * ofs; + clientH -= 2 * ofs; + if (clientW < 0) + clientW = 0; + if (clientH < 0) + clientH = 0; #else - static const int ofs = 0; + const int ofs = 0; #endif - child->SetSize(ofs, ofs, clientW - 2*ofs, clientH - 2*ofs); + child->SetSize(ofs, ofs, clientW, clientH); } } } diff --git a/src/generic/splitter.cpp b/src/generic/splitter.cpp index 9e357621d6..6e084f1696 100644 --- a/src/generic/splitter.cpp +++ b/src/generic/splitter.cpp @@ -681,17 +681,25 @@ void wxSplitterWindow::SizeWindows() { w1 = size1; w2 = w - 2*border - sash - w1; - h1 = + if (w2 < 0) + w2 = 0; h2 = h - 2*border; + if (h2 < 0) + h2 = 0; + h1 = h2; x2 = size2; y2 = border; } else // horz splitter { - w1 = w2 = w - 2*border; + if (w2 < 0) + w2 = 0; + w1 = w2; h1 = size1; h2 = h - 2*border - sash - h1; + if (h2 < 0) + h2 = 0; x2 = border; y2 = size2; } diff --git a/src/gtk/frame.cpp b/src/gtk/frame.cpp index 2d8ad5a544..4a43ba6aee 100644 --- a/src/gtk/frame.cpp +++ b/src/gtk/frame.cpp @@ -276,6 +276,8 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const } } #endif // wxUSE_TOOLBAR + if (*height < 0) + *height = 0; } } diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index a43befb6c5..614a4dce0a 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -915,18 +915,16 @@ void wxTopLevelWindowGTK::DoGetClientSize( int *width, int *height ) const if (height) { - *height = m_height; - - // mini edge - *height -= m_miniEdge*2 + m_miniTitle; + *height = m_height - 2 * m_miniEdge + m_miniTitle; + if (*height < 0) + *height = 0; } if (width) { - *width = m_width; - - *width -= m_miniEdge*2; + *width = m_width - 2 * m_miniEdge; + if (*width < 0) + *width = 0; } - } void wxTopLevelWindowGTK::DoSetClientSize( int width, int height ) diff --git a/src/gtk/win_gtk.c b/src/gtk/win_gtk.c index 00caf72a5f..ead5ad20d6 100644 --- a/src/gtk/win_gtk.c +++ b/src/gtk/win_gtk.c @@ -547,6 +547,10 @@ gtk_pizza_size_allocate (GtkWidget *widget, y = allocation->y + border; w = allocation->width - border*2; h = allocation->height - border*2; + if (w < 0) + w = 0; + if (h < 0) + h = 0; if (GTK_WIDGET_REALIZED (widget)) { diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index a10119d5ad..0cdcb2b0bd 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -3020,6 +3020,10 @@ void wxWindowGTK::DoGetClientSize( int *width, int *height ) const w -= dw; h -= dh; + if (w < 0) + w = 0; + if (h < 0) + h = 0; } if (width) *width = w; -- 2.45.2