Adroit.Gui.Widgets.ModeButton.OnExposeEvent C# (CSharp) Метод

OnExposeEvent() защищенный Метод

protected OnExposeEvent ( Gdk.EventExpose evnt ) : bool
evnt Gdk.EventExpose
Результат bool
        protected override bool OnExposeEvent(EventExpose evnt)
        {
            var clip_region = new Gdk.Rectangle (0, 0, 0, 0);
            var n_children = m_box.Children.Length - 1;
            //var inner_border = 2; // StyleGetProperty is broken

            m_button.Show ();
            m_button.Hide ();

            evnt.Window.BeginPaintRect (evnt.Area);

            Style.PaintBox (m_button.Style, evnt.Window, StateType.Normal,
                            ShadowType.In, evnt.Area, m_button, "button",
                            evnt.Area.X, evnt.Area.Y,
                            evnt.Area.Width, evnt.Area.Height);

            if (m_Selected >= 0) {
                if (n_children > 1) {
                    clip_region.Width = evnt.Area.Width / n_children;
                    clip_region.X = (clip_region.Width * m_Selected) + 1;
                }
                else {
                    clip_region.X = 0;
                    clip_region.Width = evnt.Area.Width;
                }

                clip_region.Y = evnt.Area.Y;
                clip_region.Height = evnt.Area.Height;

                Style.PaintBox (m_button.Style, evnt.Window, StateType.Selected,
                                ShadowType.EtchedOut, clip_region, m_button, "button",
                                evnt.Area.X, evnt.Area.Y,
                                evnt.Area.Width, evnt.Area.Height);
            }

            if (Hovered >= 0 && Selected != Hovered) {
                if (n_children > 1) {
                    clip_region.Width = evnt.Area.Width / n_children;
                    if (Hovered == 0)
                        clip_region.X = 0;
                    else
                        clip_region.X = clip_region.Width * Hovered + 1;
                }
                else {
                    clip_region.X = 0;
                    clip_region.Width = evnt.Area.Width;
                }

                clip_region.Y = evnt.Area.Y;
                clip_region.Height = evnt.Area.Height;

                Style.PaintBox (m_button.Style, evnt.Window, StateType.Prelight,
                                ShadowType.In, clip_region, m_button, "button",
                                evnt.Area.X, evnt.Area.Y,
                                evnt.Area.Width, evnt.Area.Height);
            }

            /*
            1.UpTo (n_children).ForEach (i => {
                double offset = (evnt.Area.Width / n_children) * i;
                Style.PaintVline (m_button.Style, evnt.Window, StateType.Normal,
                                  evnt.Area, m_button, "button",
                                  evnt.Area.Y + inner_border + 1,
                                  (int) (evnt.Area.Y + evnt.Area.Height - (inner_border * 2) - 1),
                                  (int) (evnt.Area.X + offset + 1));
            });
            */

            this.PropagateExpose (this.Child, evnt);

            evnt.Window.EndPaint ();

            return false;
        }