diff options
author | Benji Dial <benji6283@gmail.com> | 2021-03-07 23:19:48 -0500 |
---|---|---|
committer | Benji Dial <benji6283@gmail.com> | 2021-03-07 23:19:48 -0500 |
commit | 1a5ece4f52ef17c7c868e95eb26e98137d5cab6f (patch) | |
tree | 2ab5c639d368d3ec497b464009f0401e71d433f1 /src/user/include/cxx/raleigh/w | |
parent | 348e1876d25320e6480f2795c9388b2bc080c743 (diff) | |
download | portland-os-1a5ece4f52ef17c7c868e95eb26e98137d5cab6f.tar.gz |
keyboard support in raleigh, word wrap and more in entry widget
Diffstat (limited to 'src/user/include/cxx/raleigh/w')
-rw-r--r-- | src/user/include/cxx/raleigh/w/button.h | 5 | ||||
-rw-r--r-- | src/user/include/cxx/raleigh/w/entry.h | 25 | ||||
-rw-r--r-- | src/user/include/cxx/raleigh/w/label.h | 5 | ||||
-rw-r--r-- | src/user/include/cxx/raleigh/w/padding.h | 5 | ||||
-rw-r--r-- | src/user/include/cxx/raleigh/w/vbox.h | 5 |
5 files changed, 37 insertions, 8 deletions
diff --git a/src/user/include/cxx/raleigh/w/button.h b/src/user/include/cxx/raleigh/w/button.h index 1847cf1..03e17ab 100644 --- a/src/user/include/cxx/raleigh/w/button.h +++ b/src/user/include/cxx/raleigh/w/button.h @@ -11,8 +11,11 @@ namespace raleigh { void notify_window_change() override; void paint(_pixel_t *pixbuf, uint32_t pitch) override; - bool try_handle_click(coord window_coords, enum mouse_packet::mouse_button click_type, bool up) override; + void handle_click(coord window_coords, enum mouse_packet::mouse_button click_type, bool up) override; void notify_has_opaque_parent(widget *parent) override; + void handle_key(struct key_packet kp) override; + void on_focus() override; + void on_unfocus() override; private: widget &inner; void (*on_click)(button &); diff --git a/src/user/include/cxx/raleigh/w/entry.h b/src/user/include/cxx/raleigh/w/entry.h index 7ea2973..fcae122 100644 --- a/src/user/include/cxx/raleigh/w/entry.h +++ b/src/user/include/cxx/raleigh/w/entry.h @@ -12,10 +12,13 @@ namespace raleigh { const char *font="fixed-10", _pixel_t bg=RGB(ff, ff, ff), _pixel_t fg=RGB(00, 00, 00), _pixel_t border_color=RGB(00, 00, 00)); - void notify_window_change(); - void paint(_pixel_t *pixbuf, uint32_t pitch); - bool try_handle_click(coord window_coords, enum mouse_packet::mouse_button click_type, bool up); - void notify_has_opaque_parent(widget *parent); + void notify_window_change() override; + void paint(_pixel_t *pixbuf, uint32_t pitch) override; + void handle_click(coord window_coords, enum mouse_packet::mouse_button click_type, bool up) override; + void notify_has_opaque_parent(widget *parent) override; + void handle_key(struct key_packet kp) override; + void on_focus() override; + void on_unfocus() override; private: uint32_t rows; uint32_t cols; @@ -40,12 +43,26 @@ namespace raleigh { uint32_t end_d; bool first_paint; + bool has_focus; + bool had_focus_last_paint; bool text_changed_since_last_paint; uint32_t cur_y_last_paint; uint32_t cur_x_last_paint; uint32_t cur_d_last_paint; + //uses cur_x, not cur_d; sets both + //will not modify cur_y + void ensure_cursor_in_line(); + void paint_text(_pixel_t *pixbuf, uint32_t pitch); + //sets line_indices[from_y + 1 .. end_y + 1], end_y, end_x and end_d + void get_indices(uint32_t from_y, uint32_t from_x, uint32_t from_d); + + //these four return true on success, and do not send a paint request to the window + bool cursor_left(); + bool cursor_right(); + bool cursor_up(); + bool cursor_down(); }; } diff --git a/src/user/include/cxx/raleigh/w/label.h b/src/user/include/cxx/raleigh/w/label.h index d133841..4b1dae2 100644 --- a/src/user/include/cxx/raleigh/w/label.h +++ b/src/user/include/cxx/raleigh/w/label.h @@ -13,8 +13,11 @@ namespace raleigh { void notify_window_change() override; void paint(_pixel_t *pixbuf, uint32_t pitch) override; - bool try_handle_click(coord window_coords, enum mouse_packet::mouse_button click_type, bool up) override __attribute__ ((const)); + void handle_click(coord window_coords, enum mouse_packet::mouse_button click_type, bool up) override; void notify_has_opaque_parent(widget *parent) override; + void handle_key(struct key_packet kp) override; + void on_focus() override; + void on_unfocus() override; private: const char *const value; const struct font_info *const fi; diff --git a/src/user/include/cxx/raleigh/w/padding.h b/src/user/include/cxx/raleigh/w/padding.h index 216b984..792e204 100644 --- a/src/user/include/cxx/raleigh/w/padding.h +++ b/src/user/include/cxx/raleigh/w/padding.h @@ -10,8 +10,11 @@ namespace raleigh { void notify_window_change() override; void paint(_pixel_t *pixbuf, uint32_t pitch) override; - bool try_handle_click(coord window_coords, enum mouse_packet::mouse_button click_type, bool up) override; + void handle_click(coord window_coords, enum mouse_packet::mouse_button click_type, bool up) override; void notify_has_opaque_parent(widget *parent) override; + void handle_key(struct key_packet kp) override; + void on_focus() override; + void on_unfocus() override; private: widget &inner; uint32_t pad_by; diff --git a/src/user/include/cxx/raleigh/w/vbox.h b/src/user/include/cxx/raleigh/w/vbox.h index aead128..02bffd3 100644 --- a/src/user/include/cxx/raleigh/w/vbox.h +++ b/src/user/include/cxx/raleigh/w/vbox.h @@ -12,8 +12,11 @@ namespace raleigh { void notify_window_change() override; void paint(_pixel_t *pixbuf, uint32_t pitch) override; - bool try_handle_click(coord window_coords, enum mouse_packet::mouse_button click_type, bool up) override; + void handle_click(coord window_coords, enum mouse_packet::mouse_button click_type, bool up) override; void notify_has_opaque_parent(widget *parent) override; + void handle_key(struct key_packet kp) override; + void on_focus() override; + void on_unfocus() override; private: dllist<widget &> widgets; }; |