Skip to content

Commit 6bc02ca

Browse files
committed
Implements #224
1 parent 5aeadd9 commit 6bc02ca

18 files changed

+56
-56
lines changed

lib/include/elements/element/button.hpp

+12-12
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ namespace cycfi { namespace elements
3232
{}
3333

3434
bool wants_control() const override;
35-
element* click(context const& ctx, mouse_button btn) override;
35+
bool click(context const& ctx, mouse_button btn) override;
3636
bool cursor(context const& ctx, point p, cursor_tracking status) override;
3737
void drag(context const& ctx, mouse_button btn) override;
3838

@@ -69,7 +69,7 @@ namespace cycfi { namespace elements
6969

7070
bool wants_control() const override;
7171
element* hit_test(context const& ctx, point p) override;
72-
element* click(context const& ctx, mouse_button btn) override;
72+
bool click(context const& ctx, mouse_button btn) override;
7373
void drag(context const& ctx, mouse_button btn) override;
7474

7575
void value(bool new_state) override;
@@ -109,7 +109,7 @@ namespace cycfi { namespace elements
109109
template <typename W1, typename W2>
110110
basic_toggle_button(W1&& off, W2&& on);
111111

112-
element* click(context const& ctx, mouse_button btn) override;
112+
bool click(context const& ctx, mouse_button btn) override;
113113
void drag(context const& ctx, mouse_button btn) override;
114114

115115
private:
@@ -132,12 +132,12 @@ namespace cycfi { namespace elements
132132
{}
133133

134134
template <typename Base>
135-
inline element* basic_toggle_button<Base>::click(context const& ctx, mouse_button btn)
135+
inline bool basic_toggle_button<Base>::click(context const& ctx, mouse_button btn)
136136
{
137137
if (!ctx.bounds.includes(btn.pos))
138138
{
139139
ctx.view.refresh(ctx);
140-
return 0;
140+
return false;
141141
}
142142

143143
if (btn.down)
@@ -154,7 +154,7 @@ namespace cycfi { namespace elements
154154
if (this->on_click)
155155
this->on_click(this->value());
156156
}
157-
return this;
157+
return true;
158158
}
159159

160160
template <typename Base>
@@ -177,7 +177,7 @@ namespace cycfi { namespace elements
177177
template <typename W1, typename W2>
178178
basic_latching_button(W1&& off, W2&& on);
179179

180-
element* click(context const& ctx, mouse_button btn) override;
180+
bool click(context const& ctx, mouse_button btn) override;
181181
void drag(context const& ctx, mouse_button btn) override;
182182
};
183183

@@ -194,10 +194,10 @@ namespace cycfi { namespace elements
194194
{}
195195

196196
template <typename Base>
197-
inline element* basic_latching_button<Base>::click(context const& ctx, mouse_button btn)
197+
inline bool basic_latching_button<Base>::click(context const& ctx, mouse_button btn)
198198
{
199199
if (this->value() || !ctx.bounds.includes(btn.pos))
200-
return nullptr;
200+
return false;
201201
if (btn.down)
202202
{
203203
Base::click(ctx, btn);
@@ -206,7 +206,7 @@ namespace cycfi { namespace elements
206206
}
207207
else if (this->on_click)
208208
this->on_click(true);
209-
return this;
209+
return true;
210210
}
211211

212212
template <typename Base>
@@ -232,7 +232,7 @@ namespace cycfi { namespace elements
232232

233233
void select(bool state) override;
234234
bool is_selected() const override;
235-
element* click(context const& ctx, mouse_button btn) override;
235+
bool click(context const& ctx, mouse_button btn) override;
236236
sender<bool>& get_sender() override { return *this; }
237237
};
238238

@@ -250,7 +250,7 @@ namespace cycfi { namespace elements
250250
}
251251

252252
template <typename Base>
253-
element* basic_choice<Base>::click(context const& ctx, mouse_button btn)
253+
bool basic_choice<Base>::click(context const& ctx, mouse_button btn)
254254
{
255255
bool was_selected = is_selected();
256256
auto r = basic_latching_button<Base>::click(ctx, btn);

lib/include/elements/element/composite.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ namespace cycfi { namespace elements
5050
// Control
5151

5252
bool wants_control() const override;
53-
element* click(context const& ctx, mouse_button btn) override;
53+
bool click(context const& ctx, mouse_button btn) override;
5454
void drag(context const& ctx, mouse_button btn) override;
5555
bool key(context const& ctx, key_info k) override;
5656
bool text(context const& ctx, text_info info) override;

lib/include/elements/element/element.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ namespace cycfi { namespace elements
4545
// Control
4646

4747
virtual bool wants_control() const;
48-
virtual element* click(context const& ctx, mouse_button btn);
48+
virtual bool click(context const& ctx, mouse_button btn);
4949
virtual void drag(context const& ctx, mouse_button btn);
5050
virtual bool key(context const& ctx, key_info k);
5151
virtual bool text(context const& ctx, text_info info);

lib/include/elements/element/indirect.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ namespace cycfi { namespace elements
5656
// Control
5757

5858
bool wants_control() const override;
59-
element* click(context const& ctx, mouse_button btn) override;
59+
bool click(context const& ctx, mouse_button btn) override;
6060
void drag(context const& ctx, mouse_button btn) override;
6161
bool key(context const& ctx, key_info k) override;
6262
bool text(context const& ctx, text_info info) override;
@@ -184,7 +184,7 @@ namespace cycfi { namespace elements
184184
}
185185

186186
template <typename Base>
187-
inline element*
187+
inline bool
188188
indirect<Base>::click(context const& ctx, mouse_button btn)
189189
{
190190
return this->get().click(ctx, btn);

lib/include/elements/element/menu.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ namespace cycfi { namespace elements
3838
W1&& off, W2&& on
3939
, menu_position pos = menu_position::bottom_right);
4040

41-
element* click(context const& ctx, mouse_button btn) override;
41+
bool click(context const& ctx, mouse_button btn) override;
4242
void drag(context const& ctx, mouse_button btn) override;
4343
bool key(context const& ctx, key_info k) override;
4444
bool wants_focus() const override;
@@ -106,7 +106,7 @@ namespace cycfi { namespace elements
106106

107107
void draw(context const& ctx) override;
108108
element* hit_test(context const& ctx, point p) override;
109-
element* click(context const& ctx, mouse_button btn) override;
109+
bool click(context const& ctx, mouse_button btn) override;
110110
bool key(context const& ctx, key_info k) override;
111111
bool cursor(context const& ctx, point p, cursor_tracking status) override;
112112
bool wants_control() const override;

lib/include/elements/element/popup.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ namespace cycfi { namespace elements
5454
using click_function = std::function<void()>;
5555

5656
element* hit_test(context const& ctx, point p) override;
57-
element* click(context const& ctx, mouse_button btn) override;
57+
bool click(context const& ctx, mouse_button btn) override;
5858
click_function on_click = [](){};
5959
};
6060

lib/include/elements/element/port.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ namespace cycfi { namespace elements
146146
void draw(context const& ctx) override;
147147

148148
bool wants_control() const override;
149-
element* click(context const& ctx, mouse_button btn) override;
149+
bool click(context const& ctx, mouse_button btn) override;
150150
void drag(context const& ctx, mouse_button btn) override;
151151
bool scroll(context const& ctx, point dir, point p) override;
152152
bool scroll_into_view(context const& ctx, rect r) override;

lib/include/elements/element/proxy.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ namespace cycfi { namespace elements
3939
// Control
4040

4141
bool wants_control() const override;
42-
element* click(context const& ctx, mouse_button btn) override;
42+
bool click(context const& ctx, mouse_button btn) override;
4343
void drag(context const& ctx, mouse_button btn) override;
4444
bool key(context const& ctx, key_info k) override;
4545
bool text(context const& ctx, text_info info) override;

lib/include/elements/element/text.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ namespace cycfi { namespace elements
9393
basic_text_box(basic_text_box&& rhs) = default;
9494

9595
void draw(context const& ctx) override;
96-
element* click(context const& ctx, mouse_button btn) override;
96+
bool click(context const& ctx, mouse_button btn) override;
9797
void drag(context const& ctx, mouse_button btn) override;
9898
bool cursor(context const& ctx, point p, cursor_tracking status) override;
9999
bool key(context const& ctx, key_info k) override;
@@ -183,7 +183,7 @@ namespace cycfi { namespace elements
183183
bool key(context const& ctx, key_info k) override;
184184
void delete_() override;
185185

186-
element* click(context const& ctx, mouse_button btn) override;
186+
bool click(context const& ctx, mouse_button btn) override;
187187
void begin_focus() override;
188188
void end_focus() override;
189189

lib/include/elements/element/tracker.hpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ namespace cycfi { namespace elements
4848
tracker& operator=(tracker&& rhs) = default;
4949

5050
bool wants_control() const override;
51-
element* click(context const& ctx, mouse_button btn) override;
51+
bool click(context const& ctx, mouse_button btn) override;
5252
void drag(context const& ctx, mouse_button btn) override;
5353

5454
protected:
@@ -84,7 +84,7 @@ namespace cycfi { namespace elements
8484
}
8585

8686
template <typename Base>
87-
inline element* tracker<Base>::click(context const& ctx, mouse_button btn)
87+
inline bool tracker<Base>::click(context const& ctx, mouse_button btn)
8888
{
8989
if (btn.down)
9090
{
@@ -98,7 +98,7 @@ namespace cycfi { namespace elements
9898
end_tracking(ctx, *state);
9999
state.reset();
100100
}
101-
return this;
101+
return true;
102102
}
103103

104104
template <typename Base>

lib/src/element/button.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ namespace cycfi { namespace elements
1010
////////////////////////////////////////////////////////////////////////////
1111
// Basic Button
1212
////////////////////////////////////////////////////////////////////////////
13-
element* basic_button::click(context const& ctx, mouse_button btn)
13+
bool basic_button::click(context const& ctx, mouse_button btn)
1414
{
1515
if (!ctx.bounds.includes(btn.pos))
16-
return nullptr;
16+
return false;
1717

1818
if (btn.down)
1919
{
@@ -28,7 +28,7 @@ namespace cycfi { namespace elements
2828

2929
if (state(btn.down && ctx.bounds.includes(btn.pos)))
3030
ctx.view.refresh(ctx);
31-
return this;
31+
return true;
3232
}
3333

3434
bool basic_button::cursor(context const& ctx, point /* p */, cursor_tracking status)
@@ -97,10 +97,10 @@ namespace cycfi { namespace elements
9797
return 0;
9898
}
9999

100-
element* layered_button::click(context const& ctx, mouse_button btn)
100+
bool layered_button::click(context const& ctx, mouse_button btn)
101101
{
102102
if (!ctx.bounds.includes(btn.pos))
103-
return 0;
103+
return false;
104104

105105
if (btn.down)
106106
{
@@ -115,7 +115,7 @@ namespace cycfi { namespace elements
115115

116116
if (state(btn.down && ctx.bounds.includes(btn.pos)))
117117
ctx.view.refresh(ctx);
118-
return this;
118+
return true;
119119
}
120120

121121
void layered_button::drag(context const& ctx, mouse_button btn)

lib/src/element/composite.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ namespace cycfi { namespace elements
5454
}
5555
}
5656

57-
element* composite_base::click(context const& ctx, mouse_button btn)
57+
bool composite_base::click(context const& ctx, mouse_button btn)
5858
{
5959
if (!empty())
6060
{
@@ -71,7 +71,7 @@ namespace cycfi { namespace elements
7171
{
7272
if (btn.down)
7373
_click_tracking = info.index;
74-
return info.element.get();
74+
return true;
7575
}
7676
}
7777
}
@@ -81,11 +81,11 @@ namespace cycfi { namespace elements
8181
auto& e = at(_click_tracking);
8282
context ectx{ ctx, &e, bounds };
8383
if (e.click(ectx, btn))
84-
return &e;
84+
return true;
8585
}
8686
}
8787
_click_tracking = -1;
88-
return 0;
88+
return false;
8989
}
9090

9191
void composite_base::drag(context const& ctx, mouse_button btn)

lib/src/element/element.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ namespace cycfi { namespace elements
4141
ctx.view.refresh(ctx, outward);
4242
}
4343

44-
element* element::click(context const& /* ctx */, mouse_button /* btn */)
44+
bool element::click(context const& /* ctx */, mouse_button /* btn */)
4545
{
46-
return nullptr;
46+
return false;
4747
}
4848

4949
void element::drag(context const& /* ctx */, mouse_button /* btn */)

lib/src/element/menu.cpp

+7-7
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ namespace cycfi { namespace elements
6060
_popup->layout(new_ctx);
6161
}
6262

63-
element* basic_menu::click(context const& ctx, mouse_button btn)
63+
bool basic_menu::click(context const& ctx, mouse_button btn)
6464
{
6565
if (btn.down)
6666
{
@@ -97,7 +97,7 @@ namespace cycfi { namespace elements
9797
_popup->click(new_ctx, btn);
9898
}
9999
}
100-
return this;
100+
return true;
101101
}
102102

103103
void basic_menu::drag(context const& ctx, mouse_button btn)
@@ -234,19 +234,19 @@ namespace cycfi { namespace elements
234234
return nullptr;
235235
}
236236

237-
element* basic_menu_item_element::click(context const& ctx, mouse_button btn)
237+
bool basic_menu_item_element::click(context const& ctx, mouse_button btn)
238238
{
239-
element* result = nullptr;
239+
bool result = false;
240240
if (is_enabled() && ctx.bounds.includes(btn.pos))
241241
{
242242
if (on_click)
243243
on_click();
244244
select(false);
245245
ctx.notify(ctx, "click", this);
246-
result = this;
246+
result = true;
247247
}
248-
element* proxy_result = proxy_base::click(ctx, btn);
249-
return result? result : proxy_result;
248+
auto proxy_result = proxy_base::click(ctx, btn);
249+
return result || proxy_result;
250250
}
251251

252252
bool basic_menu_item_element::key(context const& ctx, key_info k)

lib/src/element/popup.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ namespace cycfi { namespace elements
4646
return element::hit_test(ctx, p);
4747
}
4848

49-
element* basic_popup_menu_element::click(context const& ctx, mouse_button btn)
49+
bool basic_popup_menu_element::click(context const& ctx, mouse_button btn)
5050
{
5151
auto new_ctx = ctx.sub_context();
5252
bool hit = false;
@@ -58,7 +58,7 @@ namespace cycfi { namespace elements
5858
);
5959

6060
auto r = floating_element::click(new_ctx, btn);
61-
if (btn.down && ((r == nullptr) || hit))
61+
if (btn.down && (!r || hit))
6262
on_click();
6363
return r;
6464
}

lib/src/element/port.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -302,15 +302,15 @@ namespace cycfi { namespace elements
302302
return redraw;
303303
}
304304

305-
element* scroller_base::click(context const& ctx, mouse_button btn)
305+
bool scroller_base::click(context const& ctx, mouse_button btn)
306306
{
307307
if (has_scrollbars())
308308
{
309309
if (btn.down)
310310
{
311311
_tracking = start;
312312
if (reposition(ctx, btn.pos))
313-
return ctx.element;
313+
return true;
314314
}
315315
_tracking = none;
316316
refresh(ctx);

0 commit comments

Comments
 (0)