static void ro_treeview_drag_end(wimp_dragged *drag, void *data) { os_error *error; error = xwimp_drag_box((wimp_drag *) -1); if (error) { LOG(("xwimp_drag_box: 0x%x: %s", error->errnum, error->errmess)); warn_user("WimpError", error->errmess); } error = xwimp_auto_scroll(0, NULL, NULL); if (error) { LOG(("xwimp_auto_scroll: 0x%x: %s", error->errnum, error->errmess)); warn_user("WimpError", error->errmess); } }
void ro_treeview_drag_end(wimp_dragged *drag) { os_error *error; error = xwimp_drag_box((wimp_drag *) -1); if (error) { LOG(("xwimp_drag_box: 0x%x: %s", error->errnum, error->errmess)); warn_user("WimpError", error->errmess); } error = xwimp_auto_scroll(0, NULL, NULL); if (error) { LOG(("xwimp_auto_scroll: 0x%x: %s", error->errnum, error->errmess)); warn_user("WimpError", error->errmess); } gui_current_drag_type = GUI_DRAG_NONE; }
static void ro_treeview_drag_start(ro_treeview *tv, wimp_pointer *pointer, wimp_window_state *state) { os_error *error; wimp_drag drag; wimp_auto_scroll_info auto_scroll; drag.w = tv->w; drag.bbox.x0 = state->visible.x0; drag.bbox.y0 = state->visible.y0; drag.bbox.x1 = state->visible.x1; drag.bbox.y1 = state->visible.y1 - ro_toolbar_height(tv->tb); switch (tv->drag) { case TREE_SELECT_DRAG: drag.type = wimp_DRAG_USER_RUBBER; drag.initial.x0 = pointer->pos.x; drag.initial.y0 = pointer->pos.y; drag.initial.x1 = pointer->pos.x; drag.initial.y1 = pointer->pos.y; break; case TREE_MOVE_DRAG: drag.type = wimp_DRAG_USER_FIXED; drag.initial.x0 = pointer->pos.x - 4; drag.initial.y0 = pointer->pos.y - 48; drag.initial.x1 = pointer->pos.x + 48; drag.initial.y1 = pointer->pos.y + 4; break; default: /* No other drag types are supported. */ break; } error = xwimp_drag_box_with_flags(&drag, wimp_DRAG_BOX_KEEP_IN_LINE | wimp_DRAG_BOX_CLIP); if (error) { LOG(("xwimp_drag_box: 0x%x: %s", error->errnum, error->errmess)); warn_user("WimpError", error->errmess); } else { auto_scroll.w = tv->w; auto_scroll.pause_zone_sizes.x0 = 80; auto_scroll.pause_zone_sizes.y0 = 80; auto_scroll.pause_zone_sizes.x1 = 80; auto_scroll.pause_zone_sizes.y1 = 80 + ro_toolbar_height(tv->tb); auto_scroll.pause_duration = 0; auto_scroll.state_change = (void *) 1; error = xwimp_auto_scroll(wimp_AUTO_SCROLL_ENABLE_VERTICAL, &auto_scroll, NULL); if (error) { LOG(("xwimp_auto_scroll: 0x%x: %s", error->errnum, error->errmess)); warn_user("WimpError", error->errmess); } gui_current_drag_type = GUI_DRAG_TREEVIEW; } }