@@ -204,16 +204,15 @@ void TEllipse::ExecuteEvent(Int_t event, Int_t px, Int_t py)
204204
205205 auto &parent = *gPad ;
206206
207- auto pp = parent.GetPainter ();
208-
209- Int_t kMaxDiff = 10 ;
207+ constexpr Int_t kMaxDiff = 10 ;
210208
211209 static enum { pNone, pTop, pL, pR, pBot, pINSIDE } mode = pNone;
212210 static Int_t sdx = 0 , sdy = 0 ;
213211 static Double_t oldX1, oldY1, oldR1, oldR2;
214212 static Bool_t first_move = kTRUE ;
215213
216- auto paint_hollow = [this ,&parent,pp]() {
214+ auto paint_hollow = [this ,&parent]() {
215+ auto pp = parent.GetPainter ();
217216 pp->SetAttLine (*this );
218217 std::vector<Double_t> x, y;
219218 FillPoints (parent, x, y, GetX1 (), GetY1 (), GetR1 (), GetR2 (), GetPhimin (), GetPhimax (), GetTheta ());
@@ -247,6 +246,12 @@ void TEllipse::ExecuteEvent(Int_t event, Int_t px, Int_t py)
247246 };
248247
249248 Bool_t opaque = parent.OpaqueMoving ();
249+ Int_t px1 = parent.XtoAbsPixel (parent.XtoPad (GetX1 ()));
250+ Int_t py1 = parent.YtoAbsPixel (parent.YtoPad (GetY1 ()));
251+ Int_t pLx = parent.XtoAbsPixel (parent.XtoPad (GetX1 () - GetR1 ()));
252+ Int_t pRx = parent.XtoAbsPixel (parent.XtoPad (GetX1 () + GetR1 ()));
253+ Int_t pBy = parent.YtoAbsPixel (parent.YtoPad (GetY1 () - GetR2 ()));
254+ Int_t pTy = parent.YtoAbsPixel (parent.YtoPad (GetY1 () + GetR2 ()));
250255
251256 switch (event) {
252257
@@ -257,18 +262,12 @@ void TEllipse::ExecuteEvent(Int_t event, Int_t px, Int_t py)
257262 oldR1 = GetR1 ();
258263 oldR2 = GetR2 ();
259264
260- sdx = parent. XtoAbsPixel (parent. XtoPad ( GetX1 ())) - px;
261- sdy = parent. YtoAbsPixel (parent. YtoPad ( GetY1 ())) - py;
265+ sdx = px1 - px;
266+ sdy = py1 - py;
262267
263268 // No break !!!
264269
265270 case kMouseMotion : {
266- Int_t px1 = parent.XtoAbsPixel (parent.XtoPad (GetX1 ()));
267- Int_t py1 = parent.YtoAbsPixel (parent.YtoPad (GetY1 ()));
268- Int_t pLx = parent.XtoAbsPixel (parent.XtoPad (GetX1 () - GetR1 ()));
269- Int_t pRx = parent.XtoAbsPixel (parent.XtoPad (GetX1 () + GetR1 ()));
270- Int_t pBy = parent.YtoAbsPixel (parent.YtoPad (GetY1 () - GetR2 ()));
271- Int_t pTy = parent.YtoAbsPixel (parent.YtoPad (GetY1 () + GetR2 ()));
272271 mode = pNone;
273272 if ((TMath::Abs (px - px1) < kMaxDiff ) && (TMath::Abs (py - pTy) < kMaxDiff )) {
274273 mode = pTop; // top edge
@@ -301,19 +300,19 @@ void TEllipse::ExecuteEvent(Int_t event, Int_t px, Int_t py)
301300 case pNone:
302301 break ;
303302 case pL:
304- changeX (px, parent. XtoAbsPixel (parent. XtoPad ( GetX1 () + GetR1 ())) );
303+ changeX (px, pRx );
305304 guide = ' l' ;
306305 break ;
307306 case pR:
308- changeX (parent. XtoAbsPixel (parent. XtoPad ( GetX1 () - GetR1 ())) , px);
307+ changeX (pLx , px);
309308 guide = ' r' ;
310309 break ;
311310 case pTop:
312- changeY (py, parent. YtoAbsPixel (parent. YtoPad ( GetY1 () - GetR2 ())) );
311+ changeY (py, pBy );
313312 guide = ' t' ;
314313 break ;
315314 case pBot:
316- changeY (parent. YtoAbsPixel (parent. YtoPad ( GetY1 () + GetR2 ())) , py);
315+ changeY (pTy , py);
317316 guide = ' b' ;
318317 break ;
319318 case pINSIDE:
0 commit comments