void CGUIBaseContainer::CalculateLayout() { CGUIListItemLayout *oldFocusedLayout = m_focusedLayout; CGUIListItemLayout *oldLayout = m_layout; GetCurrentLayouts(); // calculate the number of items to display if (!m_focusedLayout || !m_layout) return; if (oldLayout == m_layout && oldFocusedLayout == m_focusedLayout) return; // nothing has changed, so don't update stuff m_itemsPerPage = std::max((int)((Size() - m_focusedLayout->Size(m_orientation)) / m_layout->Size(m_orientation)) + 1, 1); // ensure that the scroll offset is a multiple of our size m_scroller.SetValue(GetOffset() * m_layout->Size(m_orientation)); }
void CGUIPanelContainer::CalculateLayout() { GetCurrentLayouts(); if (!m_layout || !m_focusedLayout) return; // calculate the number of items to display if (m_orientation == HORIZONTAL) { m_itemsPerRow = (int)(m_height / m_layout->Size(VERTICAL)); m_itemsPerPage = (int)(m_width / m_layout->Size(HORIZONTAL)); } else { m_itemsPerRow = (int)(m_width / m_layout->Size(HORIZONTAL)); m_itemsPerPage = (int)(m_height / m_layout->Size(VERTICAL)); } if (m_itemsPerRow < 1) m_itemsPerRow = 1; if (m_itemsPerPage < 1) m_itemsPerPage = 1; // ensure that the scroll offset is a multiple of our size m_scroller.SetValue(GetOffset() * m_layout->Size(m_orientation)); }