| 355 | } |
| 356 | |
| 357 | fn mousemove(&self, e: &mut MouseEvent) { |
| 358 | let ex = e.x as f32; |
| 359 | let ey = e.y as f32; |
| 360 | let mut state = self.state.borrow_mut(); |
| 361 | if state.resizing { |
| 362 | let dx = ex - state.resize_x; |
| 363 | let dy = ey - state.resize_y; |
| 364 | |
| 365 | let ww = self.w() + dx; |
| 366 | let hh = self.h() + dy; |
| 367 | |
| 368 | let mut resized = false; |
| 369 | |
| 370 | if (ww >= self.w_min() || ww <= self.w_max()) && ex >= self.x() { |
| 371 | state.resize_x = ex; |
| 372 | resized = true; |
| 373 | } |
| 374 | |
| 375 | if (hh >= self.h_min() || hh <= self.h_max()) && ey >= self.y() { |
| 376 | state.resize_y = ey; |
| 377 | resized = true; |
| 378 | } |
| 379 | |
| 380 | if resized { |
| 381 | self.set_size(ww, hh); |
| 382 | } |
| 383 | } else if state.dragging { |
| 384 | let dx = ex - state.drag_x; |
| 385 | let dy = ey - state.drag_y; |
| 386 | |
| 387 | state.drag_x = ex; |
| 388 | state.drag_y = ey; |
| 389 | |
| 390 | self.set_pos(self.x() + dx, self.y() + dy); |
| 391 | } else { |
| 392 | //dragging |
| 393 | |
| 394 | // self.base.mousemove(e); |
| 395 | } |
| 396 | } |
| 397 | |
| 398 | fn mousedown(&self, e: &mut MouseEvent) { |
| 399 | let ex = e.x as f32; |