Le Wed, May 01, 2002, à 04:36:58PM -0400, Titus J. Anderson a écrit: > So, I thought I'd try my hand at it. It only works for boxes right now, but > shouldn't be too difficult to make it work for the other basic objects. Here's > the patch for v0.88.1 (I'm not working with the CVS version at this point.)
Sounds like a good idea; however, this patch can't be applied "as is": there has been a lot of StdProp-related changes in CVS, which impact the definition of Element (you'll need to add this aspectRatio field to the stdprop description of an Element). Also, it must be clear that this approach break binary compatibility -- I don't care at all, at least until we hit 1.0, but some might. > ! if (modifiers == MODIFIER_SHIFT) { > ! element_move_handle_aspect(&box->element, handle->id, to, (real) >box->element.aspectRatio); > ! } else { > ! element_move_handle(&box->element, handle->id, to, reason); > ! } Perhaps a better idea here would be to add a parameter to element_move_handle (and fix all invocations), passing the modifiers. element_move_handle() will be able to access aspectRatio on its own (hmmm -- better call it aspect_ratio for consistency with the rest of the code, thanks), and factorise out the test on the modifiers' state into the common element code. > *************** box_create(Point *startpoint, > *** 511,516 **** > --- 515,521 ---- > elem->corner = *startpoint; > elem->width = DEFAULT_WIDTH; > elem->height = DEFAULT_WIDTH; > + elem->aspectRatio = elem->width / elem->height; May be better to init this value in element_init(), and not paying attention to it if it is zero, and recompute it in element_update_data() ? This way, save the extra parameter, there is no change to individual objects, only to the common code. -- Cyrille -- Grumpf. _______________________________________________ Dia-list mailing list [EMAIL PROTECTED] http://mail.gnome.org/mailman/listinfo/dia-list