void GlyphViewer::rate_scroll () { Window* w = canvas()->window(); WidgetKit* kit = WidgetKit::instance(); Coord dx = _x - _lx; Coord dy = _y - _ly; if (dx != 0.0 && dy != 0.0) { double angle = atan2(dy, dx)*180/M_PI; if (angle < -157.5) { w->cursor(kit->rfast_cursor()); } else if (angle < -112.5) { w->cursor(kit->rufast_cursor()); } else if (angle < -67.5) { w->cursor(kit->ufast_cursor()); } else if (angle < -22.5) { w->cursor(kit->lufast_cursor()); } else if (angle < 22.5) { w->cursor(kit->lfast_cursor()); } else if (angle < 67.5) { w->cursor(kit->ldfast_cursor()); } else if (angle < 112.5) { w->cursor(kit->dfast_cursor()); } else if (angle < 157.5) { w->cursor(kit->rdfast_cursor()); } else { w->cursor(kit->rfast_cursor()); } } Coord l, b, r, t; _root->getbounds(l, b, r, t); canvas()->damage(l, b, r, t); _root->translate(dx, dy); _root->getbounds(l, b, r, t); canvas()->damage(l, b, r, t); }