summaryrefslogtreecommitdiff
path: root/Libraries/LibWeb/Layout/LayoutNode.h
diff options
context:
space:
mode:
Diffstat (limited to 'Libraries/LibWeb/Layout/LayoutNode.h')
-rw-r--r--Libraries/LibWeb/Layout/LayoutNode.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/Libraries/LibWeb/Layout/LayoutNode.h b/Libraries/LibWeb/Layout/LayoutNode.h
index b441c3afe2..246d40761f 100644
--- a/Libraries/LibWeb/Layout/LayoutNode.h
+++ b/Libraries/LibWeb/Layout/LayoutNode.h
@@ -43,6 +43,14 @@ namespace Web {
struct HitTestResult {
RefPtr<LayoutNode> layout_node;
int index_in_node { 0 };
+
+ enum InternalPosition {
+ None,
+ Before,
+ Inside,
+ After,
+ };
+ InternalPosition internal_position { None };
};
enum class HitTestType {
@@ -142,6 +150,17 @@ public:
float font_size() const;
+ enum class SelectionState {
+ None, // No selection
+ Start, // Selection starts in this LayoutNode
+ End, // Selection ends in this LayoutNode
+ StartAndEnd, // Selection starts and ends in this LayoutNode
+ Full, // Selection starts before and ends after this LayoutNode
+ };
+
+ SelectionState selection_state() const { return m_selection_state; }
+ void set_selection_state(SelectionState state) { m_selection_state = state; }
+
protected:
LayoutNode(DOM::Document&, DOM::Node*);
@@ -155,6 +174,7 @@ private:
bool m_has_style { false };
bool m_visible { true };
bool m_children_are_inline { false };
+ SelectionState m_selection_state { SelectionState::None };
};
class LayoutNodeWithStyle : public LayoutNode {