Compare commits
1 Commits
1cec56e847
...
1c6fc99f57
| Author | SHA1 | Date | |
|---|---|---|---|
| 1c6fc99f57 |
@@ -1,6 +1,6 @@
|
|||||||
use std::marker::{PhantomData, Sized};
|
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
use cosmic_text::{Attrs, Family, Metrics};
|
use cosmic_text::{Attrs, Family, Metrics};
|
||||||
|
use std::marker::{PhantomData, Sized};
|
||||||
|
|
||||||
pub struct TextBuilder<O = TextOutput, H: WidgetOption = ()> {
|
pub struct TextBuilder<O = TextOutput, H: WidgetOption = ()> {
|
||||||
pub content: String,
|
pub content: String,
|
||||||
|
|||||||
@@ -14,13 +14,6 @@ pub struct TextEdit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl TextEdit {
|
impl TextEdit {
|
||||||
pub fn region(&self) -> UiRegion {
|
|
||||||
self.tex()
|
|
||||||
.map(|t| t.size)
|
|
||||||
.unwrap_or(Vec2::ZERO)
|
|
||||||
.align(self.align)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn select_content(&self, start: Cursor, end: Cursor) -> String {
|
pub fn select_content(&self, start: Cursor, end: Cursor) -> String {
|
||||||
let (start, end) = sort_cursors(start, end);
|
let (start, end) = sort_cursors(start, end);
|
||||||
let mut iter = self.buf.lines.iter().skip(start.line);
|
let mut iter = self.buf.lines.iter().skip(start.line);
|
||||||
|
|||||||
@@ -34,6 +34,23 @@ impl TextView {
|
|||||||
hint,
|
hint,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn region(&self) -> UiRegion {
|
||||||
|
self.tex()
|
||||||
|
.map(|t| t.size)
|
||||||
|
.unwrap_or(Vec2::ZERO)
|
||||||
|
.align(self.align)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn tex_region(&self, tex: &RenderedText) -> UiRegion {
|
||||||
|
let region = tex.size.align(self.align);
|
||||||
|
let dims = tex.handle.size();
|
||||||
|
let mut region = region.offset(tex.top_left_offset);
|
||||||
|
region.x.end = region.x.start + UiScalar::abs(dims.x);
|
||||||
|
region.y.end = region.y.start + UiScalar::abs(dims.y);
|
||||||
|
region
|
||||||
|
}
|
||||||
|
|
||||||
fn render(&mut self, ctx: &mut SizeCtx) -> RenderedText {
|
fn render(&mut self, ctx: &mut SizeCtx) -> RenderedText {
|
||||||
let width = if self.attrs.wrap {
|
let width = if self.attrs.wrap {
|
||||||
Some(ctx.px_size().x)
|
Some(ctx.px_size().x)
|
||||||
@@ -68,11 +85,7 @@ impl TextView {
|
|||||||
}
|
}
|
||||||
pub fn draw(&mut self, painter: &mut Painter) -> UiRegion {
|
pub fn draw(&mut self, painter: &mut Painter) -> UiRegion {
|
||||||
let tex = self.render(&mut painter.size_ctx());
|
let tex = self.render(&mut painter.size_ctx());
|
||||||
let region = tex.size.align(self.align);
|
let region = self.tex_region(&tex);
|
||||||
let dims = tex.handle.size();
|
|
||||||
let mut region = region.offset(tex.top_left_offset);
|
|
||||||
region.x.end = region.x.start + UiScalar::abs(dims.x);
|
|
||||||
region.y.end = region.y.start + UiScalar::abs(dims.y);
|
|
||||||
if let Some(hint) = &self.hint
|
if let Some(hint) = &self.hint
|
||||||
&& let [line] = &self.buf.lines[..]
|
&& let [line] = &self.buf.lines[..]
|
||||||
&& line.text().is_empty()
|
&& line.text().is_empty()
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ pub struct TextAttrs {
|
|||||||
pub line_height: f32,
|
pub line_height: f32,
|
||||||
pub family: Family<'static>,
|
pub family: Family<'static>,
|
||||||
pub wrap: bool,
|
pub wrap: bool,
|
||||||
/// inner alignment of text region (within where its drawn)
|
/// inner alignment of text region (within where it's drawn)
|
||||||
pub align: RegionAlign,
|
pub align: RegionAlign,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user