mirror of
https://github.com/aljazceru/notedeck.git
synced 2025-12-19 09:34:19 +01:00
android/input: add copy/paste context to post input
Fixes: https://github.com/damus-io/notedeck/issues/942 Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
@@ -23,6 +23,7 @@ pub struct NoteContext<'d> {
|
|||||||
pub pool: &'d mut RelayPool,
|
pub pool: &'d mut RelayPool,
|
||||||
pub job_pool: &'d mut JobPool,
|
pub job_pool: &'d mut JobPool,
|
||||||
pub unknown_ids: &'d mut UnknownIds,
|
pub unknown_ids: &'d mut UnknownIds,
|
||||||
|
pub clipboard: &'d mut egui_winit::clipboard::Clipboard,
|
||||||
pub current_account_has_wallet: bool,
|
pub current_account_has_wallet: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -432,6 +432,7 @@ fn render_nav_body(
|
|||||||
pool: ctx.pool,
|
pool: ctx.pool,
|
||||||
job_pool: ctx.job_pool,
|
job_pool: ctx.job_pool,
|
||||||
unknown_ids: ctx.unknown_ids,
|
unknown_ids: ctx.unknown_ids,
|
||||||
|
clipboard: ctx.clipboard,
|
||||||
current_account_has_wallet: get_current_wallet(ctx.accounts, ctx.global_wallet).is_some(),
|
current_account_has_wallet: get_current_wallet(ctx.accounts, ctx.global_wallet).is_some(),
|
||||||
};
|
};
|
||||||
match top {
|
match top {
|
||||||
@@ -604,7 +605,7 @@ fn render_nav_body(
|
|||||||
&(&ctx.accounts.get_selected_account().key).into(),
|
&(&ctx.accounts.get_selected_account().key).into(),
|
||||||
&mut app.jobs,
|
&mut app.jobs,
|
||||||
)
|
)
|
||||||
.show(ui, ctx.clipboard)
|
.show(ui)
|
||||||
.map(RenderNavAction::NoteAction)
|
.map(RenderNavAction::NoteAction)
|
||||||
}
|
}
|
||||||
Route::NewDeck => {
|
Route::NewDeck => {
|
||||||
|
|||||||
@@ -14,12 +14,13 @@ use egui::{
|
|||||||
};
|
};
|
||||||
use enostr::{FilledKeypair, FullKeypair, KeypairUnowned, NoteId, Pubkey, RelayPool};
|
use enostr::{FilledKeypair, FullKeypair, KeypairUnowned, NoteId, Pubkey, RelayPool};
|
||||||
use nostrdb::{Ndb, Transaction};
|
use nostrdb::{Ndb, Transaction};
|
||||||
use notedeck_ui::app_images;
|
|
||||||
use notedeck_ui::blur::PixelDimensions;
|
|
||||||
use notedeck_ui::images::{get_render_state, RenderState};
|
|
||||||
use notedeck_ui::jobs::JobsCache;
|
|
||||||
use notedeck_ui::{
|
use notedeck_ui::{
|
||||||
|
app_images,
|
||||||
|
blur::PixelDimensions,
|
||||||
|
context_menu::{input_context, PasteBehavior},
|
||||||
gif::{handle_repaint, retrieve_latest_texture},
|
gif::{handle_repaint, retrieve_latest_texture},
|
||||||
|
images::{get_render_state, RenderState},
|
||||||
|
jobs::JobsCache,
|
||||||
note::render_note_preview,
|
note::render_note_preview,
|
||||||
NoteOptions, ProfilePic,
|
NoteOptions, ProfilePic,
|
||||||
};
|
};
|
||||||
@@ -186,6 +187,13 @@ impl<'a, 'd> PostView<'a, 'd> {
|
|||||||
|
|
||||||
let out = textedit.show(ui);
|
let out = textedit.show(ui);
|
||||||
|
|
||||||
|
input_context(
|
||||||
|
&out.response,
|
||||||
|
self.note_context.clipboard,
|
||||||
|
&mut self.draft.buffer.text_buffer,
|
||||||
|
PasteBehavior::Append,
|
||||||
|
);
|
||||||
|
|
||||||
if updated_layout {
|
if updated_layout {
|
||||||
self.draft.buffer.selected_mention = false;
|
self.draft.buffer.selected_mention = false;
|
||||||
}
|
}
|
||||||
@@ -792,6 +800,7 @@ mod preview {
|
|||||||
job_pool: app.job_pool,
|
job_pool: app.job_pool,
|
||||||
unknown_ids: app.unknown_ids,
|
unknown_ids: app.unknown_ids,
|
||||||
current_account_has_wallet: false,
|
current_account_has_wallet: false,
|
||||||
|
clipboard: app.clipboard,
|
||||||
};
|
};
|
||||||
|
|
||||||
PostView::new(
|
PostView::new(
|
||||||
|
|||||||
@@ -52,22 +52,18 @@ impl<'a, 'd> SearchView<'a, 'd> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn show(&mut self, ui: &mut egui::Ui, clipboard: &mut Clipboard) -> Option<NoteAction> {
|
pub fn show(&mut self, ui: &mut egui::Ui) -> Option<NoteAction> {
|
||||||
padding(8.0, ui, |ui| self.show_impl(ui, clipboard)).inner
|
padding(8.0, ui, |ui| self.show_impl(ui)).inner
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn show_impl(
|
pub fn show_impl(&mut self, ui: &mut egui::Ui) -> Option<NoteAction> {
|
||||||
&mut self,
|
|
||||||
ui: &mut egui::Ui,
|
|
||||||
clipboard: &mut Clipboard,
|
|
||||||
) -> Option<NoteAction> {
|
|
||||||
ui.spacing_mut().item_spacing = egui::vec2(0.0, 12.0);
|
ui.spacing_mut().item_spacing = egui::vec2(0.0, 12.0);
|
||||||
|
|
||||||
let search_resp = search_box(
|
let search_resp = search_box(
|
||||||
&mut self.query.string,
|
&mut self.query.string,
|
||||||
self.query.focus_state.clone(),
|
self.query.focus_state.clone(),
|
||||||
ui,
|
ui,
|
||||||
clipboard,
|
self.note_context.clipboard,
|
||||||
);
|
);
|
||||||
|
|
||||||
search_resp.process(self.query);
|
search_resp.process(self.query);
|
||||||
|
|||||||
@@ -217,6 +217,7 @@ impl<'a> DaveUi<'a> {
|
|||||||
pool: ctx.pool,
|
pool: ctx.pool,
|
||||||
job_pool: ctx.job_pool,
|
job_pool: ctx.job_pool,
|
||||||
unknown_ids: ctx.unknown_ids,
|
unknown_ids: ctx.unknown_ids,
|
||||||
|
clipboard: ctx.clipboard,
|
||||||
current_account_has_wallet: false,
|
current_account_has_wallet: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user