X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4a06b34847e04ddaf6c25f9c63f4f072ed427636..7b28e0ede49ca78e05df6bc6af2d2d8c508f8455:/src/generic/listbkg.cpp?ds=sidebyside diff --git a/src/generic/listbkg.cpp b/src/generic/listbkg.cpp index 6b5f08b442..3e8d09d7fb 100644 --- a/src/generic/listbkg.cpp +++ b/src/generic/listbkg.cpp @@ -57,7 +57,6 @@ const int wxID_LISTBOOKLISTVIEW = wxNewId(); BEGIN_EVENT_TABLE(wxListbook, wxBookCtrl) EVT_SIZE(wxListbook::OnSize) - EVT_LIST_ITEM_SELECTED(wxID_LISTBOOKLISTVIEW, wxListbook::OnListSelected) END_EVENT_TABLE() @@ -72,7 +71,9 @@ END_EVENT_TABLE() void wxListbook::Init() { m_list = NULL; +#if wxUSE_LINE_IN_LISTBOOK m_line = NULL; +#endif // wxUSE_LINE_IN_LISTBOOK m_selection = wxNOT_FOUND; } @@ -93,6 +94,11 @@ wxListbook::Create(wxWindow *parent, #endif // __WXMAC__/!__WXMAC__ } + // no border for this control, it doesn't look nice together with + // wxListCtrl border + style &= ~wxBORDER_MASK; + style |= wxBORDER_NONE; + if ( !wxControl::Create(parent, id, pos, size, style, wxDefaultValidator, name) ) return false; @@ -103,10 +109,11 @@ wxListbook::Create(wxWindow *parent, wxID_LISTBOOKLISTVIEW, wxDefaultPosition, wxDefaultSize, - wxBORDER_NONE | wxLC_ICON | wxLC_SINGLE_SEL | + wxLC_ICON | wxLC_SINGLE_SEL | (IsVertical() ? wxLC_ALIGN_LEFT : wxLC_ALIGN_TOP) ); +#if wxUSE_LINE_IN_LISTBOOK m_line = new wxStaticLine ( this, @@ -115,7 +122,18 @@ wxListbook::Create(wxWindow *parent, wxDefaultSize, IsVertical() ? wxLI_HORIZONTAL : wxLI_VERTICAL ); - +#endif // wxUSE_LINE_IN_LISTBOOK + +#ifdef __WXMSW__ + // On XP with themes enabled the GetViewRect used in GetListSize to + // determine the space needed for the list view will incorrectly return + // (0,0,0,0) the first time. So send a pending event so OnSize wiull be + // called again after the window is ready to go. Technically we don't + // need to do this on non-XP windows, but if things are already sized + // correctly then nothing changes and so there is no harm. + wxSizeEvent evt; + GetEventHandler()->AddPendingEvent(evt); +#endif return true; } @@ -145,7 +163,7 @@ wxSize wxListbook::GetListSize() const wxRect wxListbook::GetPageRect() const { - const wxSize sizeList = GetListSize(); + const wxSize sizeList = m_list->GetSize(); wxRect rectPage(wxPoint(0, 0), GetClientSize()); switch ( GetWindowStyle() & wxLB_ALIGN_MASK ) @@ -209,8 +227,10 @@ void wxListbook::OnSize(wxSizeEvent& event) break; } - m_list->SetSize(posList.x, posList.y, sizeList.x, sizeList.y); + m_list->Move(posList.x, posList.y); + m_list->SetClientSize(sizeList.x, sizeList.y); +#if wxUSE_LINE_IN_LISTBOOK if ( m_line ) { wxRect rectLine(wxPoint(0, 0), sizeClient); @@ -240,6 +260,7 @@ void wxListbook::OnSize(wxSizeEvent& event) m_line->SetSize(rectLine); } +#endif // wxUSE_LINE_IN_LISTBOOK // we should always have some selection if possible if ( m_selection == wxNOT_FOUND && GetPageCount() )