X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fview-ellipse.c;fp=src%2Fview-ellipse.c;h=66f55fe97d4db0f974f126025ff8292e33d6d468;hb=38d44627bd551b2f3855ee44d2d1e3f03f30e2ce;hp=7de5cd76de61e71fd4a0326776d1509e492f00d4;hpb=80f8b7f229a635ac0bdcbe81cc260ab37a55d32e;p=glabels diff --git a/src/view-ellipse.c b/src/view-ellipse.c index 7de5cd76..66f55fe9 100644 --- a/src/view-ellipse.c +++ b/src/view-ellipse.c @@ -78,9 +78,9 @@ gl_view_ellipse_get_create_cursor (void) /* Object creation handler: button press event. */ /*****************************************************************************/ void -gl_view_ellipse_create_button_press_event (glView *view, - gdouble x, - gdouble y) +gl_view_ellipse_create_button_press_event (glView *view, + gdouble x, + gdouble y) { GObject *object; @@ -101,19 +101,28 @@ gl_view_ellipse_create_button_press_event (glView *view, /* Object creation handler: motion event. */ /*****************************************************************************/ void -gl_view_ellipse_create_motion_event (glView *view, - gdouble x, - gdouble y) +gl_view_ellipse_create_motion_event (glView *view, + gdouble x, + gdouble y, + gboolean circle) { - gdouble w, h; - - gl_label_object_set_position (GL_LABEL_OBJECT(view->create_object), - MIN (x, view->create_x0), MIN (y, view->create_y0), - FALSE); - - w = MAX (x, view->create_x0) - MIN (x, view->create_x0); - h = MAX (y, view->create_y0) - MIN (y, view->create_y0); - gl_label_object_set_size (GL_LABEL_OBJECT(view->create_object), w, h, FALSE); + gdouble w, h; + + w = ABS (x - view->create_x0); + h = ABS (y - view->create_y0); + if (circle) + if (w < h) { + h = w; + y = (y < view->create_y0 ? view->create_y0 - h : view->create_y0 + h); + } else { + w = h; + x = (x < view->create_x0 ? view->create_x0 - w : view->create_x0 + w); + } + + gl_label_object_set_position (GL_LABEL_OBJECT(view->create_object), + MIN (x, view->create_x0), MIN (y, view->create_y0), + FALSE); + gl_label_object_set_size (GL_LABEL_OBJECT(view->create_object), w, h, FALSE); } @@ -121,23 +130,17 @@ gl_view_ellipse_create_motion_event (glView *view, /* Object creation handler: button relesase event. */ /*****************************************************************************/ void -gl_view_ellipse_create_button_release_event (glView *view, - gdouble x, - gdouble y) +gl_view_ellipse_create_button_release_event (glView *view, + gdouble x, + gdouble y, + gboolean circle) { - gdouble w, h; - - if ((view->create_x0 == x) && (view->create_y0 == y)) { - x = view->create_x0 + 36.0; - y = view->create_y0 + 36.0; - } - gl_label_object_set_position (GL_LABEL_OBJECT(view->create_object), - MIN (x, view->create_x0), MIN (y, view->create_y0), - FALSE); - - w = MAX (x, view->create_x0) - MIN (x, view->create_x0); - h = MAX (y, view->create_y0) - MIN (y, view->create_y0); - gl_label_object_set_size (GL_LABEL_OBJECT(view->create_object), w, h, FALSE); + if ((view->create_x0 == x) && (view->create_y0 == y)) { + x = view->create_x0 + 36.0; + y = view->create_y0 + 36.0; + } + + gl_view_ellipse_create_motion_event (view, x, y, circle); }