tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ListView.cpp (3798B)


      1 // Windows/Control/ListView.cpp
      2 
      3 #include "StdAfx.h"
      4 
      5 #include "ListView.h"
      6 
      7 #ifndef _UNICODE
      8 extern bool g_IsNT;
      9 #endif
     10 
     11 namespace NWindows {
     12 namespace NControl {
     13 
     14 bool CListView::CreateEx(DWORD exStyle, DWORD style,
     15      int x, int y, int width, int height,
     16      HWND parentWindow, HMENU idOrHMenu,
     17      HINSTANCE instance, LPVOID createParam)
     18 {
     19  return CWindow::CreateEx(exStyle, WC_LISTVIEW, TEXT(""), style, x, y, width,
     20      height, parentWindow, idOrHMenu, instance, createParam);
     21 }
     22 
     23 bool CListView::GetItemParam(int index, LPARAM &param) const
     24 {
     25  LVITEM item;
     26  item.iItem = index;
     27  item.iSubItem = 0;
     28  item.mask = LVIF_PARAM;
     29  bool aResult = GetItem(&item);
     30  param = item.lParam;
     31  return aResult;
     32 }
     33 
     34 int CListView::InsertColumn(int columnIndex, LPCTSTR text, int width)
     35 {
     36  LVCOLUMN ci;
     37  ci.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
     38  ci.pszText = (LPTSTR)text;
     39  ci.iSubItem = columnIndex;
     40  ci.cx = width;
     41  return InsertColumn(columnIndex, &ci);
     42 }
     43 
     44 int CListView::InsertItem(int index, LPCTSTR text)
     45 {
     46  LVITEM item;
     47  item.mask = LVIF_TEXT | LVIF_PARAM;
     48  item.iItem = index;
     49  item.lParam = index;
     50  item.pszText = (LPTSTR)text;
     51  item.iSubItem = 0;
     52  return InsertItem(&item);
     53 }
     54 
     55 int CListView::SetSubItem(int index, int subIndex, LPCTSTR text)
     56 {
     57  LVITEM item;
     58  item.mask = LVIF_TEXT;
     59  item.iItem = index;
     60  item.pszText = (LPTSTR)text;
     61  item.iSubItem = subIndex;
     62  return SetItem(&item);
     63 }
     64 
     65 #ifndef _UNICODE
     66 
     67 int CListView::InsertColumn(int columnIndex, LPCWSTR text, int width)
     68 {
     69  LVCOLUMNW ci;
     70  ci.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
     71  ci.pszText = (LPWSTR)text;
     72  ci.iSubItem = columnIndex;
     73  ci.cx = width;
     74  return InsertColumn(columnIndex, &ci);
     75 }
     76 
     77 int CListView::InsertItem(int index, LPCWSTR text)
     78 {
     79  LVITEMW item;
     80  item.mask = LVIF_TEXT | LVIF_PARAM;
     81  item.iItem = index;
     82  item.lParam = index;
     83  item.pszText = (LPWSTR)text;
     84  item.iSubItem = 0;
     85  return InsertItem(&item);
     86 }
     87 
     88 int CListView::SetSubItem(int index, int subIndex, LPCWSTR text)
     89 {
     90  LVITEMW item;
     91  item.mask = LVIF_TEXT;
     92  item.iItem = index;
     93  item.pszText = (LPWSTR)text;
     94  item.iSubItem = subIndex;
     95  return SetItem(&item);
     96 }
     97 
     98 #endif
     99 
    100 static LRESULT APIENTRY ListViewSubclassProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    101 {
    102  CWindow window(hwnd);
    103  CListView2 *w = (CListView2 *)(window.GetUserDataLongPtr());
    104  if (w == NULL)
    105    return 0;
    106  return w->OnMessage(message, wParam, lParam);
    107 }
    108 
    109 LRESULT CListView2::OnMessage(UINT message, WPARAM wParam, LPARAM lParam)
    110 {
    111  #ifndef _UNICODE
    112  if (g_IsNT)
    113    return CallWindowProcW(_origWindowProc, *this, message, wParam, lParam);
    114  else
    115  #endif
    116    return CallWindowProc(_origWindowProc, *this, message, wParam, lParam);
    117 }
    118 
    119 void CListView2::SetWindowProc()
    120 {
    121  SetUserDataLongPtr((LONG_PTR)this);
    122  #ifndef _UNICODE
    123  if (g_IsNT)
    124    _origWindowProc = (WNDPROC)SetLongPtrW(GWLP_WNDPROC, (LONG_PTR)ListViewSubclassProc);
    125  else
    126  #endif
    127    _origWindowProc = (WNDPROC)SetLongPtr(GWLP_WNDPROC, (LONG_PTR)ListViewSubclassProc);
    128 }
    129 
    130 /*
    131 LRESULT CListView3::OnMessage(UINT message, WPARAM wParam, LPARAM lParam)
    132 {
    133  LRESULT res = CListView2::OnMessage(message, wParam, lParam);
    134  if (message == WM_GETDLGCODE)
    135  {
    136    // when user presses RETURN, windows sends default (first) button command to parent dialog.
    137    // we disable this:
    138    MSG *msg = (MSG *)lParam;
    139    WPARAM key = wParam;
    140    bool change = false;
    141    if (msg)
    142    {
    143      if (msg->message == WM_KEYDOWN && msg->wParam == VK_RETURN)
    144        change = true;
    145    }
    146    else if (wParam == VK_RETURN)
    147      change = true;
    148    if (change)
    149      res |= DLGC_WANTALLKEYS;
    150  }
    151  return res;
    152 }
    153 */
    154  
    155 }}