X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3c7789014106c9269b0f4ecc1a3071b14f351d3f..2bc4cc1ead29f6de1f0576a416025edadb13d7cc:/src/gtk/collpane.cpp diff --git a/src/gtk/collpane.cpp b/src/gtk/collpane.cpp index fcbc02edfc..a902d113a3 100644 --- a/src/gtk/collpane.cpp +++ b/src/gtk/collpane.cpp @@ -31,7 +31,7 @@ const char wxCollapsiblePaneNameStr[] = "collapsiblePane"; -wxDEFINE_EVENT( wxEVT_COMMAND_COLLPANE_CHANGED, wxCollapsiblePaneEvent ) +wxDEFINE_EVENT( wxEVT_COMMAND_COLLPANE_CHANGED, wxCollapsiblePaneEvent ); IMPLEMENT_DYNAMIC_CLASS(wxCollapsiblePaneEvent, wxCommandEvent) @@ -95,7 +95,7 @@ gtk_collapsiblepane_expanded_callback(GObject * WXUNUSED(object), // 1) need to update our size hints // NB: this function call won't actually do any long operation - // (redraw/relayouting/resizing) so that it's flicker-free + // (redraw/relayout/resize) so that it's flicker-free p->SetMinSize(sz); if (p->HasFlag(wxCP_NO_TLW_RESIZE)) @@ -104,7 +104,7 @@ gtk_collapsiblepane_expanded_callback(GObject * WXUNUSED(object), wxCollapsiblePaneEvent ev(p, p->GetId(), p->IsCollapsed()); p->HandleWindowEvent(ev); - // the user asked to explicitely handle the resizing itself... + // the user asked to explicitly handle the resizing itself... return; } @@ -123,7 +123,7 @@ gtk_collapsiblepane_expanded_callback(GObject * WXUNUSED(object), // transition. This may be sometimes undesired but *is* // necessary and if you look carefully, all GTK+ programs using // GtkExpander perform this trick (e.g. the standard "open file" - // dialog of GTK+>=2.4 is not resizeable when the expander is + // dialog of GTK+>=2.4 is not resizable when the expander is // collapsed!) gtk_window_set_resizable (GTK_WINDOW (top->m_widget), p->IsExpanded()); @@ -198,13 +198,18 @@ bool wxCollapsiblePane::Create(wxWindow *parent, // this the real "pane" m_pPane = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, - wxTAB_TRAVERSAL|wxNO_BORDER); + wxTAB_TRAVERSAL|wxNO_BORDER, wxS("wxCollapsiblePanePane")); gtk_widget_show(m_widget); m_parent->DoAddChild( this ); PostCreation(size); + // we should blend into our parent background + const wxColour bg = parent->GetBackgroundColour(); + SetBackgroundColour(bg); + m_pPane->SetBackgroundColour(bg); + // remember the size of this control when it's collapsed m_szCollapsed = GetBestSize(); @@ -244,7 +249,8 @@ bool wxCollapsiblePane::IsCollapsed() const void wxCollapsiblePane::SetLabel(const wxString &str) { - gtk_expander_set_label(GTK_EXPANDER(m_widget), wxGTK_CONV(str)); + gtk_expander_set_label(GTK_EXPANDER(m_widget), + wxGTK_CONV(GTKConvertMnemonics(str))); // FIXME: we need to update our collapsed width in some way but using GetBestSize() // we may get the size of the control with the pane size summed up if we are expanded! @@ -263,13 +269,23 @@ void wxCollapsiblePane::OnSize(wxSizeEvent &ev) #endif // here we need to resize the pane window otherwise, even if the GtkExpander container - // is expanded or shrinked, the pane window won't be updated! + // is expanded or shrunk, the pane window won't be updated! m_pPane->SetSize(ev.GetSize().x, ev.GetSize().y - m_szCollapsed.y); - // we need to explicitely call m_pPane->Layout() or else it won't correctly relayout + // we need to explicitly call m_pPane->Layout() or else it won't correctly relayout // (even if SetAutoLayout(true) has been called on it!) m_pPane->Layout(); } + +GdkWindow *wxCollapsiblePane::GTKGetWindow(wxArrayGdkWindows& windows) const +{ + GtkWidget *label = gtk_expander_get_label_widget( GTK_EXPANDER(m_widget) ); + windows.Add(gtk_widget_get_window(label)); + windows.Add(gtk_widget_get_window(m_widget)); + + return NULL; +} + #endif // wxUSE_COLLPANE && !defined(__WXUNIVERSAL__)