From b2805409566af00bc15639494f5a186fbd2f16e6 Mon Sep 17 00:00:00 2001 From: "FWoltermann@gmail.com" Date: Fri, 9 Dec 2011 20:15:42 +0000 Subject: More indenting changes --- nGenEx/ListBox.cpp | 1592 ++++++++++++++++++++++++++-------------------------- 1 file changed, 796 insertions(+), 796 deletions(-) (limited to 'nGenEx/ListBox.cpp') diff --git a/nGenEx/ListBox.cpp b/nGenEx/ListBox.cpp index 182a438..3af31cb 100644 --- a/nGenEx/ListBox.cpp +++ b/nGenEx/ListBox.cpp @@ -1,15 +1,15 @@ /* Project nGenEx - Destroyer Studios LLC - Copyright © 1997-2004. All Rights Reserved. + Destroyer Studios LLC + Copyright © 1997-2004. All Rights Reserved. - SUBSYSTEM: nGenEx.lib - FILE: ListBox.cpp - AUTHOR: John DiCamillo + SUBSYSTEM: nGenEx.lib + FILE: ListBox.cpp + AUTHOR: John DiCamillo - OVERVIEW - ======== - ListBox ActiveWindow class + OVERVIEW + ======== + ListBox ActiveWindow class */ #include "MemDebug.h" @@ -27,13 +27,13 @@ class ListBoxCell { public: - static const char* TYPENAME() { return "ListBoxCell"; } + static const char* TYPENAME() { return "ListBoxCell"; } - ListBoxCell() : data(0), image(0) { } + ListBoxCell() : data(0), image(0) { } - Text text; - DWORD data; - Bitmap* image; + Text text; + DWORD data; + Bitmap* image; }; // +--------------------------------------------------------------------+ @@ -41,23 +41,23 @@ public: class ListBoxItem { public: - static const char* TYPENAME() { return "ListBoxItem"; } + static const char* TYPENAME() { return "ListBoxItem"; } - ListBoxItem() : data(0), image(0), selected(false), listbox(0), color(Color::White) { } - ~ListBoxItem() { subitems.destroy(); } + ListBoxItem() : data(0), image(0), selected(false), listbox(0), color(Color::White) { } + ~ListBoxItem() { subitems.destroy(); } - int operator < (const ListBoxItem& item) const; - int operator <=(const ListBoxItem& item) const; - int operator ==(const ListBoxItem& item) const; + int operator < (const ListBoxItem& item) const; + int operator <=(const ListBoxItem& item) const; + int operator ==(const ListBoxItem& item) const; - Text text; - DWORD data; - Bitmap* image; - bool selected; - Color color; - List subitems; + Text text; + DWORD data; + Bitmap* image; + bool selected; + Color color; + List subitems; - ListBox* listbox; + ListBox* listbox; }; // +--------------------------------------------------------------------+ @@ -65,159 +65,159 @@ public: class ListBoxColumn { public: - static const char* TYPENAME() { return "ListBoxColumn"; } + static const char* TYPENAME() { return "ListBoxColumn"; } - ListBoxColumn() : width(0), align(0), sort(0), color(Color::White), use_color(0), percent(0) { } + ListBoxColumn() : width(0), align(0), sort(0), color(Color::White), use_color(0), percent(0) { } - Text title; - int width; - int align; - int sort; - Color color; - int use_color; + Text title; + int width; + int align; + int sort; + Color color; + int use_color; - double percent; + double percent; }; // +--------------------------------------------------------------------+ int ListBoxItem::operator < (const ListBoxItem& item) const { - int sort_column = listbox->GetSortColumn() - 1; - int sort_criteria = listbox->GetSortCriteria(); + int sort_column = listbox->GetSortColumn() - 1; + int sort_criteria = listbox->GetSortCriteria(); - if (listbox && listbox == item.listbox) { - if (sort_column == -1) { - switch (sort_criteria) { - case ListBox::LIST_SORT_NUMERIC_DESCENDING: - return data > item.data; + if (listbox && listbox == item.listbox) { + if (sort_column == -1) { + switch (sort_criteria) { + case ListBox::LIST_SORT_NUMERIC_DESCENDING: + return data > item.data; - case ListBox::LIST_SORT_ALPHA_DESCENDING: - return text > item.text; + case ListBox::LIST_SORT_ALPHA_DESCENDING: + return text > item.text; - case ListBox::LIST_SORT_ALPHA_ASCENDING: - return text < item.text; + case ListBox::LIST_SORT_ALPHA_ASCENDING: + return text < item.text; - case ListBox::LIST_SORT_NUMERIC_ASCENDING: - return data < item.data; - } - } + case ListBox::LIST_SORT_NUMERIC_ASCENDING: + return data < item.data; + } + } - else if (sort_column >= 0 && - sort_column <= subitems.size() && - sort_column <= item.subitems.size()) { + else if (sort_column >= 0 && + sort_column <= subitems.size() && + sort_column <= item.subitems.size()) { - switch (sort_criteria) { - case ListBox::LIST_SORT_NUMERIC_DESCENDING: - return subitems[sort_column]->data > item.subitems[sort_column]->data; + switch (sort_criteria) { + case ListBox::LIST_SORT_NUMERIC_DESCENDING: + return subitems[sort_column]->data > item.subitems[sort_column]->data; - case ListBox::LIST_SORT_ALPHA_DESCENDING: - return subitems[sort_column]->text > item.subitems[sort_column]->text; + case ListBox::LIST_SORT_ALPHA_DESCENDING: + return subitems[sort_column]->text > item.subitems[sort_column]->text; - case ListBox::LIST_SORT_ALPHA_ASCENDING: - return subitems[sort_column]->text < item.subitems[sort_column]->text; + case ListBox::LIST_SORT_ALPHA_ASCENDING: + return subitems[sort_column]->text < item.subitems[sort_column]->text; - case ListBox::LIST_SORT_NUMERIC_ASCENDING: - return subitems[sort_column]->data < item.subitems[sort_column]->data; - } - } - } + case ListBox::LIST_SORT_NUMERIC_ASCENDING: + return subitems[sort_column]->data < item.subitems[sort_column]->data; + } + } + } - return 0; + return 0; } // +--------------------------------------------------------------------+ int ListBoxItem::operator <=(const ListBoxItem& item) const { - int sort_column = listbox->GetSortColumn() - 1; - int sort_criteria = listbox->GetSortCriteria(); + int sort_column = listbox->GetSortColumn() - 1; + int sort_criteria = listbox->GetSortCriteria(); - if (listbox && listbox == item.listbox) { - if (sort_column == -1) { - switch (sort_criteria) { - case ListBox::LIST_SORT_NUMERIC_DESCENDING: - return data >= item.data; + if (listbox && listbox == item.listbox) { + if (sort_column == -1) { + switch (sort_criteria) { + case ListBox::LIST_SORT_NUMERIC_DESCENDING: + return data >= item.data; - case ListBox::LIST_SORT_ALPHA_DESCENDING: - return text >= item.text; + case ListBox::LIST_SORT_ALPHA_DESCENDING: + return text >= item.text; - case ListBox::LIST_SORT_ALPHA_ASCENDING: - return text <= item.text; + case ListBox::LIST_SORT_ALPHA_ASCENDING: + return text <= item.text; - case ListBox::LIST_SORT_NUMERIC_ASCENDING: - return data <= item.data; - } - } + case ListBox::LIST_SORT_NUMERIC_ASCENDING: + return data <= item.data; + } + } - else if (sort_column >= 0 && - sort_column <= subitems.size() && - sort_column <= item.subitems.size()) { + else if (sort_column >= 0 && + sort_column <= subitems.size() && + sort_column <= item.subitems.size()) { - switch (sort_criteria) { - case ListBox::LIST_SORT_NUMERIC_DESCENDING: - return subitems[sort_column]->data >= item.subitems[sort_column]->data; + switch (sort_criteria) { + case ListBox::LIST_SORT_NUMERIC_DESCENDING: + return subitems[sort_column]->data >= item.subitems[sort_column]->data; - case ListBox::LIST_SORT_ALPHA_DESCENDING: - return subitems[sort_column]->text >= item.subitems[sort_column]->text; + case ListBox::LIST_SORT_ALPHA_DESCENDING: + return subitems[sort_column]->text >= item.subitems[sort_column]->text; - case ListBox::LIST_SORT_ALPHA_ASCENDING: - return subitems[sort_column]->text <= item.subitems[sort_column]->text; + case ListBox::LIST_SORT_ALPHA_ASCENDING: + return subitems[sort_column]->text <= item.subitems[sort_column]->text; - case ListBox::LIST_SORT_NUMERIC_ASCENDING: - return subitems[sort_column]->data <= item.subitems[sort_column]->data; - } - } - } + case ListBox::LIST_SORT_NUMERIC_ASCENDING: + return subitems[sort_column]->data <= item.subitems[sort_column]->data; + } + } + } - return 0; + return 0; } // +--------------------------------------------------------------------+ int ListBoxItem::operator == (const ListBoxItem& item) const { - int sort_column = listbox->GetSortColumn() - 1; - int sort_criteria = listbox->GetSortCriteria(); + int sort_column = listbox->GetSortColumn() - 1; + int sort_criteria = listbox->GetSortCriteria(); - if (listbox && listbox == item.listbox) { - if (sort_column == -1) { - switch (sort_criteria) { - case ListBox::LIST_SORT_NUMERIC_DESCENDING: - return data == item.data; + if (listbox && listbox == item.listbox) { + if (sort_column == -1) { + switch (sort_criteria) { + case ListBox::LIST_SORT_NUMERIC_DESCENDING: + return data == item.data; - case ListBox::LIST_SORT_ALPHA_DESCENDING: - return text == item.text; + case ListBox::LIST_SORT_ALPHA_DESCENDING: + return text == item.text; - case ListBox::LIST_SORT_ALPHA_ASCENDING: - return text == item.text; + case ListBox::LIST_SORT_ALPHA_ASCENDING: + return text == item.text; - case ListBox::LIST_SORT_NUMERIC_ASCENDING: - return data == item.data; - } - } + case ListBox::LIST_SORT_NUMERIC_ASCENDING: + return data == item.data; + } + } - else if (sort_column >= 0 && - sort_column <= subitems.size() && - sort_column <= item.subitems.size()) { + else if (sort_column >= 0 && + sort_column <= subitems.size() && + sort_column <= item.subitems.size()) { - switch (sort_criteria) { - case ListBox::LIST_SORT_NUMERIC_DESCENDING: - return subitems[sort_column]->data == item.subitems[sort_column]->data; + switch (sort_criteria) { + case ListBox::LIST_SORT_NUMERIC_DESCENDING: + return subitems[sort_column]->data == item.subitems[sort_column]->data; - case ListBox::LIST_SORT_ALPHA_DESCENDING: - return subitems[sort_column]->text == item.subitems[sort_column]->text; + case ListBox::LIST_SORT_ALPHA_DESCENDING: + return subitems[sort_column]->text == item.subitems[sort_column]->text; - case ListBox::LIST_SORT_ALPHA_ASCENDING: - return subitems[sort_column]->text == item.subitems[sort_column]->text; + case ListBox::LIST_SORT_ALPHA_ASCENDING: + return subitems[sort_column]->text == item.subitems[sort_column]->text; - case ListBox::LIST_SORT_NUMERIC_ASCENDING: - return subitems[sort_column]->data == item.subitems[sort_column]->data; - } - } - } + case ListBox::LIST_SORT_NUMERIC_ASCENDING: + return subitems[sort_column]->data == item.subitems[sort_column]->data; + } + } + } - return 0; + return 0; } // +--------------------------------------------------------------------+ @@ -227,47 +227,47 @@ static int old_cursor; // +--------------------------------------------------------------------+ ListBox::ListBox(ActiveWindow* p, int ax, int ay, int aw, int ah, DWORD aid) - : ScrollWindow(p->GetScreen(), ax, ay, aw, ah, aid, 0, p) +: ScrollWindow(p->GetScreen(), ax, ay, aw, ah, aid, 0, p) { - show_headings = false; - multiselect = false; - list_index = 0; - selcount = 0; + show_headings = false; + multiselect = false; + list_index = 0; + selcount = 0; - selected_color = Color(255, 255, 128); + selected_color = Color(255, 255, 128); - sort_column = 0; - item_style = LIST_ITEM_STYLE_PLAIN; - seln_style = LIST_ITEM_STYLE_PLAIN; + sort_column = 0; + item_style = LIST_ITEM_STYLE_PLAIN; + seln_style = LIST_ITEM_STYLE_PLAIN; - char buf[32]; - sprintf_s(buf, "ListBox %d", id); - desc = buf; + char buf[32]; + sprintf_s(buf, "ListBox %d", id); + desc = buf; } ListBox::ListBox(Screen* s, int ax, int ay, int aw, int ah, DWORD aid) - : ScrollWindow(s, ax, ay, aw, ah, aid) +: ScrollWindow(s, ax, ay, aw, ah, aid) { - show_headings = false; - multiselect = false; - list_index = 0; - selcount = 0; + show_headings = false; + multiselect = false; + list_index = 0; + selcount = 0; - selected_color = Color(255, 255, 128); + selected_color = Color(255, 255, 128); - sort_column = 0; - item_style = LIST_ITEM_STYLE_PLAIN; - seln_style = LIST_ITEM_STYLE_PLAIN; + sort_column = 0; + item_style = LIST_ITEM_STYLE_PLAIN; + seln_style = LIST_ITEM_STYLE_PLAIN; - char buf[32]; - sprintf_s(buf, "ListBox %d", id); - desc = buf; + char buf[32]; + sprintf_s(buf, "ListBox %d", id); + desc = buf; } ListBox::~ListBox() { - items.destroy(); - columns.destroy(); + items.destroy(); + columns.destroy(); } // +--------------------------------------------------------------------+ @@ -275,142 +275,142 @@ ListBox::~ListBox() void ListBox::DrawContent(const Rect& ctrl_rect) { - SizeColumns(); + SizeColumns(); - Rect item_rect = ctrl_rect; - item_rect.h = line_height; + Rect item_rect = ctrl_rect; + item_rect.h = line_height; - int h = rect.h; + int h = rect.h; - // draw headings at top, if needed: - if (show_headings) { - Color save_color = back_color; - back_color = ShadeColor(back_color, 1.3); - font->SetColor(fore_color); + // draw headings at top, if needed: + if (show_headings) { + Color save_color = back_color; + back_color = ShadeColor(back_color, 1.3); + font->SetColor(fore_color); - int max_column = columns.size()-1; - item_rect.h += HEADING_EXTRA; + int max_column = columns.size()-1; + item_rect.h += HEADING_EXTRA; - page_size = (h-item_rect.h) / (line_height + leading); + page_size = (h-item_rect.h) / (line_height + leading); - for (int column = 0; column <= max_column; column++) { - item_rect.w = GetColumnWidth(column); + for (int column = 0; column <= max_column; column++) { + item_rect.w = GetColumnWidth(column); - // draw heading button - FillRect(item_rect, back_color); - DrawStyleRect(item_rect, WIN_RAISED_FRAME); + // draw heading button + FillRect(item_rect, back_color); + DrawStyleRect(item_rect, WIN_RAISED_FRAME); - Rect title_rect = item_rect; - title_rect.Deflate(3,3); - - DrawText(GetColumnTitle(column), - 0, - title_rect, - DT_CENTER|DT_SINGLELINE); - - item_rect.x += item_rect.w; - } - - item_rect.y += item_rect.h; - back_color = save_color; - item_rect.h = line_height; - } + Rect title_rect = item_rect; + title_rect.Deflate(3,3); + + DrawText(GetColumnTitle(column), + 0, + title_rect, + DT_CENTER|DT_SINGLELINE); + + item_rect.x += item_rect.w; + } + + item_rect.y += item_rect.h; + back_color = save_color; + item_rect.h = line_height; + } - int index = 0; - ListIter iter = items; + int index = 0; + ListIter iter = items; - while (++iter && item_rect.y < h) { - ListBoxItem* item = iter.value(); + while (++iter && item_rect.y < h) { + ListBoxItem* item = iter.value(); - if (index++ >= top_index) { - // draw main item: - int column = 0; - item_rect.x = ctrl_rect.x; - item_rect.w = GetColumnWidth(column) - 2; + if (index++ >= top_index) { + // draw main item: + int column = 0; + item_rect.x = ctrl_rect.x; + item_rect.w = GetColumnWidth(column) - 2; - if (item_rect.y + item_rect.h > h) { - item_rect.h = h - item_rect.y - 1; - } + if (item_rect.y + item_rect.h > h) { + item_rect.h = h - item_rect.y - 1; + } - Color item_color = GetItemColor(index-1, 0); + Color item_color = GetItemColor(index-1, 0); - if (item->selected) { - font->SetColor(selected_color); + if (item->selected) { + font->SetColor(selected_color); - if (seln_style == LIST_ITEM_STYLE_FILLED_BOX) - FillRect(item_rect, selected_color * 0.25); + if (seln_style == LIST_ITEM_STYLE_FILLED_BOX) + FillRect(item_rect, selected_color * 0.25); - if (seln_style >= LIST_ITEM_STYLE_BOX) - DrawRect(item_rect, selected_color); - } - else { - font->SetColor(item_color); + if (seln_style >= LIST_ITEM_STYLE_BOX) + DrawRect(item_rect, selected_color); + } + else { + font->SetColor(item_color); - if (item_style == LIST_ITEM_STYLE_FILLED_BOX) - FillRect(item_rect, item_color * 0.25); + if (item_style == LIST_ITEM_STYLE_FILLED_BOX) + FillRect(item_rect, item_color * 0.25); - if (item_style >= LIST_ITEM_STYLE_BOX) - DrawRect(item_rect, item_color); - } + if (item_style >= LIST_ITEM_STYLE_BOX) + DrawRect(item_rect, item_color); + } - Rect text_rect = item_rect; + Rect text_rect = item_rect; - if (item->image && item->image->Width() > 0 && item->image->Height() > 0) { - DrawBitmap(text_rect.x, text_rect.y, text_rect.x + text_rect.w, text_rect.y + line_height, item->image); - } - else { - text_rect.Deflate(2,0); - DrawText(item->text.data(), - item->text.length(), - text_rect, - GetColumnAlign(column)|DT_SINGLELINE); - } + if (item->image && item->image->Width() > 0 && item->image->Height() > 0) { + DrawBitmap(text_rect.x, text_rect.y, text_rect.x + text_rect.w, text_rect.y + line_height, item->image); + } + else { + text_rect.Deflate(2,0); + DrawText(item->text.data(), + item->text.length(), + text_rect, + GetColumnAlign(column)|DT_SINGLELINE); + } - // draw subitems: - ListIter sub_iter = item->subitems; - while (++sub_iter) { - ListBoxCell* sub = sub_iter.value(); + // draw subitems: + ListIter sub_iter = item->subitems; + while (++sub_iter) { + ListBoxCell* sub = sub_iter.value(); - column++; - item_rect.x += item_rect.w + 2; - item_rect.w = GetColumnWidth(column) - 2; + column++; + item_rect.x += item_rect.w + 2; + item_rect.w = GetColumnWidth(column) - 2; - if (item->selected) { - if (seln_style == LIST_ITEM_STYLE_FILLED_BOX) - FillRect(item_rect, selected_color * 0.25); - - if (seln_style >= LIST_ITEM_STYLE_BOX) - DrawRect(item_rect, selected_color); - } - else { - if (item_style == LIST_ITEM_STYLE_FILLED_BOX) - FillRect(item_rect, item_color * 0.25); - - if (item_style >= LIST_ITEM_STYLE_BOX) - DrawRect(item_rect, item_color); - } - - if (item->selected) - font->SetColor(selected_color); - else - font->SetColor(GetItemColor(index-1, column)); - - Rect text_rect = item_rect; - if (sub->image && sub->image->Width() > 0 && sub->image->Height() > 0) { - DrawBitmap(text_rect.x, text_rect.y, text_rect.x + text_rect.w, text_rect.y + line_height, sub->image); - } - else { - text_rect.Deflate(2,0); - DrawText(sub->text.data(), - sub->text.length(), - text_rect, - GetColumnAlign(column)|DT_SINGLELINE); - } - } - - item_rect.y += line_height + leading; - } - } + if (item->selected) { + if (seln_style == LIST_ITEM_STYLE_FILLED_BOX) + FillRect(item_rect, selected_color * 0.25); + + if (seln_style >= LIST_ITEM_STYLE_BOX) + DrawRect(item_rect, selected_color); + } + else { + if (item_style == LIST_ITEM_STYLE_FILLED_BOX) + FillRect(item_rect, item_color * 0.25); + + if (item_style >= LIST_ITEM_STYLE_BOX) + DrawRect(item_rect, item_color); + } + + if (item->selected) + font->SetColor(selected_color); + else + font->SetColor(GetItemColor(index-1, column)); + + Rect text_rect = item_rect; + if (sub->image && sub->image->Width() > 0 && sub->image->Height() > 0) { + DrawBitmap(text_rect.x, text_rect.y, text_rect.x + text_rect.w, text_rect.y + line_height, sub->image); + } + else { + text_rect.Deflate(2,0); + DrawText(sub->text.data(), + sub->text.length(), + text_rect, + GetColumnAlign(column)|DT_SINGLELINE); + } + } + + item_rect.y += line_height + leading; + } + } } // +--------------------------------------------------------------------+ @@ -418,679 +418,679 @@ ListBox::DrawContent(const Rect& ctrl_rect) void ListBox::SizeColumns() { - ListBoxColumn* c = columns.first(); + ListBoxColumn* c = columns.first(); - if (c->percent < 0.001) { - double total = 0; + if (c->percent < 0.001) { + double total = 0; - ListIter iter = columns; - while (++iter) { - c = iter.value(); - total += c->width; - } + ListIter iter = columns; + while (++iter) { + c = iter.value(); + total += c->width; + } - iter.reset(); - while (++iter) { - c = iter.value(); - c->percent = c->width / total; - } - } + iter.reset(); + while (++iter) { + c = iter.value(); + c->percent = c->width / total; + } + } - int usable_width = rect.w; - int used = 0; + int usable_width = rect.w; + int used = 0; - if (IsScrollVisible()) { - usable_width -= SCROLL_WIDTH + 2; - } - else { - usable_width -= 3; - } + if (IsScrollVisible()) { + usable_width -= SCROLL_WIDTH + 2; + } + else { + usable_width -= 3; + } - for (int i = 0; i < columns.size(); i++) { - c = columns[i]; + for (int i = 0; i < columns.size(); i++) { + c = columns[i]; - if (i < columns.size() - 1) - c->width = (int) (c->percent * usable_width); - else - c->width = usable_width - used; + if (i < columns.size() - 1) + c->width = (int) (c->percent * usable_width); + else + c->width = usable_width - used; - used += c->width; - } + used += c->width; + } } // +--------------------------------------------------------------------+ int ListBox::NumItems() { - return items.size(); + return items.size(); } int ListBox::NumColumns() { - return columns.size(); + return columns.size(); } Text ListBox::GetItemText(int index) { - if (index >= 0 && index < items.size()) - return items[index]->text; + if (index >= 0 && index < items.size()) + return items[index]->text; - return Text(); + return Text(); } void ListBox::SetItemText(int index, const char* text) { - if (index >= 0 && index < items.size()) { - items[index]->text = text; - } + if (index >= 0 && index < items.size()) { + items[index]->text = text; + } } DWORD ListBox::GetItemData(int index) { - if (index >= 0 && index < items.size()) - return items[index]->data; + if (index >= 0 && index < items.size()) + return items[index]->data; - return 0; + return 0; } void ListBox::SetItemData(int index, DWORD data) { - if (index >= 0 && index < items.size()) { - items[index]->data = data; - } + if (index >= 0 && index < items.size()) { + items[index]->data = data; + } } Bitmap* ListBox::GetItemImage(int index) { - if (index >= 0 && index < items.size()) - return items[index]->image; + if (index >= 0 && index < items.size()) + return items[index]->image; - return 0; + return 0; } void ListBox::SetItemImage(int index, Bitmap* img) { - if (index >= 0 && index < items.size()) { - items[index]->image = img; - } + if (index >= 0 && index < items.size()) { + items[index]->image = img; + } } Color ListBox::GetItemColor(int index) { - if (index >= 0 && index < items.size()) - return items[index]->color; + if (index >= 0 && index < items.size()) + return items[index]->color; - return Color::White; + return Color::White; } void ListBox::SetItemColor(int index, Color c) { - if (index >= 0 && index < items.size()) { - items[index]->color = c; - } + if (index >= 0 && index < items.size()) { + items[index]->color = c; + } } Text ListBox::GetItemText(int index, int column) { - if (column == 0) { - return GetItemText(index); - } + if (column == 0) { + return GetItemText(index); + } - if (index >= 0 && index < items.size()) { - ListBoxItem* item = items[index]; + if (index >= 0 && index < items.size()) { + ListBoxItem* item = items[index]; - column--; - if (column >= 0 && column < item->subitems.size()) - return item->subitems[column]->text; - } + column--; + if (column >= 0 && column < item->subitems.size()) + return item->subitems[column]->text; + } - return Text(); + return Text(); } void ListBox::SetItemText(int index, int column, const char* text) { - if (column == 0) { - SetItemText(index, text); - return; - } + if (column == 0) { + SetItemText(index, text); + return; + } - if (index >= 0 && index < items.size()) { - ListBoxItem* item = items[index]; - - column--; - if (column >= 0 && column < columns.size()-1) { - while (column >= item->subitems.size()) { - ListBoxCell* cell = new(__FILE__,__LINE__) ListBoxCell; - if (cell) - item->subitems.append(cell); - } + if (index >= 0 && index < items.size()) { + ListBoxItem* item = items[index]; + + column--; + if (column >= 0 && column < columns.size()-1) { + while (column >= item->subitems.size()) { + ListBoxCell* cell = new(__FILE__,__LINE__) ListBoxCell; + if (cell) + item->subitems.append(cell); + } - item->subitems[column]->text = text; - } - } + item->subitems[column]->text = text; + } + } } DWORD ListBox::GetItemData(int index, int column) { - if (column == 0) { - return GetItemData(index); - } + if (column == 0) { + return GetItemData(index); + } - if (index >= 0 && index < items.size()) { - ListBoxItem* item = items[index]; - - column--; - if (column >= 0 && column < item->subitems.size()) - return item->subitems[column]->data; - } + if (index >= 0 && index < items.size()) { + ListBoxItem* item = items[index]; + + column--; + if (column >= 0 && column < item->subitems.size()) + return item->subitems[column]->data; + } - return 0; + return 0; } void ListBox::SetItemData(int index, int column, DWORD data) { - if (column == 0) { - SetItemData(index, data); - return; - } + if (column == 0) { + SetItemData(index, data); + return; + } - if (index >= 0 && index < items.size()) { - ListBoxItem* item = items[index]; - - column--; - if (column >= 0 && column < columns.size()-1) { - while (column >= item->subitems.size()) { - ListBoxCell* cell = new(__FILE__,__LINE__) ListBoxCell; - if (cell) - item->subitems.append(cell); - } + if (index >= 0 && index < items.size()) { + ListBoxItem* item = items[index]; + + column--; + if (column >= 0 && column < columns.size()-1) { + while (column >= item->subitems.size()) { + ListBoxCell* cell = new(__FILE__,__LINE__) ListBoxCell; + if (cell) + item->subitems.append(cell); + } - item->subitems[column]->data = data; - } - } + item->subitems[column]->data = data; + } + } } Bitmap* ListBox::GetItemImage(int index, int column) { - if (column == 0) { - return GetItemImage(index); - } + if (column == 0) { + return GetItemImage(index); + } - if (index >= 0 && index < items.size()) { - ListBoxItem* item = items[index]; - - column--; - if (column >= 0 && column < item->subitems.size()) - return item->subitems[column]->image; - } + if (index >= 0 && index < items.size()) { + ListBoxItem* item = items[index]; + + column--; + if (column >= 0 && column < item->subitems.size()) + return item->subitems[column]->image; + } - return 0; + return 0; } void ListBox::SetItemImage(int index, int column, Bitmap* img) { - if (column == 0) { - SetItemImage(index, img); - return; - } + if (column == 0) { + SetItemImage(index, img); + return; + } - if (index >= 0 && index < items.size()) { - ListBoxItem* item = items[index]; - - column--; - if (column >= 0 && column < columns.size()-1) { - while (column >= item->subitems.size()) { - ListBoxCell* cell = new(__FILE__,__LINE__) ListBoxCell; - if (cell) - item->subitems.append(cell); - } + if (index >= 0 && index < items.size()) { + ListBoxItem* item = items[index]; + + column--; + if (column >= 0 && column < columns.size()-1) { + while (column >= item->subitems.size()) { + ListBoxCell* cell = new(__FILE__,__LINE__) ListBoxCell; + if (cell) + item->subitems.append(cell); + } - item->subitems[column]->image = img; - } - } + item->subitems[column]->image = img; + } + } } int ListBox::AddItem(const char* text) { - ListBoxItem* item = new(__FILE__,__LINE__) ListBoxItem; + ListBoxItem* item = new(__FILE__,__LINE__) ListBoxItem; - if (item) { - item->text = text; - item->color = fore_color; - item->listbox = this; + if (item) { + item->text = text; + item->color = fore_color; + item->listbox = this; - items.append(item); + items.append(item); - line_count = items.size(); - list_index = items.size()-1; - } + line_count = items.size(); + list_index = items.size()-1; + } - return list_index+1; + return list_index+1; } int ListBox::AddItemWithData(const char* text, int data) { - ListBoxItem* item = new(__FILE__,__LINE__) ListBoxItem; + ListBoxItem* item = new(__FILE__,__LINE__) ListBoxItem; - if (item) { - item->text = text; - item->data = data; - item->color = fore_color; - item->listbox = this; + if (item) { + item->text = text; + item->data = data; + item->color = fore_color; + item->listbox = this; - items.append(item); + items.append(item); - line_count = items.size(); - list_index = items.size()-1; - } + line_count = items.size(); + list_index = items.size()-1; + } - return list_index+1; + return list_index+1; } int ListBox::AddImage(Bitmap* img) { - ListBoxItem* item = new(__FILE__,__LINE__) ListBoxItem; + ListBoxItem* item = new(__FILE__,__LINE__) ListBoxItem; - if (item) { - item->image = img; - item->color = fore_color; - item->listbox = this; + if (item) { + item->image = img; + item->color = fore_color; + item->listbox = this; - items.append(item); + items.append(item); - line_count = items.size(); - list_index = items.size()-1; - } + line_count = items.size(); + list_index = items.size()-1; + } - return list_index+1; + return list_index+1; } void ListBox::InsertItem(int index, const char* text) { - if (index >=0 && index < items.size()) { - ListBoxItem* item = new(__FILE__,__LINE__) ListBoxItem; + if (index >=0 && index < items.size()) { + ListBoxItem* item = new(__FILE__,__LINE__) ListBoxItem; - if (item) { - item->text = text; - item->color = fore_color; - item->listbox = this; + if (item) { + item->text = text; + item->color = fore_color; + item->listbox = this; - list_index = index; - items.insert(item, list_index); - line_count = items.size(); - } - } + list_index = index; + items.insert(item, list_index); + line_count = items.size(); + } + } } void ListBox::InsertItemWithData(int index, const char* text, int data) { - if (index >=0 && index < items.size()) { - ListBoxItem* item = new(__FILE__,__LINE__) ListBoxItem; + if (index >=0 && index < items.size()) { + ListBoxItem* item = new(__FILE__,__LINE__) ListBoxItem; - if (item) { - item->text = text; - item->data = data; - item->color = fore_color; - item->listbox = this; + if (item) { + item->text = text; + item->data = data; + item->color = fore_color; + item->listbox = this; - list_index = index; - items.insert(item, list_index); - line_count = items.size(); - } - } + list_index = index; + items.insert(item, list_index); + line_count = items.size(); + } + } } void ListBox::ClearItems() { - items.destroy(); - selcount = 0; - top_index = 0; - list_index = 0; - line_count = 0; + items.destroy(); + selcount = 0; + top_index = 0; + list_index = 0; + line_count = 0; } void ListBox::RemoveItem(int index) { - if (index >= 0 && index < items.size()) { - if (items[index]->selected) - selcount--; - items.removeIndex(index); - line_count = items.size(); - } + if (index >= 0 && index < items.size()) { + if (items[index]->selected) + selcount--; + items.removeIndex(index); + line_count = items.size(); + } } void ListBox::RemoveSelectedItems() { - if (selcount) { - ListIter item = items; - while (++item) { - if (item->selected) { - delete item.removeItem(); - } - } + if (selcount) { + ListIter item = items; + while (++item) { + if (item->selected) { + delete item.removeItem(); + } + } - line_count = items.size(); - selcount = 0; - } + line_count = items.size(); + selcount = 0; + } } void ListBox::AddColumn(const char* title, int width, int align, int sort) { - ListBoxColumn* column = new(__FILE__,__LINE__) ListBoxColumn; + ListBoxColumn* column = new(__FILE__,__LINE__) ListBoxColumn; - if (column) { - column->title = title; - column->width = width; - column->align = align; - column->sort = sort; + if (column) { + column->title = title; + column->width = width; + column->align = align; + column->sort = sort; - columns.append(column); - } + columns.append(column); + } } Text ListBox::GetColumnTitle(int index) { - if (index >= 0 && index < columns.size()) - return columns[index]->title; + if (index >= 0 && index < columns.size()) + return columns[index]->title; - return Text(); + return Text(); } void ListBox::SetColumnTitle(int index, const char* title) { - if (index >= 0 && index < columns.size()) { - columns[index]->title = title; - } + if (index >= 0 && index < columns.size()) { + columns[index]->title = title; + } } int ListBox::GetColumnWidth(int index) { - if (index >= 0 && index < columns.size()) - return columns[index]->width; + if (index >= 0 && index < columns.size()) + return columns[index]->width; - return 0; + return 0; } void ListBox::SetColumnWidth(int index, int width) { - if (index >= 0 && index < columns.size()) { - columns[index]->width = width; - } + if (index >= 0 && index < columns.size()) { + columns[index]->width = width; + } } int ListBox::GetColumnAlign(int index) { - if (index >= 0 && index < columns.size()) - return columns[index]->align; + if (index >= 0 && index < columns.size()) + return columns[index]->align; - return 0; + return 0; } void ListBox::SetColumnAlign(int index, int align) { - if (index >= 0 && index < columns.size()) { - columns[index]->align = align; - } + if (index >= 0 && index < columns.size()) { + columns[index]->align = align; + } } int ListBox::GetColumnSort(int index) { - if (index >= 0 && index < columns.size()) - return columns[index]->sort; + if (index >= 0 && index < columns.size()) + return columns[index]->sort; - return 0; + return 0; } void ListBox::SetColumnSort(int index, int sort) { - if (index >= 0 && index < columns.size()) { - columns[index]->sort = sort; - } + if (index >= 0 && index < columns.size()) { + columns[index]->sort = sort; + } } Color ListBox::GetColumnColor(int index) { - if (index >= 0 && index < columns.size()) - return columns[index]->color; + if (index >= 0 && index < columns.size()) + return columns[index]->color; - return Color::White; + return Color::White; } void ListBox::SetColumnColor(int index, Color c) { - if (index >= 0 && index < columns.size()) { - columns[index]->color = c; - columns[index]->use_color = true; - } + if (index >= 0 && index < columns.size()) { + columns[index]->color = c; + columns[index]->use_color = true; + } } Color ListBox::GetItemColor(int index, int column) { - Color c = Color::White; + Color c = Color::White; - if (index >= 0 && index < items.size()) - c = items[index]->color; + if (index >= 0 && index < items.size()) + c = items[index]->color; - if (column >= 0 && column < columns.size()) { - if (columns[column]->use_color) - c = columns[column]->color; - } + if (column >= 0 && column < columns.size()) { + if (columns[column]->use_color) + c = columns[column]->color; + } - return c; + return c; } int ListBox::GetMultiSelect() { - return multiselect; + return multiselect; } void ListBox::SetMultiSelect(int nNewValue) { - if (multiselect != nNewValue && (nNewValue == 0 || nNewValue == 1)) { - multiselect = nNewValue; - ClearSelection(); - } + if (multiselect != nNewValue && (nNewValue == 0 || nNewValue == 1)) { + multiselect = nNewValue; + ClearSelection(); + } } bool ListBox::GetShowHeadings() { - return show_headings; + return show_headings; } void ListBox::SetShowHeadings(bool nNewValue) { - if (show_headings != nNewValue) { - show_headings = nNewValue; - } + if (show_headings != nNewValue) { + show_headings = nNewValue; + } } Color ListBox::GetSelectedColor() { - return selected_color; + return selected_color; } void ListBox::SetSelectedColor(Color c) { - if (selected_color != c) { - selected_color = c; - } + if (selected_color != c) { + selected_color = c; + } } int ListBox::GetItemStyle() const { - return item_style; + return item_style; } void ListBox::SetItemStyle(int style) { - if (style >= LIST_ITEM_STYLE_PLAIN && style <= LIST_ITEM_STYLE_FILLED_BOX) { - item_style = style; - } + if (style >= LIST_ITEM_STYLE_PLAIN && style <= LIST_ITEM_STYLE_FILLED_BOX) { + item_style = style; + } } int ListBox::GetSelectedStyle() const { - return seln_style; + return seln_style; } void ListBox::SetSelectedStyle(int style) { - if (style >= LIST_ITEM_STYLE_PLAIN && style <= LIST_ITEM_STYLE_FILLED_BOX) { - seln_style = style; - } + if (style >= LIST_ITEM_STYLE_PLAIN && style <= LIST_ITEM_STYLE_FILLED_BOX) { + seln_style = style; + } } bool ListBox::IsSelected(int index) { - if (index >= 0 && index < items.size()) - return items[index]->selected; + if (index >= 0 && index < items.size()) + return items[index]->selected; - return false; + return false; } void ListBox::SetSelected(int index, bool bNewValue) { - if (index >= 0 && index < items.size()) { - if (!multiselect) - ClearSelection(); + if (index >= 0 && index < items.size()) { + if (!multiselect) + ClearSelection(); - if (items[index]->selected != bNewValue) { - items[index]->selected = bNewValue; + if (items[index]->selected != bNewValue) { + items[index]->selected = bNewValue; - if (bNewValue) { - list_index = index; - selcount++; - } - else { - selcount--; - } - } - } + if (bNewValue) { + list_index = index; + selcount++; + } + else { + selcount--; + } + } + } } void ListBox::ClearSelection() { - ListIter item = items; - while (++item) - item->selected = false; + ListIter item = items; + while (++item) + item->selected = false; - selcount = 0; + selcount = 0; } int ListBox::GetListIndex() { - return list_index; + return list_index; } int ListBox::GetLineCount() { - line_count = items.size(); - return line_count; + line_count = items.size(); + return line_count; } int ListBox::GetSelCount() { - return selcount; + return selcount; } int ListBox::GetSelection() { - for (int i = 0; i < items.size(); i++) - if (items[i]->selected) - return i; + for (int i = 0; i < items.size(); i++) + if (items[i]->selected) + return i; - return -1; + return -1; } Text ListBox::GetSelectedItem() { - int n = GetSelection(); - return GetItemText(n); + int n = GetSelection(); + return GetItemText(n); } // +--------------------------------------------------------------------+ int ListBox::GetSortColumn() { - return sort_column; + return sort_column; } void ListBox::SetSortColumn(int col_index) { - if (col_index >= 0 && col_index <= columns.size()) - sort_column = col_index; + if (col_index >= 0 && col_index <= columns.size()) + sort_column = col_index; } int ListBox::GetSortCriteria() { - return GetColumnSort(sort_column); + return GetColumnSort(sort_column); } void ListBox::SetSortCriteria(SORT sort) { - SetColumnSort(sort_column, sort); + SetColumnSort(sort_column, sort); } // +--------------------------------------------------------------------+ void ListBox::SortItems() { - if (sort_column >=0 && sort_column <= columns.size()) - items.sort(); + if (sort_column >=0 && sort_column <= columns.size()) + items.sort(); } // +--------------------------------------------------------------------+ int ListBox::IndexFromPoint(int x, int y) const { - int sel_index = -1; + int sel_index = -1; - if (show_headings) - sel_index = top_index + (y - (line_height+HEADING_EXTRA)) / (line_height + leading); + if (show_headings) + sel_index = top_index + (y - (line_height+HEADING_EXTRA)) / (line_height + leading); - else - sel_index = top_index + y / (line_height + leading); + else + sel_index = top_index + y / (line_height + leading); - return sel_index; + return sel_index; } // +--------------------------------------------------------------------+ int ListBox::OnMouseMove(int x, int y) { - bool dirty = false; + bool dirty = false; - if (captured) { - ActiveWindow* test = GetCapture(); + if (captured) { + ActiveWindow* test = GetCapture(); - if (test != this) { - captured = false; - dirty = true; - } + if (test != this) { + captured = false; + dirty = true; + } - else { - if (selecting && !dragging) { - if (dragdrop && (x < rect.x || - x > rect.x+rect.w || - y < rect.y || - y > rect.y+rect.h)) { + else { + if (selecting && !dragging) { + if (dragdrop && (x < rect.x || + x > rect.x+rect.w || + y < rect.y || + y > rect.y+rect.h)) { - dragging = true; - OnDragStart(x,y); - } - } + dragging = true; + OnDragStart(x,y); + } + } - if (scrolling == SCROLL_THUMB) { - mouse_y = y - rect.y - TRACK_START; + if (scrolling == SCROLL_THUMB) { + mouse_y = y - rect.y - TRACK_START; - int dest = (int) ((double) mouse_y/track_length * (items.size()-1)); - ScrollTo(dest); - dirty = true; - } - } - } + int dest = (int) ((double) mouse_y/track_length * (items.size()-1)); + ScrollTo(dest); + dirty = true; + } + } + } - return ActiveWindow::OnMouseMove(x,y); + return ActiveWindow::OnMouseMove(x,y); } // +--------------------------------------------------------------------+ @@ -1099,236 +1099,236 @@ static bool preselected = false; int ListBox::OnLButtonDown(int x, int y) { - if (!captured) - captured = SetCapture(); - - mouse_x = x - rect.x; - mouse_y = y - rect.y; - - int x_scroll_bar = rect.w; - - if (IsScrollVisible()) - x_scroll_bar -= SCROLL_WIDTH; - - if (mouse_x < x_scroll_bar) { - scrolling = SCROLL_NONE; - - if (show_headings && mouse_y < line_height+BORDER_WIDTH+EXTRA_WIDTH) { - int next_col_start = 0; - int max_column = columns.size()-1; - int column; - - for (column = 0; column < max_column; column++) { - next_col_start += GetColumnWidth(column); - - if (mouse_x < next_col_start) - break; - } - - sort_column = column; - - int& sort_criteria = columns[sort_column]->sort; - - if (sort_criteria != LIST_SORT_NEVER) { - if (!sort_criteria) - sort_criteria = LIST_SORT_ALPHA_DESCENDING; - else - sort_criteria = -sort_criteria; - - SortItems(); - } - } - - else { - selecting = true; - } - } - - else { - selecting = false; - - if (mouse_y < TRACK_START) { - scrolling = SCROLL_UP; - Scroll(scrolling, 1); - Button::PlaySound(Button::SND_LIST_SCROLL); - } - - else if (mouse_y > rect.h-TRACK_START) { - scrolling = SCROLL_DOWN; - if (top_index < items.size()-1) - top_index++; - Button::PlaySound(Button::SND_LIST_SCROLL); - } - - else if (mouse_y < thumb_pos) { - scrolling = SCROLL_PAGE_UP; - Scroll(scrolling, page_size); - Button::PlaySound(Button::SND_LIST_SCROLL); - } - - else if (mouse_y > thumb_pos+THUMB_HEIGHT) { - scrolling = SCROLL_PAGE_DOWN; - Scroll(scrolling, page_size); - Button::PlaySound(Button::SND_LIST_SCROLL); - } - - else { - scrolling = SCROLL_THUMB; - } - } - - if (selecting) { - list_index = IndexFromPoint(mouse_x, mouse_y); - preselected = IsSelected(list_index); - if (!multiselect || !Keyboard::KeyDown(VK_SHIFT)) - ClearSelection(); - SetSelected(list_index); - EnsureVisible(list_index); - Button::PlaySound(Button::SND_LIST_SELECT); - } - - return ActiveWindow::OnLButtonDown(x,y); + if (!captured) + captured = SetCapture(); + + mouse_x = x - rect.x; + mouse_y = y - rect.y; + + int x_scroll_bar = rect.w; + + if (IsScrollVisible()) + x_scroll_bar -= SCROLL_WIDTH; + + if (mouse_x < x_scroll_bar) { + scrolling = SCROLL_NONE; + + if (show_headings && mouse_y < line_height+BORDER_WIDTH+EXTRA_WIDTH) { + int next_col_start = 0; + int max_column = columns.size()-1; + int column; + + for (column = 0; column < max_column; column++) { + next_col_start += GetColumnWidth(column); + + if (mouse_x < next_col_start) + break; + } + + sort_column = column; + + int& sort_criteria = columns[sort_column]->sort; + + if (sort_criteria != LIST_SORT_NEVER) { + if (!sort_criteria) + sort_criteria = LIST_SORT_ALPHA_DESCENDING; + else + sort_criteria = -sort_criteria; + + SortItems(); + } + } + + else { + selecting = true; + } + } + + else { + selecting = false; + + if (mouse_y < TRACK_START) { + scrolling = SCROLL_UP; + Scroll(scrolling, 1); + Button::PlaySound(Button::SND_LIST_SCROLL); + } + + else if (mouse_y > rect.h-TRACK_START) { + scrolling = SCROLL_DOWN; + if (top_index < items.size()-1) + top_index++; + Button::PlaySound(Button::SND_LIST_SCROLL); + } + + else if (mouse_y < thumb_pos) { + scrolling = SCROLL_PAGE_UP; + Scroll(scrolling, page_size); + Button::PlaySound(Button::SND_LIST_SCROLL); + } + + else if (mouse_y > thumb_pos+THUMB_HEIGHT) { + scrolling = SCROLL_PAGE_DOWN; + Scroll(scrolling, page_size); + Button::PlaySound(Button::SND_LIST_SCROLL); + } + + else { + scrolling = SCROLL_THUMB; + } + } + + if (selecting) { + list_index = IndexFromPoint(mouse_x, mouse_y); + preselected = IsSelected(list_index); + if (!multiselect || !Keyboard::KeyDown(VK_SHIFT)) + ClearSelection(); + SetSelected(list_index); + EnsureVisible(list_index); + Button::PlaySound(Button::SND_LIST_SELECT); + } + + return ActiveWindow::OnLButtonDown(x,y); } // +--------------------------------------------------------------------+ int ListBox::OnLButtonUp(int x, int y) { - if (captured) { - mouse_x = x-rect.x; - mouse_y = y-rect.y; + if (captured) { + mouse_x = x-rect.x; + mouse_y = y-rect.y; - if (dragging) { - if (mouse_x < 0 || mouse_x > rect.w || mouse_y < 0 || mouse_y > rect.h) { - FormWindow* parent_form = (FormWindow*) form; + if (dragging) { + if (mouse_x < 0 || mouse_x > rect.w || mouse_y < 0 || mouse_y > rect.h) { + FormWindow* parent_form = (FormWindow*) form; - if (parent_form) { - ActiveWindow* drop_target = parent_form->FindControl(x,y); + if (parent_form) { + ActiveWindow* drop_target = parent_form->FindControl(x,y); - if (drop_target && drop_target->IsEnabled() && drop_target->IsShown()) - drop_target->OnDragDrop(x,y,this); - } - } - } - else if (preselected) { - if (multiselect && Keyboard::KeyDown(VK_SHIFT)) { - SetSelected(list_index, false); - Button::PlaySound(Button::SND_LIST_SELECT); - } - } + if (drop_target && drop_target->IsEnabled() && drop_target->IsShown()) + drop_target->OnDragDrop(x,y,this); + } + } + } + else if (preselected) { + if (multiselect && Keyboard::KeyDown(VK_SHIFT)) { + SetSelected(list_index, false); + Button::PlaySound(Button::SND_LIST_SELECT); + } + } - ReleaseCapture(); - captured = false; + ReleaseCapture(); + captured = false; - Mouse::SetCursor((Mouse::CURSOR) old_cursor); - } + Mouse::SetCursor((Mouse::CURSOR) old_cursor); + } - dragging = false; - selecting = false; + dragging = false; + selecting = false; - return ActiveWindow::OnLButtonUp(x,y); + return ActiveWindow::OnLButtonUp(x,y); } // +--------------------------------------------------------------------+ int ListBox::OnMouseWheel(int wheel) { - return ScrollWindow::OnMouseWheel(wheel); + return ScrollWindow::OnMouseWheel(wheel); } // +--------------------------------------------------------------------+ int ListBox::OnClick() { - int fire_select = !scrolling; + int fire_select = !scrolling; - if (scrolling == SCROLL_THUMB) - scrolling = SCROLL_NONE; + if (scrolling == SCROLL_THUMB) + scrolling = SCROLL_NONE; - if (fire_select) - return ActiveWindow::OnSelect(); - else - return ActiveWindow::OnClick(); + if (fire_select) + return ActiveWindow::OnSelect(); + else + return ActiveWindow::OnClick(); - return 0; + return 0; } // +--------------------------------------------------------------------+ int ListBox::OnKeyDown(int vk, int flags) { - if (selcount == 1 && list_index >= 0 && list_index < items.size()) { - ListBoxItem* item = items[list_index]; - - if (vk == VK_DOWN) { - if (list_index < items.size() - 1) { - item->selected = false; - list_index++; - item = items[list_index]; - item->selected = true; - OnClick(); - return ActiveWindow::OnKeyDown(vk, flags); - } - } - - else if (vk == VK_UP) { - if (list_index > 0) { - item->selected = false; - list_index--; - item = items[list_index]; - item->selected = true; - OnClick(); - return ActiveWindow::OnKeyDown(vk, flags); - } - } - } - - return ScrollWindow::OnKeyDown(vk, flags); + if (selcount == 1 && list_index >= 0 && list_index < items.size()) { + ListBoxItem* item = items[list_index]; + + if (vk == VK_DOWN) { + if (list_index < items.size() - 1) { + item->selected = false; + list_index++; + item = items[list_index]; + item->selected = true; + OnClick(); + return ActiveWindow::OnKeyDown(vk, flags); + } + } + + else if (vk == VK_UP) { + if (list_index > 0) { + item->selected = false; + list_index--; + item = items[list_index]; + item->selected = true; + OnClick(); + return ActiveWindow::OnKeyDown(vk, flags); + } + } + } + + return ScrollWindow::OnKeyDown(vk, flags); } // +--------------------------------------------------------------------+ int ListBox::OnDragStart(int x, int y) { - old_cursor = Mouse::SetCursor(Mouse::DRAG); - return ActiveWindow::OnDragStart(x,y); + old_cursor = Mouse::SetCursor(Mouse::DRAG); + return ActiveWindow::OnDragStart(x,y); } // +--------------------------------------------------------------------+ int ListBox::OnDragDrop(int x, int y, ActiveWindow* source) { - if (!dragdrop) return 0; + if (!dragdrop) return 0; - ListBox* drag_source = (ListBox*) source; + ListBox* drag_source = (ListBox*) source; - if (drag_source) { - int max_col = NumColumns(); + if (drag_source) { + int max_col = NumColumns(); - if (max_col != drag_source->NumColumns()) - max_col = 0; + if (max_col != drag_source->NumColumns()) + max_col = 0; - for (int i = 0; i < drag_source->NumItems(); i++) { - if (drag_source->IsSelected(i)) { - AddItemWithData(drag_source->GetItemText(i), - drag_source->GetItemData(i)); + for (int i = 0; i < drag_source->NumItems(); i++) { + if (drag_source->IsSelected(i)) { + AddItemWithData(drag_source->GetItemText(i), + drag_source->GetItemData(i)); - for (int c = 1; c < max_col; c++) { - SetItemText(list_index, c, drag_source->GetItemText(i,c)); - SetItemData(list_index, c, drag_source->GetItemData(i,c)); - } + for (int c = 1; c < max_col; c++) { + SetItemText(list_index, c, drag_source->GetItemText(i,c)); + SetItemData(list_index, c, drag_source->GetItemData(i,c)); + } - if (!multiselect) - ClearSelection(); + if (!multiselect) + ClearSelection(); - items[list_index]->selected = true; - selcount++; - } - } + items[list_index]->selected = true; + selcount++; + } + } - drag_source->RemoveSelectedItems(); - Button::PlaySound(Button::SND_LIST_DROP); - } + drag_source->RemoveSelectedItems(); + Button::PlaySound(Button::SND_LIST_DROP); + } - return ActiveWindow::OnDragDrop(x,y,source); + return ActiveWindow::OnDragDrop(x,y,source); } -- cgit v1.1