Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/04/13 10:15:31 (11 years ago)
Author:
jkarder
Message:

#2116:

  • fixed issues within the outermost control detection
  • fixed visible property assignment of the breadcrumb control in ViewHost
Location:
branches/Breadcrumbs/HeuristicLab.MainForm.WindowsForms/3.3
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/Breadcrumbs/HeuristicLab.MainForm.WindowsForms/3.3/Controls/BreadcrumbControl.cs

    r10093 r10103  
    129129        breadcrumbs.RemoveLast();
    130130      var mainForm = MainFormManager.GetMainForm<MainForm>();
    131       var outermostViewHost = mainForm.GetOutermostViewOfType<ViewHost>(ViewHost);
     131      var outermostViewHost = mainForm.GetOutermostControlOfType<ViewHost>(ViewHost);
    132132      bool showBreadcrumbs = outermostViewHost.ShowBreadcrumbs;
    133133      outermostViewHost.Content = null;
  • branches/Breadcrumbs/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ViewHost.cs

    r10093 r10103  
    2222using System;
    2323using System.Collections.Generic;
     24using System.ComponentModel;
    2425using System.Drawing;
    2526using System.Linq;
     
    4142      viewsLabel.Visible = false;
    4243      viewsLabelVisible = true;
     44      IsValidOutermostViewhost = true;
    4345
    4446      breadcrumbControl.ViewHost = this;
     
    5961
    6062    public bool HotlinkingEnabled { get; set; }
     63
     64    [DefaultValue(true)]
     65    public bool IsValidOutermostViewhost { get; set; }
    6166
    6267    private IContentView cachedView;
     
    132137    }
    133138
    134     private bool isOutermostViewHost;
    135139    public IEnumerable<IContent> Breadcrumbs { get { return breadcrumbControl.Breadcrumbs; } }
    136140
     
    281285
    282286    private void UpdateBreadcrumbControl() {
    283       breadcrumbControl.Visible = ShowBreadcrumbs;
     287      breadcrumbControl.Visible = ShowBreadcrumbs && Content != null;
    284288      if (ShowBreadcrumbs)
    285289        UpdateBreadcrumbTrail(breadcrumbControl.Breadcrumbs, BuildBreadcrumbTrail());
     
    378382
    379383    private void PerformOutermostViewHostDetection() {
     384      if (!IsValidOutermostViewhost) return;
    380385      var mainForm = MainFormManager.GetMainForm<MainForm>();
    381       if (mainForm == null) return;
    382       var outermostViewHost = mainForm.GetOutermostViewOfType<ViewHost>(this);
    383       isOutermostViewHost = outermostViewHost == this;
    384       viewContextMenuStrip.ShowBreadcrumbsToolStripMenuItem.Checked = isOutermostViewHost;
     386      if (mainForm == null) return; // needed for designer
     387      var outermostViewHost = mainForm.GetOutermostControlOfType<ViewHost>(this);
     388      viewContextMenuStrip.ShowBreadcrumbsToolStripMenuItem.Checked = outermostViewHost == this;
    385389    }
    386390    #endregion
  • branches/Breadcrumbs/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/MainForm.cs

    r10093 r10103  
    223223    }
    224224
    225     public T GetOutermostViewOfType<T>(Control childControl) where T : class, IView {
     225    public T GetOutermostControlOfType<T>(Control childControl) where T : Control {
    226226      if (childControl == null) throw new ArgumentNullException("childControl", "ChildControl cannot be null.");
    227227
    228       T outermostView = null;
     228      T outermostControl = null;
    229229      for (var control = childControl; control != null; control = control.Parent) {
    230         var vh = control as T;
    231         if (vh != null) outermostView = vh;
    232       }
    233       return outermostView;
     230        var c = control as T;
     231        if (c != null) outermostControl = c;
     232      }
     233      return outermostControl;
    234234    }
    235235
     
    279279      if (childControl == null) throw new ArgumentNullException("childControl", "ChildControl cannot be null.");
    280280
    281       var outermostViewHost = GetOutermostViewOfType<ViewHost>(childControl);
    282       if (outermostViewHost == null)
    283         throw new ArgumentException("No outermost ViewHost could be found for the specified child control.", "childControl");
     281      var outermostViewHost = GetOutermostControlOfType<ViewHost>(childControl);
     282      if (outermostViewHost == null) return null;
    284283
    285284      if (!requireHotlinking || outermostViewHost.HotlinkingEnabled) {
Note: See TracChangeset for help on using the changeset viewer.