D Paste by Chris Miller
Description: DFL Control input events propagate to parent - D template
Hide line numbers

Create new paste
Post a reply
View replies

Paste:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
97  
98  
99  
100  
101  
102  
103  
104  
105  
106  
107  
108  
109  
110  
111  
112  
113  
114  
115  
116  
117  
118  
119  
120  
121  
122  
123  
124  
125  

import dfl.all;


class ControlForwardInputEvents(ControlType : dfl.control.Control): ControlType
{
    protected override void onClick(EventArgs ea)
    {
        super.onClick(ea);
        if(this.parent)
            this.parent.click(this, ea);
    }
    
    protected override void onDoubleClick(EventArgs ea)
    {
        super.onDoubleClick(ea);
        if(this.parent)
            this.parent.doubleClick(this, ea);
    }
    
    protected override void onKeyDown(KeyEventArgs ea)
    {
        super.onKeyDown(ea);
        if(this.parent)
            this.parent.keyDown(this, ea);
    }
    
    protected override void onKeyPress(KeyPressEventArgs ea)
    {
        super.onKeyPress(ea);
        if(this.parent)
            this.parent.keyPress(this, ea);
    }
    
    protected override void onKeyUp(KeyEventArgs ea)
    {
        super.onKeyUp(ea);
        if(this.parent)
            this.parent.keyUp(this, ea);
    }
    
    protected override void onMouseDown(MouseEventArgs ea)
    {
        super.onMouseDown(ea);
        if(this.parent)
            this.parent.mouseDown(this, ea);
    }
    
    protected override void onMouseEnter(MouseEventArgs ea)
    {
        super.onMouseEnter(ea);
        if(this.parent)
            this.parent.mouseEnter(this, ea);
    }
    
    protected override void onMouseHover(MouseEventArgs ea)
    {
        super.onMouseHover(ea);
        if(this.parent)
            this.parent.mouseHover(this, ea);
    }
    
    protected override void onMouseLeave(MouseEventArgs ea)
    {
        super.onMouseLeave(ea);
        if(this.parent)
            this.parent.mouseLeave(this, ea);
    }
    
    protected override void onMouseMove(MouseEventArgs ea)
    {
        super.onMouseMove(ea);
        if(this.parent)
            this.parent.mouseMove(this, ea);
    }
    
    protected override void onMouseUp(MouseEventArgs ea)
    {
        super.onMouseUp(ea);
        if(this.parent)
            this.parent.mouseUp(this, ea);
    }
    
    protected override void onMouseWheel(MouseEventArgs ea)
    {
        super.onMouseWheel(ea);
        if(this.parent)
            this.parent.mouseWheel(this, ea);
    }
    
}


debug(test)
{
    class Foo : ContainerControl { 
        PictureBox pbox; 

        this() { 
            pbox = new ControlForwardInputEvents!(PictureBox); 
            this.size = Size(800, 600); 
            pbox.setBounds(0, 0, 800, 600); 
            pbox.parent = this; 
        } 
    } 

    class MyForm : Form { 
        void fooEvent(Control c, EventArgs ea) { 
            msgBox("You double clicked."); 
        } 

        Foo foo; 

        this() { 
            foo = new Foo; 
            foo.parent = this; 
            foo.doubleClick ~= &fooEvent; 
        } 
    } 

    void main() { 
        Application.run(new MyForm); 
    }
}

Replies:
Reply by Chris Miller

    (some replies deleted)