Ignore:
Timestamp:
May 15, 2003, 4:26:27 PM (22 years ago)
Author:
sandervl
Message:

Wine resync

File:
1 edited

Legend:

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

    r9469 r10098  
    5959  INT        tabHeight;       /* height of the tab row */
    6060  INT        tabWidth;        /* width of tabs */
     61  USHORT     uHItemPadding;   /* amount of horizontal padding, in pixels */
     62  USHORT     uVItemPadding;   /* amount of vertical padding, in pixels */
    6163  HFONT      hFont;           /* handle to the current font */
    6264  HCURSOR    hcurArrow;       /* handle to the current cursor */
     
    8183 */
    8284#define SELECTED_TAB_OFFSET     2
    83 #define HORIZONTAL_ITEM_PADDING 6
    84 #define VERTICAL_ITEM_PADDING   3
    8585#define ROUND_CORNER_SIZE       2
    8686#define DISPLAY_AREA_PADDINGX   2
     
    173173              iItem, ti->mask, ti->dwState, debugstr_w(ti->pszText),
    174174              ti->iImage);
    175         TRACE("tab %d, lParam=0x%08lx, rect.left=%d, rect.top(row)=%d\n",
     175        TRACE("tab %d, lParam=0x%08lx, rect.left=%ld, rect.top(row)=%ld\n",
    176176              iItem, ti->lParam, ti->rect.left, ti->rect.top);
    177177    }
     
    259259}
    260260
     261static LRESULT
     262TAB_SetPadding (HWND hwnd, WPARAM wParam, LPARAM lParam)
     263{
     264    TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd);
     265   
     266    if (infoPtr == NULL) return 0;
     267    infoPtr->uHItemPadding=LOWORD(lParam);
     268    infoPtr->uVItemPadding=HIWORD(lParam);
     269    return 0;
     270}
     271
    261272/******************************************************************************
    262273 * TAB_InternalGetItemRect
     
    367378             0);
    368379  }
    369   TRACE("item %d tab h=%d, rect=(%d,%d)-(%d,%d)\n",
     380  TRACE("item %d tab h=%d, rect=(%ld,%ld)-(%ld,%ld)\n",
    370381        itemIndex, infoPtr->tabHeight,
    371382        itemRect->left, itemRect->top, itemRect->right, itemRect->bottom);
     
    488499  if (isVisible)
    489500  {
    490       TRACE("invalidate (%d,%d)-(%d,%d)\n",
     501      TRACE("invalidate (%ld,%ld)-(%ld,%ld)\n",
    491502            selectedRect.left,selectedRect.top,
    492503            selectedRect.right,selectedRect.bottom);
     
    987998                                          controlPos.bottom - controlPos.top,
    988999                                          hwnd,
    989                                           (HMENU)NULL,
    990                                           (HINSTANCE)NULL,
     1000                                          NULL,
     1001                                          NULL,
    9911002                                          NULL);
    9921003    }
     
    9941005    {
    9951006      SetWindowPos(infoPtr->hwndUpDown,
    996                    (HWND)NULL,
     1007                   NULL,
    9971008                   controlPos.left, controlPos.top,
    9981009                   controlPos.right - controlPos.left,
     
    11001111    /* Take the highest between font or icon */
    11011112    if (fontMetrics.tmHeight > icon_height)
    1102       item_height = fontMetrics.tmHeight;
     1113      item_height = fontMetrics.tmHeight + 2;
    11031114    else
    11041115      item_height = icon_height;
     
    11081119     * selected item + extra space for the selected item.
    11091120     */
    1110 #ifdef __WIN32OS2__
    1111     //Code below doesn't always work
    1112     infoPtr->tabHeight = item_height + 2 * VERTICAL_ITEM_PADDING +
    1113         SELECTED_TAB_OFFSET;
    1114 #else
    11151121    infoPtr->tabHeight = item_height + SELECTED_TAB_OFFSET +
    11161122                         ((lStyle & TCS_BUTTONS) ? 2 : 1) *
    1117                           VERTICAL_ITEM_PADDING;
    1118 #endif
     1123                          infoPtr->uVItemPadding;
     1124
    11191125    TRACE("tabH=%d, tmH=%ld, iconh=%d\n",
    11201126          infoPtr->tabHeight, fontMetrics.tmHeight, icon_height);
    11211127  }
    11221128
    1123   TRACE("client right=%d\n", clientRect.right);
     1129  TRACE("client right=%ld\n", clientRect.right);
    11241130
    11251131  for (curItem = 0; curItem < infoPtr->uNumItem; curItem++)
     
    11321138      infoPtr->items[curItem].rect.right = infoPtr->items[curItem].rect.left +
    11331139                                           infoPtr->tabWidth +
    1134                                            2 * HORIZONTAL_ITEM_PADDING;
     1140                                           2 * infoPtr->uHItemPadding;
    11351141    }
    11361142    else
     
    11571163      infoPtr->items[curItem].rect.right = infoPtr->items[curItem].rect.left +
    11581164                                           size.cx + icon_width +
    1159                                            num * HORIZONTAL_ITEM_PADDING;
    1160       TRACE("for <%s>, l,r=%d,%d, num=%d\n",
     1165                                           num * infoPtr->uHItemPadding;
     1166      TRACE("for <%s>, l,r=%ld,%ld, num=%d\n",
    11611167          debugstr_w(infoPtr->items[curItem].pszText),
    11621168          infoPtr->items[curItem].rect.left,
     
    11821188        infoPtr->items[curItem].rect.left = 0;
    11831189        curItemRowCount++;
    1184         TRACE("wrapping <%s>, l,r=%d,%d\n",
     1190        TRACE("wrapping <%s>, l,r=%ld,%ld\n",
    11851191            debugstr_w(infoPtr->items[curItem].pszText),
    11861192            infoPtr->items[curItem].rect.left,
     
    11921198
    11931199    TRACE("TextSize: %li\n", size.cx);
    1194     TRACE("Rect: T %i, L %i, B %i, R %i\n",
     1200    TRACE("Rect: T %li, L %li, B %li, R %li\n",
    11951201          infoPtr->items[curItem].rect.top,
    11961202          infoPtr->items[curItem].rect.left,
     
    12561262          infoPtr->items[iItm].rect.left = 0;
    12571263
    1258           TRACE("r=%d, cl=%d, cl.r=%d, iCount=%d, iRow=%d, uNumRows=%d, remTab=%d, tabPerRow=%d\n",
     1264          TRACE("r=%ld, cl=%d, cl.r=%ld, iCount=%d, iRow=%d, uNumRows=%d, remTab=%d, tabPerRow=%d\n",
    12591265              infoPtr->items[iItm].rect.right,
    12601266              curItemLeftPos, clientRect.right,
     
    13051311            curItemLeftPos = infoPtr->items[iItm].rect.right;
    13061312
    1307           TRACE("arranging <%s>, l,r=%d,%d, row=%d\n",
     1313          TRACE("arranging <%s>, l,r=%ld,%ld, row=%ld\n",
    13081314              debugstr_w(infoPtr->items[iItm].pszText),
    13091315              infoPtr->items[iItm].rect.left,
     
    13531359              infoPtr->items[iIndex].rect.right += (iCount + 1) * widthDiff;
    13541360
    1355               TRACE("adjusting 1 <%s>, l,r=%d,%d\n",
     1361              TRACE("adjusting 1 <%s>, l,r=%ld,%ld\n",
    13561362                  debugstr_w(infoPtr->items[iIndex].pszText),
    13571363                  infoPtr->items[iIndex].rect.left,
     
    13661372          infoPtr->items[iIndexStart].rect.right = clientRect.right - 4;
    13671373
    1368           TRACE("adjusting 2 <%s>, l,r=%d,%d\n",
     1374          TRACE("adjusting 2 <%s>, l,r=%ld,%ld\n",
    13691375              debugstr_w(infoPtr->items[iIndexStart].pszText),
    13701376              infoPtr->items[iIndexStart].rect.left,
     
    14831489                     comctl32_color.clrHighlight : comctl32_color.clrBtnText);
    14841490
    1485   /*
    1486    * Deflate the rectangle to acount for the padding
    1487    */
    1488   if(lStyle & TCS_VERTICAL)
    1489     InflateRect(drawRect, -VERTICAL_ITEM_PADDING, -HORIZONTAL_ITEM_PADDING);
    1490   else
    1491     InflateRect(drawRect, -HORIZONTAL_ITEM_PADDING, -VERTICAL_ITEM_PADDING);
    1492 
    14931491
    14941492  /*
     
    15121510    dis.itemID     = iItem;
    15131511    dis.itemAction = ODA_DRAWENTIRE;
     1512    dis.itemState = 0;
    15141513    if ( iItem == infoPtr->iSelected )
    1515       dis.itemState = ODS_SELECTED;
    1516     else
    1517       dis.itemState = 0;
     1514      dis.itemState |= ODS_SELECTED;
     1515    if (infoPtr->uFocus == iItem)
     1516      dis.itemState |= ODS_FOCUS;
    15181517    dis.hwndItem = hwnd;                /* */
    15191518    dis.hDC      = hdc;
    1520     dis.rcItem   = *drawRect;           /* */
     1519    CopyRect(&dis.rcItem,drawRect);
    15211520    dis.itemData = infoPtr->items[iItem].lParam;
    15221521
     
    15441543    RECT rcText;
    15451544    INT center_offset;
     1545
     1546    /*
     1547     * Deflate the rectangle to acount for the padding
     1548     */
     1549    if(lStyle & TCS_VERTICAL)
     1550      InflateRect(drawRect, -infoPtr->uVItemPadding, -infoPtr->uHItemPadding);
     1551    else
     1552      InflateRect(drawRect, -infoPtr->uHItemPadding, -infoPtr->uVItemPadding);
    15461553
    15471554    /* set rcImage to drawRect, we will use top & left in our ImageList_Draw call */
     
    15731580
    15741581      if(lStyle & TCS_VERTICAL)
    1575         center_offset = ((drawRect->bottom - drawRect->top) - (cy + HORIZONTAL_ITEM_PADDING + (rcText.right - rcText.left))) / 2;
     1582        center_offset = ((drawRect->bottom - drawRect->top) - (cy + infoPtr->uHItemPadding + (rcText.right - rcText.left))) / 2;
    15761583      else
    1577         center_offset = ((drawRect->right - drawRect->left) - (cx + HORIZONTAL_ITEM_PADDING + (rcText.right - rcText.left))) / 2;
    1578 
    1579       TRACE("for <%s>, c_o=%d, draw=(%d,%d)-(%d,%d), textlen=%d\n",
     1584        center_offset = ((drawRect->right - drawRect->left) - (cx + infoPtr->uHItemPadding + (rcText.right - rcText.left))) / 2;
     1585
     1586      TRACE("for <%s>, c_o=%d, draw=(%ld,%ld)-(%ld,%ld), textlen=%ld\n",
    15801587          debugstr_w(infoPtr->items[iItem].pszText), center_offset,
    15811588          drawRect->left, drawRect->top, drawRect->right, drawRect->bottom,
     
    15881595                                             /* right side of the tab, but the image still uses the left as its x position */
    15891596                                             /* this keeps the image always drawn off of the same side of the tab */
    1590         drawRect->top = rcImage.top + (cx + HORIZONTAL_ITEM_PADDING);
     1597        drawRect->top = rcImage.top + (cx + infoPtr->uHItemPadding);
    15911598      }
    15921599      else if(lStyle & TCS_VERTICAL)
     
    15941601        rcImage.top = drawRect->bottom - cy - center_offset;
    15951602        rcImage.left--;
    1596         drawRect->bottom = rcImage.top - HORIZONTAL_ITEM_PADDING;
     1603        drawRect->bottom = rcImage.top - infoPtr->uHItemPadding;
    15971604      }
    15981605      else /* normal style, whether TCS_BOTTOM or not */
    15991606      {
    16001607        rcImage.left = drawRect->left + center_offset + 3;
    1601         drawRect->left = rcImage.left + cx + HORIZONTAL_ITEM_PADDING;
     1608        drawRect->left = rcImage.left + cx + infoPtr->uHItemPadding;
    16021609        rcImage.top -= (lStyle & TCS_BOTTOM) ? 2 : 1;
    16031610      }
    16041611
    1605       TRACE("drawing image=%d, left=%d, top=%d\n",
     1612      TRACE("drawing image=%d, left=%ld, top=%ld\n",
    16061613            infoPtr->items[iItem].iImage, rcImage.left, rcImage.top-1);
    16071614      ImageList_Draw
     
    18611868          r.left += (1-ZZ);
    18621869
    1863           TRACE("<left> item=%d, fill=(%d,%d)-(%d,%d), edge=(%d,%d)-(%d,%d)\n",
     1870          TRACE("<left> item=%d, fill=(%ld,%ld)-(%ld,%ld), edge=(%ld,%ld)-(%ld,%ld)\n",
    18641871                iItem,
    18651872                fillRect.left,fillRect.top,fillRect.right,fillRect.bottom,
     
    19051912          fillRect.right += (1-ZZ);
    19061913
    1907           TRACE("<left> item=%d, fill=(%d,%d)-(%d,%d), edge=(%d,%d)-(%d,%d)\n",
     1914          TRACE("<left> item=%d, fill=(%ld,%ld)-(%ld,%ld), edge=(%ld,%ld)-(%ld,%ld)\n",
    19081915                iItem,
    19091916                fillRect.left,fillRect.top,fillRect.right,fillRect.bottom,
     
    19621969          r.top -= ZZ;
    19631970
    1964           TRACE("<bottom> item=%d, fill=(%d,%d)-(%d,%d), edge=(%d,%d)-(%d,%d)\n",
     1971          TRACE("<bottom> item=%d, fill=(%ld,%ld)-(%ld,%ld), edge=(%ld,%ld)-(%ld,%ld)\n",
    19651972                iItem,
    19661973                fillRect.left,fillRect.top,fillRect.right,fillRect.bottom,
     
    20072014          fillRect.bottom += (1-ZZ);
    20082015
    2009           TRACE("<top> item=%d, fill=(%d,%d)-(%d,%d), edge=(%d,%d)-(%d,%d)\n",
     2016          TRACE("<top> item=%d, fill=(%ld,%ld)-(%ld,%ld), edge=(%ld,%ld)-(%ld,%ld)\n",
    20102017                iItem,
    20112018                fillRect.left,fillRect.top,fillRect.right,fillRect.bottom,
     
    21022109  }
    21032110
    2104   TRACE("border=(%d,%d)-(%d,%d)\n",
     2111  TRACE("border=(%ld,%ld)-(%ld,%ld)\n",
    21052112        rect.left, rect.top, rect.right, rect.bottom);
    21062113
     
    23192326  TAB_INFO* infoPtr)
    23202327{
    2321   RECT clientRect;
     2328  RECT clientRect, r;
    23222329  DWORD lStyle = GetWindowLongA(hwnd, GWL_STYLE);
    23232330  INT lastRow = infoPtr->uNumRows - 1;
     
    23532360                      ((lStyle & TCS_BUTTONS) ? lastRow * BUTTON_SPACINGY : 0) + 2;
    23542361  }
    2355 
    2356   TRACE("invalidate (%d,%d)-(%d,%d)\n",
     2362 
     2363  /* Punch out the updown control */
     2364  if (infoPtr->needsScrolling && (clientRect.right > 0)) {
     2365    GetClientRect(infoPtr->hwndUpDown, &r);
     2366    clientRect.right = clientRect.right - (r.right - r.left);
     2367  }
     2368 
     2369  TRACE("invalidate (%ld,%ld)-(%ld,%ld)\n",
    23572370        clientRect.left,clientRect.top,
    23582371        clientRect.right,clientRect.bottom);
     2372 
    23592373  InvalidateRect(hwnd, &clientRect, TRUE);
    23602374}
     
    23682382  hdc = wParam== 0 ? BeginPaint (hwnd, &ps) : (HDC)wParam;
    23692383
    2370   TRACE("erase %d, rect=(%d,%d)-(%d,%d)\n",
     2384  TRACE("erase %d, rect=(%ld,%ld)-(%ld,%ld)\n",
    23712385        ps.fErase,
    23722386        ps.rcPaint.left,ps.rcPaint.top,ps.rcPaint.right,ps.rcPaint.bottom);
     
    23922406
    23932407  GetClientRect (hwnd, &rect);
    2394   TRACE("Rect: %p T %i, L %i, B %i, R %i\n", hwnd,
     2408  TRACE("Rect: %p T %li, L %li, B %li, R %li\n", hwnd,
    23952409        rect.top, rect.left, rect.bottom, rect.right);
    23962410
     
    24672481
    24682482  GetClientRect (hwnd, &rect);
    2469   TRACE("Rect: %p T %i, L %i, B %i, R %i\n", hwnd,
     2483  TRACE("Rect: %p T %li, L %li, B %li, R %li\n", hwnd,
    24702484        rect.top, rect.left, rect.bottom, rect.right);
    24712485
     
    25432557  {
    25442558    lResult = MAKELONG(infoPtr->tabWidth, infoPtr->tabHeight);
    2545     infoPtr->tabWidth = (INT)LOWORD(lParam);
    2546     infoPtr->tabHeight = (INT)HIWORD(lParam);
     2559    /* UNDOCUMENTED: If requested Width or Height is 0 this means that program wants to use default. */   
     2560    if (LOWORD(lParam)) infoPtr->tabWidth = (INT)LOWORD(lParam);
     2561    if (HIWORD(lParam)) infoPtr->tabHeight = (INT)HIWORD(lParam);
    25472562    TRACE("was h=%d,w=%d, now h=%d,w=%d\n",
    25482563          HIWORD(lResult), LOWORD(lResult),
     
    28992914  infoPtr->uNumItem        = 0;
    29002915  infoPtr->uNumRows        = 0;
     2916  infoPtr->uHItemPadding   = 6;
     2917  infoPtr->uVItemPadding   = 3;
    29012918  infoPtr->hFont           = 0;
    29022919  infoPtr->items           = 0;
     
    29592976  infoPtr->tabHeight = fontMetrics.tmHeight + SELECTED_TAB_OFFSET +
    29602977                       ((dwStyle & TCS_BUTTONS) ? 2 : 1) *
    2961                         VERTICAL_ITEM_PADDING;
     2978                        infoPtr->uVItemPadding;
    29622979
    29632980  /* Initialize the width of a tab. */
     
    30733090
    30743091    case TCM_SETPADDING:
    3075       FIXME("Unimplemented msg TCM_SETPADDING\n");
    3076       return 0;
     3092      return TAB_SetPadding (hwnd, wParam, lParam);
    30773093
    30783094    case TCM_GETROWCOUNT:
     
    32023218  wndClass.cbWndExtra    = sizeof(TAB_INFO *);
    32033219  wndClass.hCursor       = LoadCursorA (0, IDC_ARROWA);
    3204   wndClass.hbrBackground = (HBRUSH)NULL;
     3220  wndClass.hbrBackground = NULL;
    32053221  wndClass.lpszClassName = WC_TABCONTROLA;
    32063222
     
    32123228TAB_Unregister (void)
    32133229{
    3214     UnregisterClassA (WC_TABCONTROLA, (HINSTANCE)NULL);
    3215 }
     3230    UnregisterClassA (WC_TABCONTROLA, NULL);
     3231}
Note: See TracChangeset for help on using the changeset viewer.