Changeset 174:3d58adc17d20

Show
Ignore:
Timestamp:
08/31/09 07:54:23 (3 years ago)
Author:
Diggory Hardy <diggory.hardy@gmail.com>
branch:
default
Message:

Temporary commit to allow backup

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • codeDoc/ideas.txt

    r173 r174  
    6969    +>  combined rendering (to texture?) of each "layer" to enable nice transparancy 
    7070    >   lower performance? 
     71> Data: 
     72  > remove "designs" concept from WidgetLoader: 
     73    > have one design per file 
     74    > to load multiple designs, have multiple WidgetLoaders in memory (so each just stores one set of data) 
     75    > pass a reference to a WidgetLoader or whatever it's called to the WidgetManager 
     76      > instead of class extension 
     77      > allows easily swapping data sets 
    7178 
    7279 
    7380Content: 
    7481->  Per-content undo support? 
    75 >   Services: 
     82>   Possible extra services: 
    7683    >   All content: 
    77         +>  Clipboard 
    7884    >   Some content: 
    7985        +>  Spellchecking 
    8086        +>  Calculator 
    81     -2> Fixed list of services working on IContent/Content: 
    82         >   Clipboard - can't store Content (callbacks) 
    83             ->  needs to check content type 
    84             >   unless stored as char[] which all content can take 
    85                 ->  extra conversions (minor) 
    86         ->  Need to check type of content for specific services 
    87     +1> List for each type of content: 
    88         +>  can use a static list widget for each type 
    89         ->  clipboard is type specific; need to decide when to convert, etc. 
    90             ?>  enables better copying; e.g. from double 3.5e9 to int 4×10⁹ 
    91     >   Use a list of content as the service menu 
    92         >   each item is a BoolContent and has value true if it can interact with the current content type 
    93         >   wrapped in a CollapsibleWidget, displaying based on own value 
    9487  > Context menus: 
    9588    > Context menu serves (editable?) content most directly under mouse cursor 
  • codeDoc/jobs.txt

    r173 r174  
    2525 
    2626Implement a RootWidget moving functionality out of AWidgetManager, etc., now, or later? 
     27RequestRedraw becomes a function of the renderer. 
     28 
     29Undefined reference problem: (see ~/d/small/tests/compilerErrors/packageFunc.d) 
     30Solution: access via a class base instead of an interface base. 
     31Two ways to implement: 
     32  Leave IChildWidget an interface, but change stored refs to AChildWidget and cast references passed in functions before calling member functions. 
     33  Use AChildWidget directly or an abstract base class instead of IChildWidget, so that interfaced functions can pass the same type stored. 
     34Making IChildWidget an abstact class seems to have partially solved it. But IPopupParentWidget (needs to be an interface), etc., still need some help. 
     35Presumably setWidth is getting called from IChildWidget instead of AChildWidget now. ?? 
     36More link errors with ldc. 
    2737 
    2838 
     
    31414   Move createWidget code out of WidgetManager. 
    32424   GUI: up-clicks get passed as events and activate objects 
     433   May be useful to make all widgets override draw() to ensure the invariant runs locally. 
    33443   Closing menus when release-click is not on menu or parent (ordinary & context). 
    34453   Dragging and dropping of editable data: should content immediately appear as being dragged? 
  • codeDoc/policies.txt

    r163 r174  
    37374   Initialisation / cleanup 
    3838 
    39 5   Testing 
     395   Callbacks 
    4040 
    41 6   Logging 
     416   Testing 
    4242 
    43 7   Exceptions 
     437   Logging 
    4444 
    45 8   Translating string
     458   Exception
    4646 
    47 9 Floating point types  
     479   Translating strings 
     48 
     4910  Floating point types  
    4850 
    4951 
     
    102104 
    103105 
     106--- Callbacks --- 
     107I suggest making callbacks called by external objects public, so that invariants are called. 
     108 
     109 
     110 
    104111--- Testing --- 
    105112Testing should, as far as reasonably possible, be done by unittests, defined either in the appropriate module or another module. Any modules containing unittests must be imported by test.mdeTest. 
     
    139146Exceptions should only be used for errors (see comment on log levels above). Thus when an exception is caught, by definition an error occured. 
    140147 
    141 Thrown exceptions should, where documented, be documented via the logger
     148Caught exceptions should be documented via the logger. TODO: work out the best way of incorporating a stack trace. Then lots of specific exception types and messages aren't necessary
    142149 
    143150Thrown exceptions should use an exception class specific to at least the package involved to enable specific catching of errors. Exception classes should be defined within a module exception.d in the package directory. Exception classes should generally follow the conventions within mde/exception.d to aid in providing reasonable error messages. 
  • data/conf/guiDemo.mtt

    r171 r174  
    11{MT01} 
    22<char[]|Renderer="Simple"> 
    3 <char[]|Design="Working"> 
     3<char[]|Design="Basic"> 
    44{Working} 
    55<WidgetData|root={0:[0x4100,0,2,1],1:["bar","float"]}> 
     
    5454{Basic} 
    5555<WidgetData|root={0:[0x21,0x90D970],1:["A string!"]}> 
     56<WidgetData|context={0:[0x4040]}> 
  • examples/guiDemo.d

    r173 r174  
    2929import tango.time.Clock;                // Clock.now() 
    3030import tango.util.log.Log : Log, Logger; 
    31 import tango.core.stacktrace.TraceExceptions; 
     31//import tango.core.stacktrace.TraceExceptions; 
    3232 
    3333int main(char[][] args) 
  • mde/gui/WMScreen.d

    r173 r174  
    2222module mde.gui.WMScreen; 
    2323 
    24 import mde.gui.WidgetManager; 
     24import mde.gui.widget.WidgetManager; 
    2525import mde.gui.WidgetLoader; 
    2626import mde.gui.widget.Ifaces; 
     
    7575     
    7676    /** Draw the gui. */ 
    77     void draw() { 
     77    override void draw() { 
    7878        synchronized(mutex) { 
    7979        debug (mdeDrawEvents) 
    8080        logger.trace ("drawing"); 
    81             wmDrawWidgets()
     81            super.draw
    8282    } 
    8383    } 
     
    110110     * Should be called before createWidgets to prevent widgets being squashed 
    111111     * to min-dims on loading (losing saved dimensions of columns, etc). */ 
    112     void sizeEvent (int nw, int nh) {   // IDrawable function 
    113         mutex.lock; 
    114         scope(exit) mutex.unlock; 
    115          
    116         w = cast(wdim) nw; 
    117         h = cast(wdim) nh; 
    118         matchMinimalSize; 
    119          
    120         if (!childRoot) return;     // if not created yet. 
    121         childRoot.setWidth  (w, -1); 
    122         childRoot.setHeight (h, -1); 
    123         childRoot.setPosition (0,0); 
     112    override void sizeEvent (int nw, int nh) {   // IDrawable function 
     113        synchronized (mutex) { 
     114        wmSizeEvent (nw, nh); 
     115    } 
    124116    } 
    125117     
  • mde/gui/WidgetLoader.d

    r171 r174  
    2121module mde.gui.WidgetLoader; 
    2222 
    23 import mde.gui.WidgetManager; 
     23import mde.gui.widget.WidgetManager; 
    2424import mde.gui.WidgetDataSet; 
    2525import mde.gui.exception; 
  • mde/gui/widget/AChildWidget.d

    r172 r174  
    4040 * classes provides useful basic implementations for widgets. 
    4141 *****************************************************************************/ 
    42 abstract class AChildWidget : IChildWidget 
     42abstract class AChildWidget : IChildWidget, IWidget 
    4343{ 
    4444//BEGIN Load and save 
     
    5656     
    5757    // Don't save any data: fine for many widgets. 
    58     override bool saveChanges () { 
     58    public override bool saveChanges () { 
    5959        return false; 
    6060    } 
     
    134134     
    135135    /* Dummy functions; many widgets don't need to respond to dragging. */ 
    136     void dragMotion (wdabs cx, wdabs cy, IChildWidget) {} 
    137     bool dragRelease (wdabs cx, wdabs cy, IChildWidget) { 
     136    override void dragMotion (wdabs cx, wdabs cy, IChildWidget) {} 
     137    override bool dragRelease (wdabs cx, wdabs cy, IChildWidget) { 
    138138    return false;   // any widgets not handling events should let them be passed as normal to clickEvent 
    139139    } 
    140140     
    141141    /* Dummy functions: suitable for widgets with no text input. */ 
    142     override void keyEvent (ushort, char[]) {} 
    143     override void keyFocusLost () {} 
     142    public override void keyEvent (ushort, char[]) {} 
     143    public override void keyFocusLost () {} 
    144144     
    145145    // Called when mouse moves over or off this 
    146146    override void underMouse (bool state) {} 
    147147     
    148     override bool dropContent (IContent content) { 
     148    public override bool dropContent (IContent content) { 
    149149    return parent.dropContent (content); 
    150150    } 
    151151     
    152152    // Only useful to widgets creating popups. 
    153     override void popupClose () {} 
    154     override bool popupParentClick () { 
     153    protected override void popupClose () {} 
     154    protected override bool popupParentClick () { 
    155155        return true; 
    156156    } 
     
    158158     
    159159    /* Basic draw method: draw the background (all widgets should do this). */ 
    160     override void draw () { 
     160    public override void draw () { 
     161    //TODO: possibly enforce all widgets to implement this so their invariant runs: 
     162    //assert (false, "all widgets should override draw"); 
    161163        mgr.renderer.drawWidgetBack (x,y, w,h); 
    162164    } 
    163165     
    164166    // Debug function to print size info. Intended to be correct not optimal. 
    165     debug override void logWidgetSize () { 
     167    debug public override void logWidgetSize () { 
    166168        logger.trace ("size: {,4},{,4}; minimal: {,4},{,4}; sizable: {},{} - {,-50} {}", this.width, this.height, this.minWidth, this.minHeight, cast(int)this.isWSizable, cast(int)this.isHSizable, this, id); 
    167169    } 
     
    212214    } 
    213215     
     216    invariant { 
     217    assert (w >= mw); 
     218    assert (h >= mh); 
     219    } 
     220     
    214221    IWidgetManager mgr;     // the enclosing window 
    215222    IParentWidget parent;   // the parent widget 
     
    310317     
    311318    /// The action triggered when the button is clicked... 
    312     void activated (); 
     319    abstract void activated (); 
    313320     
    314321protected: 
  • mde/gui/widget/AParentWidget.d

    r173 r174  
    5959    } 
    6060     
    61     override bool saveChanges () { 
     61    public override bool saveChanges () { 
    6262        bool c = false; 
    6363        foreach (w; subWidgets) 
     
    7575     
    7676    // Parents taking a content should override, only throwing if both the 
    77     // widget id and the content are the same (as its it and content). 
    78     override void recursionCheck (widgetID wID, IContent c) { 
     77    // widget id and the content are the same (as its id and content). 
     78    public override void recursionCheck (widgetID wID, IContent c) { 
    7979        debug assert (id !is null && parent !is null, "recursionCheck called before parent and id set"); 
    80         if (wID == id) 
     80        if (wID is id) 
    8181            throw new WidgetRecursionException (wID); 
    8282        parent.recursionCheck (wID, c); 
    8383    } 
    8484     
    85     IPopupParentWidget getParentIPPW () { 
     85    public override IPopupParentWidget getParentIPPW () { 
    8686        return parent.getParentIPPW; 
    8787    } 
     
    8989    // Most parent widgets need to implement these, although not all 
    9090    // They must at a minimum make sure widget's size is at least nmw by nmh. 
    91     override void minWChange (IChildWidget widget, wdim nmw) { 
     91    public  override void minWChange (IChildWidget widget, wdim nmw) { 
    9292    if (widget.width < nmw) 
    9393        widget.setWidth (nmw, -1); 
    9494    } 
    95     override void minHChange (IChildWidget widget, wdim nmh) { 
     95    public override void minHChange (IChildWidget widget, wdim nmh) { 
    9696    if (widget.height < nmh) 
    9797        widget.setHeight (nmh, -1); 
    9898    } 
    9999     
    100     debug override void logWidgetSize () { 
     100    debug public override void logWidgetSize () { 
    101101        super.logWidgetSize; 
    102102        foreach (widg; subWidgets) 
     
    192192    } 
    193193     
    194     debug invariant ()
     194    debug invariant
    195195        // True as long as removedIPPW gets called: 
    196         if (!parentIPPW.isChild (this)) { 
     196        /+TODO: 
     197    if (!parentIPPW.isChild (this)) { 
    197198            assert (childIPPW is null, "APPW: childIPPW"); 
    198199            assert (mAIPPW is false, "APPW: mAIPPW"); 
    199         } 
     200        }+/ 
     201    } 
     202     
     203    debug override bool isChild (IPopupParentWidget ippw) { 
     204        return ippw is childIPPW; 
    200205    } 
    201206     
     
    207212        mgr.positionPopup (this, popup); 
    208213    }+/ 
    209      
    210     debug override bool isChild (IPopupParentWidget ippw) { 
    211         return ippw is childIPPW; 
    212     } 
    213214     
    214215    IPopupParentWidget parentIPPW; 
  • mde/gui/widget/Floating.d

    r173 r174  
    227227    return 0; 
    228228    } 
    229     void dragMotion (wdabs cx, wdabs cy, IChildWidget) { 
     229    override void dragMotion (wdabs cx, wdabs cy, IChildWidget) { 
    230230    if (resizeType == RESIZE.NONE) { 
    231231        with (sWData[active]) { 
     
    289289    } 
    290290    } 
    291     bool dragRelease (wdabs, wdabs, IChildWidget) { 
     291    override bool dragRelease (wdabs, wdabs, IChildWidget) { 
    292292    return true;    // we've handled the up-click 
    293293    } 
  • mde/gui/widget/Ifaces.d

    r172 r174  
    2727 * It's recommended that widgets inherit one of the A*Widget classes rather 
    2828 * than impement I*Widget directly. 
     29 *  
     30 * Protection: please keep it as tight as possible. List it explicitly for 
     31 * every function in this module; then the compiler checks overridden functions 
     32 * have the correct protection attribute. 
     33 * BUG: currently it's a bit of a mess, because of a compiler bug. 
    2934 *****************************************************************************/ 
    3035module mde.gui.widget.Ifaces; 
     
    5055     * Actually the return value is ignored; I think widgets still return it 
    5156     * correctly though. */ 
    52     bool saveChanges (); 
     57    public bool saveChanges (); 
     58     
     59    /** Draw, using the stored values of x and y. 
     60     * 
     61     * Maybe later enforce clipping of all sub-widget drawing, particularly for cases where only 
     62     * part of the widget is visible: scroll bars or a hidden window. */ 
     63    public void draw (); 
    5364     
    5465    /** Called on a widget when something is dragged onto it. 
     
    5667     * Generally, content editing widgets should implement this as: 
    5768     * --- 
    58     override bool dropContent (IContent content) { 
     69    public override bool dropContent (IContent content) { 
    5970    if (content_.setContent (content)) 
    6071        return true; 
     
    6980     * Returns: true if the content was received (false if it reaches the 
    7081     *  WidgetManager and is still not used). */ 
    71     bool dropContent (IContent content); 
     82    public bool dropContent (IContent content); 
    7283} 
    7384 
     
    8495interface IParentWidget : IWidget 
    8596{ 
    86     /** Checks for recursion of unsafe widgets to prevent infinite recursion. */ 
     97    /** Checks for recursion of unsafe widgets to prevent infinite recursion. 
     98     * 
     99     * Only called by makeWidget() when creating child widgets and recursively 
     100     * from the same method in a child widget. */ 
    87101    void recursionCheck (widgetID, IContent); 
    88102     
     
    94108     *  
    95109     * Parents $(I must) increase their child's size if the child is too small. 
    96      * Parents $(I must not) decrease their own size, even if they are not 
    97      * sizable; they may only decrease their childrens' sizes if it does not 
    98      * affect their own (i.e. WidgetManager and FloatingAreaWidget). 
     110     * Parents $(I must not) change their own size, even if they are not 
     111     * sizable; they may only change their childrens' sizes if it does not 
     112     * affect their own (i.e. WidgetManager and floating / popup widgets). 
     113     *  
     114     * (Hence most parents need to call this function on their parents to change 
     115     * size. In this case they also must propegate setWidth/setHeight calls on 
     116     * the child originally calling min[WH]Change.) 
    99117     *  
    100118     * Child widgets may depend on setPosition being called afterwards. 
     
    115133     * Note: ANY_SUBWIDGETS can cause problems like enlarging a menu bar containing a resizable 
    116134     * blank instead of the main part of a window. */ 
    117     enum SIZABILITY_ENUM { 
     135    protected enum SIZABILITY_ENUM { 
    118136        NEVER       = 0,    /// Parents are never resizable 
    119137        ALL_SUBWIDGETS  = 3,    /// Parents are only resizable if all sub-widgets are 
     
    123141        SUBWIDGETS  = 2,    /// Flag set by ALL_SUBWIDGETS and ANY_SUBWIDGETS 
    124142    } 
    125     static const SIZABILITY = SIZABILITY_ENUM.ANY_SUBWIDGETS; /// ditto 
     143    protected static const SIZABILITY = SIZABILITY_ENUM.ANY_SUBWIDGETS;   /// ditto 
    126144} 
    127145 
     
    333351 *****************************************************************************/ 
    334352//NOTE: add another this() without the data for default initialization, for the GUI editor? 
    335 interface IChildWidget : IWidget 
     353abstract class IChildWidget : IWidget 
    336354{ 
    337355//BEGIN Load and save 
     
    352370     *  The method must return true on initial setup and if its dimensions 
    353371     *  (may) have changed. */ 
    354     bool setup (uint n, uint flags); 
     372    bool setup (uint n, uint flags) {return 0;} 
    355373     
    356374    /+ Use when widget editing is available? Requires widgets to know their parents. 
     
    370388     * Parents normally take their resizability from sub-widgets; see SIZABILITY for how they do 
    371389     * this. */ 
    372     bool isWSizable (); 
    373     bool isHSizable (); /// ditto 
     390    bool isWSizable () {return 0;} 
     391    bool isHSizable () {return 0;} /// ditto 
    374392     
    375393    /** The minimal size the widget could be shrunk to (or its fixed size). 
    376394     * 
    377395     * Takes into account child-widgets and any other contents. */ 
    378     wdim minWidth (); 
    379     wdim minHeight ();    /// ditto 
     396    wdim minWidth () {return 0;} 
     397    wdim minHeight() {return 0;}  /// ditto 
    380398     
    381399    /** Get the current size of the widget. */ 
    382     wdim width (); 
    383     wdim height();      /// ditto 
     400    wdim width () {return 0;} 
     401    wdim height() {return 0;}      /// ditto 
    384402     
    385403    /** (Smallest) coordinates of widget. */ 
    386     wdabs xPos (); 
    387     wdabs yPos ();    /// ditto 
     404    wdabs xPos () {return 0;} 
     405    wdabs yPos () {return 0;} /// ditto 
    388406     
    389407    /** Used to adjust the size. 
     
    401419     * 
    402420     * setPosition must be called after calling either setWidth or setHeight. */ 
    403     void setWidth (wdim nw, int dir); 
    404     void setHeight (wdim nh, int dir);    /// ditto 
     421    void setWidth (wdim nw, int dir) {} 
     422    void setHeight (wdim nh, int dir) {}  /// ditto 
    405423     
    406424    /** Set the current position (called after setup and to move widget). */ 
    407     void setPosition (wdim x, wdim y); 
     425    void setPosition (wdim x, wdim y) {} 
    408426//END Size and position 
    409427     
    410428//BEGIN Content 
    411429    /** Return the widget's content, or null. */ 
    412     IContent content (); 
     430    IContent content () {return null;} 
    413431     
    414432    /** Set the widget's content, if the widget takes content and changing it 
    415433     * at this stage is feasible. (Also pass to sub-widgets, where the 
    416434     * constructor normally does so.) */ 
    417     void setContent (IContent); 
     435    void setContent (IContent) {} 
    418436//END Content 
    419437     
     
    428446     * 
    429447     * Note: use global coordinates (cx,cy) not coordinates relative to the widget. */ 
    430     IChildWidget getWidget (wdabs cx, wdabs cy); 
     448    IChildWidget getWidget (wdabs cx, wdabs cy) {return null;} 
    431449     
    432450    /** Return true if (cx,cy) is on self's box (doesn't matter if actually on a subwidget). */ 
    433     bool onSelf (wdabs cx, wdabs cy); 
     451    bool onSelf (wdabs cx, wdabs cy) {return 0;} 
    434452     
    435453    /** Receive a mouse click event at cx,cy from button b (1-5 correspond to L,M,B, wheel up,down) 
     
    444462     * $(TR $(TD 4) $(TD Display the widget's content while dragging (requires 2))) 
    445463     * ) */ 
    446     int clickEvent (wdabs cx, wdabs cy, ubyte b, bool state); 
     464    int clickEvent (wdabs cx, wdabs cy, ubyte b, bool state) {return 0;} 
    447465     
    448466    /** Called when dragging motion occurs, originating from this widget. 
     
    451469     * 
    452470     * Only called if requested by clickEvent. */ 
    453     void dragMotion (wdabs cx, wdabs cy, IChildWidget target); 
     471    void dragMotion (wdabs cx, wdabs cy, IChildWidget target) {} 
    454472     
    455473    /** Called at the end of a drag which originated from this widget. 
     
    461479     * 
    462480     * Only called if requested by clickEvent. */ 
    463     bool dragRelease (wdabs cx, wdabs cy, IChildWidget target); 
     481    bool dragRelease (wdabs cx, wdabs cy, IChildWidget target) {return 0;} 
    464482     
    465483    /** Receives keyboard events when requested. 
     
    468486     *  sym SDLKey key sym, useful for keys with no character code such as arrow keys 
    469487     *  letter  The character input, in UTF-8 */ 
    470     void keyEvent (ushort sym, char[] letter); 
     488    public void keyEvent (ushort sym, char[] letter); 
    471489     
    472490    /** Called when keyboard input focus is lost. */ 
    473     void keyFocusLost (); 
     491    public void keyFocusLost (); 
    474492     
    475493    /** Called on all widgets when the mouse moves over it (state == true) and 
    476494     * when it leaves (state == false). */ 
    477     void underMouse (bool state); 
     495    void underMouse (bool state) {} 
    478496     
    479497    /** When a pop-up is closed the manager calls requestRedraw and this function on its parent. */ 
    480     void popupClose (); 
     498    protected void popupClose (); 
    481499    /** When a click is on the parent of a popup, this function is called instead of the usual 
    482500     * clickEvent. 
     
    486504     * 
    487505     * Note: this means the parent can't receive text input without code changes. */ 
    488     bool popupParentClick (); 
     506    protected bool popupParentClick (); 
    489507     
    490508//END Events 
    491509     
    492     /** Draw, using the stored values of x and y. 
    493      * 
    494      * Maybe later enforce clipping of all sub-widget drawing, particularly for cases where only 
    495      * part of the widget is visible: scroll bars or a hidden window. */ 
    496     void draw (); 
    497      
    498510    /// Logs the current and minimal size of every widget. 
    499     debug void logWidgetSize (); 
     511    debug public void logWidgetSize (); 
    500512} 
  • mde/gui/widget/ParentContent.d

    r173 r174  
    469469protected: 
    470470    invariant { 
    471     // this() calls makeWidget() which calls recursionCheck(); invariant is called at this point before this() finishes 
    472     if (subWidgets.length) { 
    473         assert (subWidgets.length == 1); 
    474         assert (mw == subWidgets[0].minWidth + border.x1 + border.x2); 
    475         assert (mh == subWidgets[0].minHeight + border.y1 + border.y2); 
    476     } 
     471    /+TODO 
     472    assert (subWidgets.length == 1); 
     473    assert (mw == subWidgets[0].minWidth + border.x1 + border.x2); 
     474    assert (mh == subWidgets[0].minHeight + border.y1 + border.y2); 
     475    +/ 
    477476    } 
    478477     
  • mde/gui/widget/TextWidget.d

    r172 r174  
    7171     * 
    7272     * Widget uses the initialisation data: 
    73      * [widgetID, contentID, colour] 
     73     * ints: [widgetID, colour] 
     74     * strings: [text] 
    7475     * where contentID is an ID for the string ID of the contained content 
    7576     * and colour is an 8-bit-per-channel RGB colour of the form 0xRRGGBB. */ 
     
    187188    } 
    188189     
    189     override void keyEvent (ushort s, char[] i) { 
     190    public override void keyEvent (ushort s, char[] i) { 
    190191    adapter.text = content_.keyStroke (s, i); 
    191192    adapter.index = content_.editIndex; 
     
    198199    mgr.requestRedraw; 
    199200    } 
    200     override void keyFocusLost () { 
     201    public override void keyFocusLost () { 
    201202    content_.endEdit; 
    202203    adapter.text = content_.toString (0); 
  • mde/gui/widget/contentFunctions.d

    r170 r174  
    2828import mde.content.AStringContent; 
    2929import mde.content.miscContent; 
     30 
    3031 
    3132/****************************************************************************** 
  • mde/gui/widget/layout.d

    r172 r174  
    130130    } 
    131131     
    132     override bool dropContent (IContent content) { 
     132    public override bool dropContent (IContent content) { 
    133133    if (cList.set (content)) 
    134134        return true; 
     
    364364    } 
    365365     
    366 package: 
     366private: 
    367367    /* Calculations which need to be run whenever a new sub-widget structure is set 
    368368     * or other changes affecting widget sizes. Most of these need to happen regardless of whether 
     
    440440    } 
    441441     
    442 private: 
    443442    override void setColWidth (size_t i, wdim w, int dir) { 
    444443        for (size_t j = 0; j < rows; ++j) { 
     
    910909    alias IParentWidget.SIZABILITY_ENUM SIZABILITY_ENUM; 
    911910     
    912     debug invariant() 
     911    invariant 
    913912    { 
    914913        if (setupWidths) {