Ignore:
Timestamp:
Jul 21, 2001, 11:08:03 AM (24 years ago)
Author:
sandervl
Message:

wine resync

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/comctl32/pager.c

    r5416 r6380  
    4343    INT    TLbtnState; /* state of top or left btn */
    4444    INT    BRbtnState; /* state of bottom or right btn */
    45 
     45    INT    direction;  /* direction of the scroll, (e.g. PGF_SCROLLUP) */
    4646} PAGER_INFO;
    4747
     
    5252#define MIN_ARROW_HEIGHT 5
    5353
     54#define TIMERID1         1
     55#define TIMERID2         2
     56#define INITIAL_DELAY    500
     57#define REPEAT_DELAY     50
    5458
    5559/* the horizontal arrows are:
     
    170174    if (btnState == PGF_HOT)
    171175    {
    172        rc.left++, rc.top++; rc.right++, rc.bottom++;
    173        DrawEdge( hdc, &rc, EDGE_RAISED, BF_RECT);
     176       DrawEdge( hdc, &rc, BDR_RAISEDINNER, BF_RECT);
    174177       if (horz)
    175178           PAGER_DrawHorzArrow(hdc, rc, COLOR_WINDOWFRAME, topLeft);
    176179       else
    177180           PAGER_DrawVertArrow(hdc, rc, COLOR_WINDOWFRAME, topLeft);
    178        rc.left--, rc.top--; rc.right--, rc.bottom--;
    179181    }
    180182    else if (btnState == PGF_NORMAL)
     
    188190    else if (btnState == PGF_DEPRESSED)
    189191    {
    190        rc.left++, rc.top++;
    191192       DrawEdge( hdc, &rc, BDR_SUNKENOUTER, BF_RECT);
    192193       if (horz)
     
    194195       else
    195196           PAGER_DrawVertArrow(hdc, rc, COLOR_WINDOWFRAME, topLeft);
    196        rc.left--, rc.top--;
    197197    }
    198198    else if (btnState == PGF_GRAYED)
     
    211211           PAGER_DrawVertArrow(hdc, rc, COLOR_3DSHADOW, topLeft);
    212212       }
    213        rc.left--, rc.top--; rc.right--, rc.bottom--;
    214213    }
    215214
     
    478477    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
    479478    INT scrollRange = PAGER_GetScrollRange(hwnd, infoPtr);
     479    INT oldPos = infoPtr->nPos;
    480480
    481481    if ((scrollRange <= 0) || (newPos < 0))
     
    488488    TRACE("[%04x] pos=%d\n", hwnd, infoPtr->nPos);
    489489
    490     /* gray and restore btns, and if from WM_SETPOS, hide the gray btns */
    491     PAGER_UpdateBtns(hwnd, infoPtr, scrollRange, !fromBtnPress);
    492     PAGER_PositionChildWnd(hwnd, infoPtr);
     490    if (infoPtr->nPos != oldPos)
     491    {
     492        /* gray and restore btns, and if from WM_SETPOS, hide the gray btns */
     493        PAGER_UpdateBtns(hwnd, infoPtr, scrollRange, !fromBtnPress);
     494        PAGER_PositionChildWnd(hwnd, infoPtr);
     495    }
    493496
    494497    return 0;
     
    567570        delta = wndRect.bottom - wndRect.top - infoPtr->nHeight;
    568571        if (delta > infoPtr->nButtonSize)
    569             infoPtr->nHeight += 4 * infoPtr->nButtonSize / 3;
     572            infoPtr->nHeight += infoPtr->nButtonSize;
    570573        else if (delta > 0)
    571574            infoPtr->nHeight +=  infoPtr->nButtonSize / 3;
     
    594597
    595598        if (scrollRange <= 0)
     599        {
     600            infoPtr->nPos = -1;
    596601            PAGER_SetPos(hwnd, 0, FALSE);
     602        }
    597603        else
    598604        {
     
    673679                     SWP_SHOWWINDOW | SWP_NOSIZE);
    674680
     681        infoPtr->nPos = -1;
    675682        PAGER_SetPos(hwnd, 0, FALSE);
    676683    }
     
    717724        if (nmpgScroll.iScroll > 0)
    718725        {
     726            infoPtr->direction = dir;
     727
    719728            if (dir == PGF_SCROLLLEFT || dir == PGF_SCROLLUP)
    720729                PAGER_SetPos(hwnd, infoPtr->nPos - nmpgScroll.iScroll, TRUE);
     
    722731                PAGER_SetPos(hwnd, infoPtr->nPos + nmpgScroll.iScroll, TRUE);
    723732        }
     733        else
     734            infoPtr->direction = -1;
    724735    }
    725736}
     
    751762    infoPtr->TLbtnState = PGF_INVISIBLE;
    752763    infoPtr->BRbtnState = PGF_INVISIBLE;
     764    infoPtr->direction = -1;
    753765
    754766    if (dwStyle & PGS_AUTOSCROLL)
     
    981993    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
    982994
     995    KillTimer (hwnd, TIMERID1);
     996    KillTimer (hwnd, TIMERID2);
     997
    983998    TRACE("[%04x] ReleaseCapture\n", hwnd);
    984999    ReleaseCapture();
     
    10181033        repaintBtns = infoPtr->TLbtnState != PGF_DEPRESSED;
    10191034        infoPtr->TLbtnState = PGF_DEPRESSED;
     1035        SetTimer(hwnd, TIMERID1, INITIAL_DELAY, 0);
    10201036    }
    10211037    else if (hit == HTRIGHT || hit == HTBOTTOM)
     
    10231039        repaintBtns = infoPtr->BRbtnState != PGF_DEPRESSED;
    10241040        infoPtr->BRbtnState = PGF_DEPRESSED;
     1041        SetTimer(hwnd, TIMERID1, INITIAL_DELAY, 0);
    10251042    }
    10261043
     
    10591076    TRACE("[%04x]\n", hwnd);
    10601077
     1078    KillTimer (hwnd, TIMERID1);
     1079    KillTimer (hwnd, TIMERID2);
     1080
    10611081    /* make PRESSED btns NORMAL but don't hide gray btns */
    10621082    PAGER_UpdateBtns(hwnd, infoPtr, -1, FALSE);
     
    12011221            return PAGER_Paint (hwnd, wParam);
    12021222*/
     1223        case WM_TIMER:
     1224            /* if initial timer, kill it and start the repeat timer */
     1225            if (wParam == TIMERID1)
     1226            {
     1227                KillTimer(hwnd, TIMERID1);
     1228                SetTimer(hwnd, TIMERID2, REPEAT_DELAY, 0);
     1229            }
     1230
     1231            KillTimer(hwnd, TIMERID2);
     1232            if (infoPtr->direction > 0)
     1233            {
     1234                PAGER_Scroll(hwnd, infoPtr->direction);
     1235                SetTimer(hwnd, TIMERID2, REPEAT_DELAY, 0);         
     1236            }
     1237            break;
     1238
    12031239        case WM_NOTIFY:
    12041240        case WM_COMMAND:
     
    12091245            return defComCtl32ProcA(hwnd, uMsg, wParam, lParam);
    12101246#else
    1211             return DefWindowProcA(hwnd, uMsg, wParam, lParam);
     1247            return DefWindowProcA (hwnd, uMsg, wParam, lParam);
    12121248#endif
    12131249    }
Note: See TracChangeset for help on using the changeset viewer.