Changeset 51 for trunk/luigi/themes

Show
Ignore:
Timestamp:
04/28/07 17:09:55 (2 years ago)
Author:
baxissimo
Message:

Various small fixes and improvements.
event.d: added is_left_press et al properties (I found myselft getting confused as to whether 'left_down' mean it was a left down event or just that left was generally down. Maybe that should become left_is_down...

gui.d: made mixins refer to fully qualified names. Fixes problems with mixing-in in a different context.

theme stuff: Fixed dxut to not crash when presented with an unknown subclass.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/luigi/themes/dxut.d

    r47 r51  
    105105} 
    106106 
     107alias DXUTTheme Theme; 
     108 
    107109class DXUTTheme : ThemeBase 
    108110{ 
     
    168170        } 
    169171        else { 
     172            // This means we haven't made it yet 
    170173            ThemeData td2 = new ThemeData; 
    171174            w.theme_instance_data = td2; 
    172             td2.elements = m_elements[w.classinfo].dup; 
     175            auto pElements = w.classinfo in m_elements; 
     176            if (pElements!=null) { 
     177                td2.elements = (*pElements).dup; 
     178            } 
     179            else { 
     180                // this is an unknown class  
     181                // -- find best match up class hierarchy 
     182                auto cinfo = w.classinfo; 
     183                while (cinfo != Widget.classinfo) { 
     184                    pElements = cinfo in m_elements; 
     185                    if (pElements) { 
     186                        td2.elements = (*pElements).dup; 
     187                        break; 
     188                    } 
     189                    cinfo = cinfo.base; 
     190                } 
     191                if (cinfo == Widget.classinfo) { 
     192                    // didn't find it. w is not a subclass of anything 
     193                    // we know how to draw. 
     194                    Element[] empty; 
     195                    m_elements[w.classinfo] = empty; 
     196                } 
     197            } 
    173198            return td2; 
    174199        } 
     
    935960    { 
    936961        auto w = cast(Slider)widget; assert(w); 
    937         if (ev.is_left && ev.is_press) { w.grab_mouse(); } 
     962        if (ev.is_left && ev.is_press) {  
     963            w.grab_mouse();  
     964        } 
    938965        else if (ev.is_left && ev.is_release) { w.release_mouse(); } 
    939966        double v = slider_map_mouse_to_value(w, ev.p); 
    940967        w.m_saveValue = w.value; 
    941968        w.value = v; 
     969        ev.alive = false; 
    942970    } 
    943971    void slider_mouse_move(Widget widget, MouseMoveEvent ev)  
     
    950978            double v = slider_map_mouse_to_value(w, ev.p); 
    951979            w.value = v; 
     980            ev.alive = false; 
    952981        } 
    953982    } 
  • trunk/luigi/themes/std.d

    r32 r51  
    3535import luigi.gui; 
    3636 
     37alias StdTheme Theme; 
    3738class StdTheme : ThemeBase 
    3839{