color mentions in PostView
Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
use crate::draft::{Draft, Drafts, MentionHint};
|
||||
use crate::images::fetch_img;
|
||||
use crate::media_upload::{nostrbuild_nip96_upload, MediaPath};
|
||||
use crate::post::{MentionType, NewPost};
|
||||
use crate::post::{downcast_post_buffer, MentionType, NewPost};
|
||||
use crate::profile::get_display_name;
|
||||
use crate::ui::search_results::SearchResultsView;
|
||||
use crate::ui::{self, Preview, PreviewConfig};
|
||||
use crate::Result;
|
||||
use egui::text::CCursorRange;
|
||||
use egui::text::{CCursorRange, LayoutJob};
|
||||
use egui::text_edit::TextEditOutput;
|
||||
use egui::widgets::text_edit::TextEdit;
|
||||
use egui::{vec2, Frame, Layout, Margin, Pos2, ScrollArea, Sense};
|
||||
use egui::{vec2, Frame, Layout, Margin, Pos2, ScrollArea, Sense, TextBuffer};
|
||||
use enostr::{FilledKeypair, FullKeypair, NoteId, Pubkey, RelayPool};
|
||||
use nostrdb::{Ndb, Transaction};
|
||||
|
||||
@@ -130,10 +130,22 @@ impl<'a> PostView<'a> {
|
||||
);
|
||||
}
|
||||
|
||||
let mut layouter = |ui: &egui::Ui, buf: &dyn TextBuffer, wrap_width: f32| {
|
||||
let mut layout_job = if let Some(post_buffer) = downcast_post_buffer(buf) {
|
||||
post_buffer.to_layout_job(ui)
|
||||
} else {
|
||||
error!("Failed to get custom mentions layouter");
|
||||
text_edit_default_layout(ui, buf.as_str().to_owned(), wrap_width)
|
||||
};
|
||||
layout_job.wrap.max_width = wrap_width;
|
||||
ui.fonts(|f| f.layout_job(layout_job))
|
||||
};
|
||||
|
||||
let textedit = TextEdit::multiline(&mut self.draft.buffer)
|
||||
.hint_text(egui::RichText::new("Write a banger note here...").weak())
|
||||
.frame(false)
|
||||
.desired_width(ui.available_width());
|
||||
.desired_width(ui.available_width())
|
||||
.layouter(&mut layouter);
|
||||
|
||||
let out = textedit.show(ui);
|
||||
|
||||
@@ -584,6 +596,17 @@ fn calculate_mention_hints_pos(out: &TextEditOutput, char_pos: usize) -> egui::P
|
||||
out.text_clip_rect.left_bottom()
|
||||
}
|
||||
|
||||
fn text_edit_default_layout(ui: &egui::Ui, text: String, wrap_width: f32) -> LayoutJob {
|
||||
LayoutJob::simple(
|
||||
text,
|
||||
egui::FontSelection::default().resolve(ui.style()),
|
||||
ui.visuals()
|
||||
.override_text_color
|
||||
.unwrap_or_else(|| ui.visuals().widgets.inactive.text_color()),
|
||||
wrap_width,
|
||||
)
|
||||
}
|
||||
|
||||
mod preview {
|
||||
|
||||
use crate::media_upload::Nip94Event;
|
||||
|
||||
Reference in New Issue
Block a user