Update to druid's pointer events branch #41
|
|
@ -104,7 +104,8 @@ impl CanvasWidget {
|
|||
CanvasWidget {
|
||||
viewport: Viewport {
|
||||
content_size: Size::new(0.0, 0.0),
|
||||
rect: druid::Rect::new(0.0, 0.0, 0.0, 0.0),
|
||||
view_origin: Point::new(0.0, 0.0),
|
||||
view_size: Size::new(0.0, 0.0),
|
||||
},
|
||||
widget_size: Size::new(0.0, 0.0),
|
||||
scroll_component: ScrollComponent::new(),
|
||||
|
|
@ -112,11 +113,10 @@ impl CanvasWidget {
|
|||
}
|
||||
|
||||
fn widget_to_viewport(&self) -> Affine {
|
||||
let viewport_rect_size = self.viewport.rect.size();
|
||||
if !viewport_rect_size.is_empty() && !self.widget_size.is_empty() {
|
||||
let scale_x = viewport_rect_size.width / self.widget_size.width;
|
||||
let scale_y = viewport_rect_size.height / self.widget_size.height;
|
||||
Affine::translate(self.viewport.rect.origin().to_vec2())
|
||||
if !self.viewport.view_size.is_empty() && !self.widget_size.is_empty() {
|
||||
let scale_x = self.viewport.view_size.width / self.widget_size.width;
|
||||
let scale_y = self.viewport.view_size.height / self.widget_size.height;
|
||||
Affine::translate(self.viewport.view_origin.to_vec2())
|
||||
* Affine::scale_non_uniform(scale_x, scale_y)
|
||||
} else {
|
||||
Affine::scale(1.0) // identity
|
||||
|
|
@ -189,7 +189,7 @@ impl Widget<CanvasState> for CanvasWidget {
|
|||
data.handle_event(ctx, event, self.widget_to_viewport(), env);
|
||||
}
|
||||
if let Some(transform) = viewport_transform {
|
||||
let mut new_rect = transform.transform_rect_bbox(self.viewport.rect);
|
||||
let mut new_rect = transform.transform_rect_bbox(self.viewport.view_rect());
|
||||
if new_rect.x0 <= 0f64 {
|
||||
new_rect.x1 -= new_rect.x0;
|
||||
new_rect.x0 = 0f64;
|
||||
|
|
@ -198,7 +198,7 @@ impl Widget<CanvasState> for CanvasWidget {
|
|||
new_rect.y1 -= new_rect.y0;
|
||||
new_rect.y0 = 0f64;
|
||||
}
|
||||
self.viewport.rect = new_rect;
|
||||
self.viewport.view_origin = new_rect.origin();
|
||||
self.scroll_component
|
||||
.reset_scrollbar_fade(|d| ctx.request_timer(d), env);
|
||||
ctx.request_paint();
|
||||
|
|
@ -267,13 +267,14 @@ impl Widget<CanvasState> for CanvasWidget {
|
|||
|
||||
let page_content_size = data.versioned_canvas.get().content_size();
|
||||
let transform = self.widget_to_viewport();
|
||||
self.viewport.rect =
|
||||
transform.transform_rect_bbox(rect)
|
||||
.with_origin(self.viewport.rect.origin());
|
||||
//self.viewport.rect =
|
||||
// transform.transform_rect_bbox(rect)
|
||||
// .with_origin(self.viewport.rect.origin());
|
||||
self.viewport.view_size = transform.transform_rect_bbox(rect).size();
|
||||
|
||||
self.viewport.content_size = druid::Size::new(
|
||||
self.viewport.rect.x1.max(page_content_size.width),
|
||||
self.viewport.rect.y1.max(page_content_size.height),
|
||||
self.viewport.view_rect().x1.max(page_content_size.width),
|
||||
self.viewport.view_rect().y1.max(page_content_size.height),
|
||||
);
|
||||
//log::debug!("{:#?}", &self.viewport);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue