ui/note: refactor reply line into a function

this is a bit neater

Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
William Casarin
2025-07-17 09:36:46 -07:00
parent c0c2120f74
commit 51d2b4414b

View File

@@ -4,6 +4,7 @@ use crate::ui::{
note::{PostAction, PostResponse, PostType},
};
use egui::{Rect, Response, Ui};
use enostr::{FilledKeypair, NoteId};
use notedeck::NoteContext;
use notedeck_ui::jobs::JobsCache;
@@ -102,44 +103,12 @@ impl<'a, 'd> PostReplyView<'a, 'd> {
.action
.or(quoted_note.action.map(PostAction::QuotedNoteAction));
//
// reply line
//
// Position and draw the reply line
let mut rect = ui.min_rect();
// Position the line right above the poster's profile pic in
// the post box. Use the PostView's margin values to
// determine this offset.
rect.min.x = avail_rect.min.x + pfp_offset as f32;
// honestly don't know what the fuck I'm doing here. just trying
// to get the line under the profile picture
rect.min.y = avail_rect.min.y
+ (ProfilePic::medium_size() as f32 / 2.0
+ ProfilePic::medium_size() as f32
+ NoteView::expand_size() as f32 * 2.0)
+ 1.0;
// For some reason we need to nudge the reply line's height a
// few more pixels?
let nudge = if post_response.edit_response.has_focus() {
// we nudge by one less pixel if focused, otherwise it
// overlaps the focused PostView purple border color
2.0
} else {
// we have to nudge by one more pixel when not focused
// otherwise it looks like there's a gap(?)
3.0
};
rect.max.y = rect_before_post.max.y + ui::PostView::outer_margin() as f32 + nudge;
ui.painter().vline(
rect.left(),
rect.y_range(),
ui.visuals().widgets.noninteractive.bg_stroke,
reply_line_ui(
&rect_before_post,
&post_response.edit_response,
pfp_offset as f32,
&avail_rect,
ui,
);
post_response
@@ -147,3 +116,48 @@ impl<'a, 'd> PostReplyView<'a, 'd> {
.inner
}
}
/// The vertical line in the reply view
fn reply_line_ui(
rect_before_post: &Rect,
edit_response: &Response,
pfp_offset: f32,
avail_rect: &Rect,
ui: &mut Ui,
) {
// Position and draw the reply line
let mut rect = ui.min_rect();
// Position the line right above the poster's profile pic in
// the post box. Use the PostView's margin values to
// determine this offset.
rect.min.x = avail_rect.min.x + pfp_offset;
// honestly don't know what the fuck I'm doing here. just trying
// to get the line under the profile picture
rect.min.y = avail_rect.min.y
+ (ProfilePic::medium_size() as f32 / 2.0
+ ProfilePic::medium_size() as f32
+ NoteView::expand_size() as f32 * 2.0)
+ 1.0;
// For some reason we need to nudge the reply line's height a
// few more pixels?
let nudge = if edit_response.has_focus() {
// we nudge by one less pixel if focused, otherwise it
// overlaps the focused PostView purple border color
2.0
} else {
// we have to nudge by one more pixel when not focused
// otherwise it looks like there's a gap(?)
3.0
};
rect.max.y = rect_before_post.max.y + ui::PostView::outer_margin() as f32 + nudge;
ui.painter().vline(
rect.left(),
rect.y_range(),
ui.visuals().widgets.noninteractive.bg_stroke,
);
}