diff options
| author | 2020-02-24 04:14:32 +0100 | |
|---|---|---|
| committer | 2020-02-24 04:14:32 +0100 | |
| commit | 190dcef1553efa181b68caa91b109f83fe289412 (patch) | |
| tree | 13a6ede0a6be982f59535c1276603ca35ada2045 /wgpu | |
| parent | e8bf0fc0997740096cad74daa4b5a338ce808aad (diff) | |
| download | iced-190dcef1553efa181b68caa91b109f83fe289412.tar.gz iced-190dcef1553efa181b68caa91b109f83fe289412.tar.bz2 iced-190dcef1553efa181b68caa91b109f83fe289412.zip | |
Text Selection completely rewritten
Diffstat (limited to '')
| -rw-r--r-- | wgpu/src/renderer/widget/text_input.rs | 47 | 
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 { | 
