private void RefreshScrollbar()
        {
            if (ScrolledControl != null)
            {
                if (m_scrollbarV != null)
                {
                    m_scrollbarV.Visible = m_scrolledArea.Size.Y < ScrolledControl.Size.Y;
                    if (m_scrollbarV.Visible)
                    {
                        m_scrollbarV.Init(ScrolledControl.Size.Y, m_scrolledArea.Size.Y);
                        var posTopRight = Size * new Vector2(0.5f, -0.5f);
                        var position    = new Vector2(posTopRight.X - m_scrollbarV.Size.X,
                                                      posTopRight.Y);
                        m_scrollbarV.Layout(position + new Vector2(0.0f, m_scrolledAreaPadding.Top), m_scrolledArea.Size.Y);
                    }
                    else
                    {
                        m_scrollbarV.Value = 0f;
                    }
                }

                if (m_scrollbarH != null)
                {
                    m_scrollbarH.Visible = m_scrolledArea.Size.X < ScrolledControl.Size.X;
                    if (m_scrollbarH.Visible)
                    {
                        m_scrollbarH.Init(ScrolledControl.Size.X, m_scrolledArea.Size.X);
                        var posBottomLeft = Size * new Vector2(-0.5f, 0.5f);
                        var position      = new Vector2(posBottomLeft.X,
                                                        posBottomLeft.Y - m_scrollbarH.Size.Y + ScrollBarOffset.Y);
                        m_scrollbarH.Layout(position + new Vector2(m_scrolledAreaPadding.Left), m_scrolledArea.Size.X);
                    }
                    else
                    {
                        m_scrollbarH.Value = 0f;
                    }
                }
            }
            else
            {
                if (m_scrollbarV != null)
                {
                    m_scrollbarV.Visible = false;
                }
                if (m_scrollbarH != null)
                {
                    m_scrollbarH.Visible = false;
                }
            }

            RefreshScrolledControlPosition();
        }
예제 #2
0
        public void Layout()
        {
            m_body.Layout(Vector2.Zero);

            Vector2 realSize = m_body.GetRealSize();

            bool scrollbarsVisible = m_size.Y - m_scrollbarSize.Y < realSize.Y && m_size.X - m_scrollbarSize.X < realSize.X;
            bool vScrollbarVisible = scrollbarsVisible || m_size.Y < realSize.Y;
            bool hScrollbarVisible = scrollbarsVisible || m_size.X < realSize.X;

            Vector2 bodySize = new Vector2(vScrollbarVisible ? m_size.X - m_scrollbarSize.X : m_size.X, hScrollbarVisible ? m_size.Y - m_scrollbarSize.Y : m_size.Y);

            m_vScrollbar.Visible = vScrollbarVisible;
            m_vScrollbar.Init(realSize.Y, bodySize.Y);
            //m_vScrollbar.Layout(m_body.GetPosition() + new Vector2(m_scrollbarSize.X / 4f - 0.0024f, 0), m_body.GetSize(), new Vector2(m_scrollbarSize.X / 2f, m_scrollbarSize.Y), hScrollbarVisible);

            m_hScrollbar.Visible = hScrollbarVisible;
            m_hScrollbar.Init(realSize.X, bodySize.X);
            //m_hScrollbar.Layout(m_body.GetPosition(), m_body.GetSize(), m_scrollbarSize, vScrollbarVisible);

            m_body.SetSize(bodySize);
            m_body.Layout(new Vector2(m_hScrollbar.Value, m_vScrollbar.Value));
        }