Handle left mouse click on item, i.e. albums/lists
Another part of #840
This commit is contained in:
@@ -13,6 +13,7 @@ use unicode_width::UnicodeWidthStr;
|
|||||||
|
|
||||||
use crate::command::{Command, GotoMode, InsertSource, JumpMode, MoveAmount, MoveMode, TargetMode};
|
use crate::command::{Command, GotoMode, InsertSource, JumpMode, MoveAmount, MoveMode, TargetMode};
|
||||||
use crate::commands::CommandResult;
|
use crate::commands::CommandResult;
|
||||||
|
use crate::ext_traits::CursiveExt;
|
||||||
use crate::library::Library;
|
use crate::library::Library;
|
||||||
use crate::model::album::Album;
|
use crate::model::album::Album;
|
||||||
use crate::model::artist::Artist;
|
use crate::model::artist::Artist;
|
||||||
@@ -306,7 +307,29 @@ impl<I: ListItem> View for ListView<I> {
|
|||||||
.checked_sub(offset)
|
.checked_sub(offset)
|
||||||
.map(|p| self.scroller.start_drag(p))
|
.map(|p| self.scroller.start_drag(p))
|
||||||
.unwrap_or(false)
|
.unwrap_or(false)
|
||||||
{}
|
{
|
||||||
|
log::debug!("grabbing scroller");
|
||||||
|
} else {
|
||||||
|
let viewport = self.scroller.content_viewport().top_left();
|
||||||
|
if let Some(y) = position.checked_sub(offset).map(|p| p.y + viewport.y) {
|
||||||
|
self.move_focus_to(y);
|
||||||
|
|
||||||
|
let queue = self.queue.clone();
|
||||||
|
let library = self.library.clone();
|
||||||
|
if let Some(target) = {
|
||||||
|
let content = self.content.read().unwrap();
|
||||||
|
content.get(self.selected).map(|t| t.as_listitem())
|
||||||
|
} {
|
||||||
|
if let Some(view) = target.open(queue, library) {
|
||||||
|
return EventResult::Consumed(Some(Callback::from_fn_once(
|
||||||
|
move |s| {
|
||||||
|
s.on_layout(|_, mut l| l.push_view(view));
|
||||||
|
},
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Event::Mouse {
|
Event::Mouse {
|
||||||
event: MouseEvent::Press(MouseButton::Right),
|
event: MouseEvent::Press(MouseButton::Right),
|
||||||
|
|||||||
Reference in New Issue
Block a user