summaryrefslogtreecommitdiffstats
path: root/wgpu/src/renderer
diff options
context:
space:
mode:
authorLibravatar FabianLars <fabianlars@fabianlars.de>2020-02-24 04:14:32 +0100
committerLibravatar FabianLars <fabianlars@fabianlars.de>2020-02-24 04:14:32 +0100
commit190dcef1553efa181b68caa91b109f83fe289412 (patch)
tree13a6ede0a6be982f59535c1276603ca35ada2045 /wgpu/src/renderer
parente8bf0fc0997740096cad74daa4b5a338ce808aad (diff)
downloadiced-190dcef1553efa181b68caa91b109f83fe289412.tar.gz
iced-190dcef1553efa181b68caa91b109f83fe289412.tar.bz2
iced-190dcef1553efa181b68caa91b109f83fe289412.zip
Text Selection completely rewritten
Diffstat (limited to 'wgpu/src/renderer')
-rw-r--r--wgpu/src/renderer/widget/text_input.rs47
1 files changed, 41 insertions, 6 deletions
diff --git a/wgpu/src/renderer/widget/text_input.rs b/wgpu/src/renderer/widget/text_input.rs
index 72da85f4..4e0274b8 100644
--- a/wgpu/src/renderer/widget/text_input.rs
+++ b/wgpu/src/renderer/widget/text_input.rs
@@ -46,7 +46,7 @@ impl text_input::Renderer for Renderer {
text_bounds,
value,
size,
- state.cursor_position(value).position(),
+ state.cursor.draw_position(value),
font,
);
@@ -111,17 +111,16 @@ impl text_input::Renderer for Renderer {
};
let (contents_primitive, offset) = if state.is_focused() {
- let cursor = state.cursor_position(value);
let (text_value_width, offset) = measure_cursor_and_scroll_offset(
self,
text_bounds,
value,
size,
- cursor.position(),
+ state.cursor.draw_position(value),
font,
);
- let selection = match cursor {
+ /*let selection = match cursor {
text_input::Cursor::Index(_) => Primitive::None,
text_input::Cursor::Selection { .. } => {
let (cursor_left_offset, _) =
@@ -130,7 +129,7 @@ impl text_input::Renderer for Renderer {
text_bounds,
value,
size,
- cursor.left(),
+ state.cursor.left(),
font,
);
let (cursor_right_offset, _) =
@@ -139,7 +138,7 @@ impl text_input::Renderer for Renderer {
text_bounds,
value,
size,
- cursor.right(),
+ state.cursor.right(),
font,
);
let width = cursor_right_offset - cursor_left_offset;
@@ -158,6 +157,42 @@ 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 {