~onli/simdock/master

« back to all changes in this revision

Viewing changes to src/myFrame.cc

  • Committer: onli
  • Date: 2014-09-09 18:04:00 UTC
  • Revision ID: git-v1:bd0af38c1fd22451ad8aec60819537cbe46785ef
imrpove animator
allow all animation speeds and undo efa4d9e81c0a2fa4f828ccf38f73ede03744669d because reacting immediately to icon leave leads to flicker

Show diffs side-by-side

added added

removed removed

Lines of Context:
328
328
        draggedPos.y = event.m_y;
329
329
        Refresh (false);
330
330
    }
331
 
 
332
 
    bool wasHovering = false;
333
 
    if (hoveringIcon) {
334
 
        wasHovering = true;
335
 
    }
336
331
    
337
 
    bool hover = false;
338
332
    for (unsigned int i = 0; i < ImagesList->GetCount (); i++)
339
333
        {
340
334
        simImage *img = (*ImagesList)[i];
341
335
        if (img->isIn (event.m_x, event.m_y))
342
336
        {
343
 
            hover = true;
344
337
            if (hoveringIcon != img) {
345
338
                OnMouseEnterIcon(event, img);
346
339
                break;
348
341
        }
349
342
    }
350
343
 
351
 
    if (wasHovering && ! hover) {
352
 
        OnMouseLeaveIcon(event);
353
 
    }
354
 
    
355
344
    if (hoveringIcon != None) {
356
345
        hoverTimer->Start(3000, wxTIMER_ONE_SHOT);
357
346
    }
845
834
MyFrame::approachFutures() {
846
835
    unsigned int imgCount = ImagesList->GetCount();
847
836
    bool ready = true;
848
 
    int zoomChange = 1;
 
837
    int zoomChange = 2;     // if we move more than 1 px, we have to actively prevent flicker
849
838
    for (unsigned int i = 0; i < imgCount; i++) {
850
839
        simImage *img = (*ImagesList)[i];
851
840
        if (img->w > img->future_w) {
852
 
            img->w -= zoomChange;
 
841
            img->w = max(img->w - zoomChange, img->future_w);
853
842
            ready = false;
854
843
            if (img->h > img->future_h) {
855
844
                img->y += zoomChange;
856
845
                img->h = img->w;
857
846
            }
858
847
        } else if (img->w < img->future_w) {
859
 
            img->w += zoomChange;
 
848
            img->w = min(img->w + zoomChange, img->future_w);
860
849
            ready = false;
861
850
            if (img->h < img->future_h) {
862
851
                img->y -= zoomChange;
864
853
            }
865
854
        }
866
855
        if (img->x > img->future_x) {
867
 
            img->x -= zoomChange;
 
856
            img->x = max(img->x - zoomChange, img->future_x);
868
857
            ready = false;
869
858
        } else if (img->x < img->future_x) {
870
 
            img->x += zoomChange;
 
859
            img->x = min(img->x + zoomChange, img->future_x);
871
860
            ready = false;
872
861
        }
873
862
    }