protected override void OnSizeRequested(ref Gtk.Requisition requisition) { base.OnSizeRequested(ref requisition); IWidgetSurface ws = Frontend.Surface; int h, w; if (ws.SizeRequestMode == SizeRequestMode.HeightForWidth) { w = (int)ws.GetPreferredWidth().MinSize; h = (int)ws.GetPreferredHeightForWidth(w).MinSize; } else { h = (int)ws.GetPreferredHeight().MinSize; w = (int)ws.GetPreferredWidthForHeight(h).MinSize; } if (requisition.Width < w) { requisition.Width = w; } if (requisition.Height < h) { requisition.Height = h; } foreach (var cr in children) { cr.Key.SizeRequest(); } }
protected override void OnSizeRequested(ref Gtk.Requisition requisition) { IWidgetSurface ws = Frontend; int w = (int)ws.GetPreferredWidth().MinSize; int h = (int)ws.GetPreferredHeight().MinSize; requisition.Width = w; requisition.Height = h; }
void OnChildPreferredSizeChanged() { IWidgetSurface surface = this; if (Parent != null && resizeRequestQueue.Contains(Parent)) { // Size for this widget will be checked when checking the parent surface.ResetCachedSizes(); return; } // Determine if the size change of the child implies a size change // of this widget. If it does, the size change notification // has to be propagated to the parent var oldWidth = width; var oldHeight = height; surface.ResetCachedSizes(); bool changed = true; if (surface.SizeRequestMode == SizeRequestMode.HeightForWidth) { var nw = surface.GetPreferredWidth(); if (nw == oldWidth) { var nh = surface.GetPreferredHeightForWidth(Backend.Size.Width); if (nh == oldHeight) { changed = false; } } } else { var nh = surface.GetPreferredHeight(); if (nh == oldHeight) { var nw = surface.GetPreferredWidthForHeight(Backend.Size.Height); if (nw == oldWidth) { changed = false; } } } if (changed) { NotifySizeChangeToParent(); } else { QueueForReallocate(this); } }
protected virtual void OnChildPreferredSizeChanged(Widget w) { if (Parent != null && (!widthCached || !heightCached)) { Parent.OnChildPreferredSizeChanged(w); return; } var oldWidth = width; var oldHeight = height; bool notifyParent = Parent != null; IWidgetSurface surface = this; surface.ResetCachedSizes(); if (surface.SizeRequestMode == SizeRequestMode.HeightForWidth) { var nw = surface.GetPreferredWidth(); if (nw == oldWidth) { var nh = surface.GetPreferredHeightForWidth(Backend.Size.Width); if (nh == oldHeight) { notifyParent = false; } } } else { var nh = surface.GetPreferredHeight(); if (nh == oldHeight) { var nw = surface.GetPreferredWidthForHeight(Backend.Size.Height); if (nw == oldWidth) { notifyParent = false; } } } if (notifyParent) { if (Parent != null) { Parent.OnChildPreferredSizeChanged(this); } } else { surface.Reallocate(); } }
void HandleSizeRequested(object o, Gtk.SizeRequestedArgs args) { IWidgetSurface ws = (IWidgetSurface)Frontend; Gtk.Requisition req = args.Requisition; int w = (int)ws.GetPreferredWidth().MinSize; int h = (int)ws.GetPreferredHeight().MinSize; if (req.Width < w) { req.Width = w; } if (req.Height < h) { req.Height = h; } args.Requisition = req; }
protected override void OnSizeRequested(ref Gtk.Requisition requisition) { IWidgetSurface ws = Frontend; int w = (int)ws.GetPreferredWidth().MinSize; int h = (int)ws.GetPreferredHeight().MinSize; if (requisition.Width < w) { requisition.Width = w; } if (requisition.Height < h) { requisition.Height = h; } foreach (var cr in children) { cr.Key.SizeRequest(); } }
void Dump(IWidgetSurface w, int ind) { if (w == null) return; Console.WriteLine (new string (' ', ind * 2) + " " + w.GetType ().Name + " " + w.GetPreferredWidth () + " " + w.GetPreferredHeight ()); foreach (var c in w.Children) Dump (c, ind + 1); }
void Dump(IWidgetSurface w, int ind) { if (w == null) { return; } Console.WriteLine(new string (' ', ind * 2) + " " + w.GetType().Name + " " + w.GetPreferredWidth() + " " + w.GetPreferredHeight()); foreach (var c in w.Children) { Dump(c, ind + 1); } }