summaryrefslogtreecommitdiffstats
path: root/views/controls/table/table_view.cc
diff options
context:
space:
mode:
authorpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-10 18:07:51 +0000
committerpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-10 18:07:51 +0000
commite6771600ddcb67a80854ff8c268d599b267236f3 (patch)
tree2fad16a58fc37177f9b6eeca8edb8ee545a7344a /views/controls/table/table_view.cc
parent2cdd900ff4fbd3eec06d8cce61152604be7630b5 (diff)
downloadchromium_src-e6771600ddcb67a80854ff8c268d599b267236f3.zip
chromium_src-e6771600ddcb67a80854ff8c268d599b267236f3.tar.gz
chromium_src-e6771600ddcb67a80854ff8c268d599b267236f3.tar.bz2
Remove checkbox table support, as it is unused.
BUG=none TEST=none Review URL: http://codereview.chromium.org/2009007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46829 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/controls/table/table_view.cc')
-rw-r--r--views/controls/table/table_view.cc98
1 files changed, 29 insertions, 69 deletions
diff --git a/views/controls/table/table_view.cc b/views/controls/table/table_view.cc
index a39aff0..73ea02c 100644
--- a/views/controls/table/table_view.cc
+++ b/views/controls/table/table_view.cc
@@ -26,6 +26,17 @@
#include "views/controls/native/native_view_host.h"
#include "views/controls/table/table_view_observer.h"
+namespace {
+
+int GetViewIndexFromPoint(HWND window, const gfx::Point& p) {
+ LVHITTESTINFO hit_info = {0};
+ hit_info.pt.x = p.x();
+ hit_info.pt.y = p.y();
+ return ListView_HitTest(window, &hit_info);
+}
+
+} // namespace
+
namespace views {
// Added to column width to prevent truncation.
@@ -500,15 +511,6 @@ bool TableView::GetCellColors(int model_row,
return false;
}
-static int GetViewIndexFromMouseEvent(HWND window, LPARAM l_param) {
- int x = GET_X_LPARAM(l_param);
- int y = GET_Y_LPARAM(l_param);
- LVHITTESTINFO hit_info = {0};
- hit_info.pt.x = x;
- hit_info.pt.y = y;
- return ListView_HitTest(window, &hit_info);
-}
-
// static
LRESULT CALLBACK TableView::TableWndProc(HWND window,
UINT message,
@@ -547,10 +549,8 @@ LRESULT CALLBACK TableView::TableWndProc(HWND window,
PtInRect(&client_rect, table_point)) {
// The point is over the client area of the table, handle it ourself.
// But first select the row if it isn't already selected.
- LVHITTESTINFO hit_info = {0};
- hit_info.pt.x = table_point.x;
- hit_info.pt.y = table_point.y;
- int view_index = ListView_HitTest(window, &hit_info);
+ int view_index =
+ GetViewIndexFromPoint(window, gfx::Point(table_point));
if (view_index != -1) {
int model_index = table_view->view_to_model(view_index);
if (!table_view->IsItemSelected(model_index))
@@ -611,7 +611,7 @@ LRESULT CALLBACK TableView::TableWndProc(HWND window,
case WM_MBUTTONDOWN: {
if (w_param == MK_MBUTTON) {
- int view_index = GetViewIndexFromMouseEvent(window, l_param);
+ int view_index = GetViewIndexFromPoint(window, gfx::Point(l_param));
if (view_index != -1) {
int model_index = table_view->view_to_model(view_index);
// Clear all and select the row that was middle clicked.
@@ -628,7 +628,7 @@ LRESULT CALLBACK TableView::TableWndProc(HWND window,
ReleaseCapture();
SetFocus(window);
if (select_on_mouse_up) {
- int view_index = GetViewIndexFromMouseEvent(window, l_param);
+ int view_index = GetViewIndexFromPoint(window, gfx::Point(l_param));
if (view_index != -1)
table_view->Select(table_view->view_to_model(view_index));
}
@@ -650,7 +650,7 @@ LRESULT CALLBACK TableView::TableWndProc(HWND window,
if (in_mouse_down)
return 0;
- int view_index = GetViewIndexFromMouseEvent(window, l_param);
+ int view_index = GetViewIndexFromPoint(window, gfx::Point(l_param));
if (view_index != -1) {
table_view->ignore_listview_change_ = true;
in_mouse_down = true;
@@ -791,12 +791,10 @@ HWND TableView::CreateNativeControl(HWND parent_container) {
0, 0, width(), height(),
parent_container, NULL, NULL, NULL);
- // Make the selection extend across the row.
- // Reduce overdraw/flicker artifacts by double buffering.
- DWORD list_view_style = LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER;
- if (table_type_ == CHECK_BOX_AND_TEXT)
- list_view_style |= LVS_EX_CHECKBOXES;
- ListView_SetExtendedListViewStyleEx(list_view_, 0, list_view_style);
+ // Reduce overdraw/flicker artifacts by double buffering. Make the selection
+ // extend across the row.
+ ListView_SetExtendedListViewStyle(list_view_,
+ LVS_EX_DOUBLEBUFFER | LVS_EX_FULLROWSELECT);
l10n_util::AdjustUIFontForWindow(list_view_);
// Add the columns.
@@ -1024,7 +1022,7 @@ LRESULT TableView::OnNotify(int w_param, LPNMHDR hdr) {
case LVN_ITEMCHANGED: {
// Notification that the state of an item has changed. The state
- // includes such things as whether the item is selected or checked.
+ // includes such things as whether the item is selected.
NMLISTVIEW* state_change = reinterpret_cast<NMLISTVIEW*>(hdr);
if ((state_change->uChanged & LVIF_STATE) != 0) {
if ((state_change->uOldState & LVIS_SELECTED) !=
@@ -1032,15 +1030,6 @@ LRESULT TableView::OnNotify(int w_param, LPNMHDR hdr) {
// Selected state of the item changed.
OnSelectedStateChanged();
}
- if ((state_change->uOldState & LVIS_STATEIMAGEMASK) !=
- (state_change->uNewState & LVIS_STATEIMAGEMASK)) {
- // Checked state of the item changed.
- bool is_checked =
- ((state_change->uNewState & LVIS_STATEIMAGEMASK) ==
- INDEXTOSTATEIMAGEMASK(2));
- OnCheckedStateChanged(view_to_model(state_change->iItem),
- is_checked);
- }
}
break;
}
@@ -1369,14 +1358,10 @@ void TableView::UpdateListViewCache0(int start, int length, bool add) {
}
LVITEM item = {0};
- int start_column = 0;
- int max_row = start + length;
- const bool has_groups = model_->HasGroups();
if (add) {
- if (has_groups)
- item.mask = LVIF_GROUPID;
- item.mask |= LVIF_PARAM;
- for (int i = start; i < max_row; ++i) {
+ const bool has_groups = model_->HasGroups();
+ item.mask = has_groups ? (LVIF_GROUPID | LVIF_PARAM) : LVIF_PARAM;
+ for (int i = start; i < start + length; ++i) {
item.iItem = i;
if (has_groups)
item.iGroupId = model_->GetGroupID(i);
@@ -1386,38 +1371,18 @@ void TableView::UpdateListViewCache0(int start, int length, bool add) {
}
memset(&item, 0, sizeof(LVITEM));
-
- // NOTE: I don't quite get why the iSubItem in the following is not offset
- // by 1. According to the docs it should be offset by one, but that doesn't
- // work.
- if (table_type_ == CHECK_BOX_AND_TEXT) {
- start_column = 1;
- item.iSubItem = 0;
- item.mask = LVIF_TEXT | LVIF_STATE;
- item.stateMask = LVIS_STATEIMAGEMASK;
- for (int i = start; i < max_row; ++i) {
- std::wstring text = model_->GetText(i, visible_columns_[0]);
- item.iItem = add ? i : model_to_view(i);
- item.pszText = const_cast<LPWSTR>(text.c_str());
- item.state = INDEXTOSTATEIMAGEMASK(model_->IsChecked(i) ? 2 : 1);
- ListView_SetItem(list_view_, &item);
- }
- }
-
+ item.mask =
+ (table_type_ == ICON_AND_TEXT) ? (LVIF_IMAGE | LVIF_TEXT) : LVIF_TEXT;
item.stateMask = 0;
- item.mask = LVIF_TEXT;
- if (table_type_ == ICON_AND_TEXT) {
- item.mask |= LVIF_IMAGE;
- }
- for (int j = start_column; j < column_count_; ++j) {
+ for (int j = 0; j < column_count_; ++j) {
TableColumn& col = all_columns_[visible_columns_[j]];
int max_text_width = ListView_GetStringWidth(list_view_, col.title.c_str());
- for (int i = start; i < max_row; ++i) {
+ for (int i = start; i < start + length; ++i) {
+ // Set item.
item.iItem = add ? i : model_to_view(i);
item.iSubItem = j;
std::wstring text = model_->GetText(i, visible_columns_[j]);
item.pszText = const_cast<LPWSTR>(text.c_str());
- item.iImage = 0;
ListView_SetItem(list_view_, &item);
// Compute width in px, using current font.
@@ -1472,11 +1437,6 @@ bool TableView::OnKeyDown(base::KeyboardCode virtual_keycode) {
return false; // Let the key event be processed as ususal.
}
-void TableView::OnCheckedStateChanged(int model_row, bool is_checked) {
- if (!ignore_listview_change_)
- model_->SetChecked(model_row, is_checked);
-}
-
int TableView::PreviousSelectedViewIndex(int view_index) {
DCHECK_GE(view_index, 0);
if (!list_view_ || view_index <= 0)