moved cursor into own file

moved click tracking as a new State struct to input::mouse
made cursor field of text_input state private
brought back cursor type(Index, Selection) representation with a state enum
cleaned out some stuff (but not enough/all)
TODO: Documentation (sigh)
TODO: Editor struct
TODO: some (hopefully) small improvements here and there
This commit is contained in:
FabianLars 2020-02-24 18:03:42 +01:00
parent 190dcef155
commit c6c8cabdaf
4 changed files with 315 additions and 284 deletions

View file

@ -46,7 +46,7 @@ impl text_input::Renderer for Renderer {
text_bounds,
value,
size,
state.cursor.draw_position(value),
state.cursor().cursor_position(value),
font,
);
@ -116,20 +116,20 @@ impl text_input::Renderer for Renderer {
text_bounds,
value,
size,
state.cursor.draw_position(value),
state.cursor().cursor_position(value),
font,
);
/*let selection = match cursor {
text_input::Cursor::Index(_) => Primitive::None,
text_input::Cursor::Selection { .. } => {
let selection = match state.cursor().selection_position() {
None => Primitive::None,
Some(_) => {
let (cursor_left_offset, _) =
measure_cursor_and_scroll_offset(
self,
text_bounds,
value,
size,
state.cursor.left(),
state.cursor().left(),
font,
);
let (cursor_right_offset, _) =
@ -138,7 +138,7 @@ impl text_input::Renderer for Renderer {
text_bounds,
value,
size,
state.cursor.right(),
state.cursor().right(),
font,
);
let width = cursor_right_offset - cursor_left_offset;
@ -157,42 +157,6 @@ impl text_input::Renderer for Renderer {
border_color: Color::TRANSPARENT,
}
}
};*/
let selection = if !state.cursor.is_selection() {
Primitive::None
} else {
let (cursor_left_offset, _) = measure_cursor_and_scroll_offset(
self,
text_bounds,
value,
size,
state.cursor.left(),
font,
);
let (cursor_right_offset, _) = measure_cursor_and_scroll_offset(
self,
text_bounds,
value,
size,
state.cursor.right(),
font,
);
let width = cursor_right_offset - cursor_left_offset;
Primitive::Quad {
bounds: Rectangle {
x: text_bounds.x + cursor_left_offset,
y: text_bounds.y,
width,
height: text_bounds.height,
},
background: Background::Color(
style_sheet.selection_color(),
),
border_radius: 0,
border_width: 0,
border_color: Color::TRANSPARENT,
}
};
let cursor = Primitive::Quad {