Darktide Mod Manager #39

Merged
lucas merged 91 commits from feat/dtmm into master 2023-03-01 22:27:42 +01:00
2 changed files with 25 additions and 3 deletions
Showing only changes of commit d208c51cb4 - Show all commits

View file

@ -1,5 +1,5 @@
use druid::widget::{Button, Controller}; use druid::widget::{Button, Controller, Scroll};
use druid::{Data, Env, Event, EventCtx, LifeCycle, LifeCycleCtx, UpdateCtx, Widget}; use druid::{Data, Env, Event, EventCtx, LifeCycle, LifeCycleCtx, Rect, UpdateCtx, Widget};
pub struct DisabledButtonController; pub struct DisabledButtonController;
@ -45,3 +45,23 @@ impl<T: Data> Controller<T, Button<T>> for DisabledButtonController {
child.update(ctx, old_data, data, env) child.update(ctx, old_data, data, env)
} }
} }
pub struct AutoScrollController;
impl<T: Data, W: Widget<T>> Controller<T, Scroll<T, W>> for AutoScrollController {
fn update(
&mut self,
child: &mut Scroll<T, W>,
ctx: &mut UpdateCtx,
old_data: &T,
data: &T,
env: &Env,
) {
if !ctx.is_disabled() {
let size = child.child_size();
let end_region = Rect::new(size.width - 1., size.height - 1., size.width, size.height);
child.scroll_to(ctx, end_region);
}
child.update(ctx, old_data, data, env)
}
}

View file

@ -14,6 +14,7 @@ use crate::state::{
ACTION_START_DELETE_SELECTED_MOD, ACTION_START_DEPLOY, ACTION_START_DELETE_SELECTED_MOD, ACTION_START_DEPLOY,
}; };
use crate::ui::theme; use crate::ui::theme;
use crate::ui::widget::controller::AutoScrollController;
use crate::ui::widget::ExtraWidgetExt; use crate::ui::widget::ExtraWidgetExt;
const TITLE: &str = "Darktide Mod Manager"; const TITLE: &str = "Darktide Mod Manager";
@ -267,7 +268,8 @@ fn build_log_view() -> impl Widget<State> {
.with_line_break_mode(LineBreaking::WordWrap) .with_line_break_mode(LineBreaking::WordWrap)
.lens(State::log) .lens(State::log)
.scroll() .scroll()
.vertical(); .vertical()
.controller(AutoScrollController);
SizedBox::new(label).expand_width().height(128.0) SizedBox::new(label).expand_width().height(128.0)
} }