X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0ccf004304dd6588e8d31ba4d29908477a6bf6ab..e0d1fd7f6e88e6554b21785dc8d7d86a8daccbb1:/src/gtk/collpane.cpp diff --git a/src/gtk/collpane.cpp b/src/gtk/collpane.cpp index 229a4759b1..1239855006 100644 --- a/src/gtk/collpane.cpp +++ b/src/gtk/collpane.cpp @@ -22,13 +22,9 @@ #include "wx/collpane.h" #include "wx/toplevel.h" #include "wx/sizer.h" +#include "wx/panel.h" #include "wx/gtk/private.h" -#include "wx/gtk/win_gtk.h" - -#include - -const wxChar wxCollapsiblePaneNameStr[] = wxT("CollapsiblePane"); // ============================================================================ // implementation @@ -40,9 +36,10 @@ const wxChar wxCollapsiblePaneNameStr[] = wxT("CollapsiblePane"); extern "C" { -static void gtk_collapsiblepane_expanded_callback (GObject *object, - GParamSpec *param_spec, - wxCollapsiblePane *p) +static void +gtk_collapsiblepane_expanded_callback(GObject * WXUNUSED(object), + GParamSpec * WXUNUSED(param_spec), + wxCollapsiblePane *p) { // NB: unlike for the "activate" signal, when this callback is called, if // we try to query the "collapsed" status through p->IsCollapsed(), we @@ -94,6 +91,10 @@ static void gtk_collapsiblepane_expanded_callback (GObject *object, if (p->HasFlag(wxCP_NO_TLW_RESIZE)) { + // fire an event + wxCollapsiblePaneEvent ev(p, p->GetId(), p->IsCollapsed()); + p->GetEventHandler()->ProcessEvent(ev); + // the user asked to explicitely handle the resizing itself... return; } @@ -103,7 +104,7 @@ static void gtk_collapsiblepane_expanded_callback (GObject *object, if ( top && top->GetSizer() ) { // 2) recalculate minimal size of the top window - wxSize sz = top->GetSizer()->CalcMin(); + sz = top->GetSizer()->CalcMin(); if (top->m_mainWidget) { @@ -116,39 +117,11 @@ static void gtk_collapsiblepane_expanded_callback (GObject *object, // when the expander is collapsed!) gtk_window_set_resizable (GTK_WINDOW (top->m_widget), p->IsExpanded()); - // 4) set size hints: note that this code has been taken and adapted - // from src/gtk/toplevel.cpp - GdkGeometry geom; - - geom.min_width = sz.x; - geom.min_height = sz.y; - - gtk_window_set_geometry_hints( GTK_WINDOW(top->m_widget), - (GtkWidget*) NULL, - &geom, - GDK_HINT_MIN_SIZE ); - - // 5) set size: also this code has been adapted from src/gtk/toplevel.cpp - // to do the size changes immediately and not delaying them in the idle - // time - top->m_width = sz.x; - top->m_height = sz.y; - - int client_x = top->m_miniEdge; - int client_y = top->m_miniEdge + top->m_miniTitle; - int client_w = top->m_width - 2*top->m_miniEdge; - int client_h = top->m_height - 2*top->m_miniEdge - top->m_miniTitle; - if (client_w < 0) - client_w = 0; - if (client_h < 0) - client_h = 0; - - gtk_pizza_set_size( GTK_PIZZA(top->m_mainWidget), - top->m_wxwindow, - client_x, client_y, client_w, client_h ); - - gtk_widget_set_size_request( top->m_wxwindow, sz.x, sz.y ); + // 4) set size hints + top->SetSizeHints(sz.x, sz.y); + // 5) set size + top->SetClientSize(sz); } } @@ -199,8 +172,6 @@ bool wxCollapsiblePane::Create(wxWindow *parent, return wxGenericCollapsiblePane::Create(parent, id, label, pos, size, style, val, name); - m_needParent = true; - m_acceptsFocus = true; m_bIgnoreNextChange = false; if ( !PreCreation( parent, pos, size ) || @@ -224,10 +195,10 @@ bool wxCollapsiblePane::Create(wxWindow *parent, m_insertCallback = gtk_collapsiblepane_insert_callback; // this the real "pane" - m_pPane = new wxWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, - wxNO_BORDER); + m_pPane = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, + wxTAB_TRAVERSAL|wxNO_BORDER); - gtk_widget_show( GTK_WIDGET(m_widget) ); + gtk_widget_show(m_widget); m_parent->DoAddChild( this ); PostCreation(size);