summaryrefslogtreecommitdiff
path: root/src/user/include/cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/user/include/cxx')
-rw-r--r--src/user/include/cxx/raleigh/w/entry.h1
-rw-r--r--src/user/include/cxx/raleigh/w/hbox.h18
-rw-r--r--src/user/include/cxx/raleigh/w/multicontainer.h29
-rw-r--r--src/user/include/cxx/raleigh/w/vbox.h14
-rw-r--r--src/user/include/cxx/raleigh/widget.h1
5 files changed, 52 insertions, 11 deletions
diff --git a/src/user/include/cxx/raleigh/w/entry.h b/src/user/include/cxx/raleigh/w/entry.h
index fcae122..001cae2 100644
--- a/src/user/include/cxx/raleigh/w/entry.h
+++ b/src/user/include/cxx/raleigh/w/entry.h
@@ -42,7 +42,6 @@ namespace raleigh {
//the index of the null terminator
uint32_t end_d;
- bool first_paint;
bool has_focus;
bool had_focus_last_paint;
bool text_changed_since_last_paint;
diff --git a/src/user/include/cxx/raleigh/w/hbox.h b/src/user/include/cxx/raleigh/w/hbox.h
new file mode 100644
index 0000000..166056d
--- /dev/null
+++ b/src/user/include/cxx/raleigh/w/hbox.h
@@ -0,0 +1,18 @@
+#ifndef RALEIGH_W_HBOX_H
+#define RALEIGH_W_HBOX_H
+
+#include <raleigh/w/multicontainer.h>
+
+namespace raleigh {
+ class hbox : public multicontainer {
+ public:
+ //do not modify this list afterward
+ hbox(dllist<widget &> widgets);
+
+ private:
+ coord determine_size() override;
+ void set_child_offsets() override;
+ };
+}
+
+#endif \ No newline at end of file
diff --git a/src/user/include/cxx/raleigh/w/multicontainer.h b/src/user/include/cxx/raleigh/w/multicontainer.h
new file mode 100644
index 0000000..5ced74f
--- /dev/null
+++ b/src/user/include/cxx/raleigh/w/multicontainer.h
@@ -0,0 +1,29 @@
+#ifndef RALEIGH_W_MULTICONTAINER_H
+#define RALEIGH_W_MULTICONTAINER_H
+
+#include <raleigh/widget.h>
+#include <structs/dllist.h>
+
+namespace raleigh {
+ class multicontainer : public widget {
+ public:
+ 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 notify_child_size_change(widget &from, coord old_size) override;
+ void on_mouse_move(coord window_coords) override;
+
+ protected:
+ //do not modify this list afterward
+ //set size to determine_size() in derived constructor
+ multicontainer(dllist<widget &> widgets);
+
+ virtual coord determine_size() = 0;
+ virtual void set_child_offsets() = 0;
+
+ dllist<widget &> widgets;
+ };
+}
+
+#endif \ No newline at end of file
diff --git a/src/user/include/cxx/raleigh/w/vbox.h b/src/user/include/cxx/raleigh/w/vbox.h
index 39f89e9..d51e61d 100644
--- a/src/user/include/cxx/raleigh/w/vbox.h
+++ b/src/user/include/cxx/raleigh/w/vbox.h
@@ -1,23 +1,17 @@
#ifndef RALEIGH_W_VBOX_H
#define RALEIGH_W_VBOX_H
-#include <raleigh/widget.h>
-#include <structs/dllist.h>
+#include <raleigh/w/multicontainer.h>
namespace raleigh {
- class vbox : public widget {
+ class vbox : public multicontainer {
public:
//do not modify this list afterward
vbox(dllist<widget &> widgets);
- 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 notify_child_size_change(widget &from, coord old_size) override;
- void on_mouse_move(coord window_coords) override;
private:
- dllist<widget &> widgets;
+ coord determine_size() override;
+ void set_child_offsets() override;
};
}
diff --git a/src/user/include/cxx/raleigh/widget.h b/src/user/include/cxx/raleigh/widget.h
index d499ed4..b53718a 100644
--- a/src/user/include/cxx/raleigh/widget.h
+++ b/src/user/include/cxx/raleigh/widget.h
@@ -16,6 +16,7 @@ namespace raleigh {
widget *parent;//set to zero when root widget
window *w;
coord window_offset;
+ bool next_paint_full;
//derived classes should not set this outside of the initializer
//instead, they should call widget::set_size(coord)