Web+ console: Add "Copy" button

Adding a "Copy" button makes the feature discoverable.
If nothing is selected, copy all items.

Change-Id: I2004ceb621628e01018cc90ec80033b3797c4c02
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6212
Tested-by: Automation <automation@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
This commit is contained in:
Humdinger 2023-03-17 08:04:55 +01:00 committed by humdinger
parent 7ee7b33be6
commit c757102870
2 changed files with 17 additions and 7 deletions

View File

@ -45,14 +45,20 @@ ConsoleWindow::ConsoleWindow(BRect frame)
fMessagesListView = new BListView("Console messages", fMessagesListView = new BListView("Console messages",
B_MULTIPLE_SELECTION_LIST); B_MULTIPLE_SELECTION_LIST);
fClearMessagesButton = new BButton(B_TRANSLATE("Clear"), fClearMessagesButton = new BButton(B_TRANSLATE("Clear"),
new BMessage(CLEAR_CONSOLE_MESSAGES)); new BMessage(CLEAR_CONSOLE_MESSAGES));
fCopyMessagesButton = new BButton(B_TRANSLATE("Copy"),
new BMessage(B_COPY));
AddChild(BGroupLayoutBuilder(B_VERTICAL, 0.0) AddChild(BGroupLayoutBuilder(B_VERTICAL, 0.0)
.Add(new BScrollView("Console messages scroll", .Add(new BScrollView("Console messages scroll",
fMessagesListView, 0, true, true)) fMessagesListView, 0, true, true))
.Add(BGroupLayoutBuilder(B_HORIZONTAL, B_USE_SMALL_SPACING) .Add(BGroupLayoutBuilder(B_HORIZONTAL, B_USE_SMALL_SPACING)
.AddGlue()
.Add(fClearMessagesButton) .Add(fClearMessagesButton)
.Add(fCopyMessagesButton)
.AddGlue()
.SetInsets(0, B_USE_SMALL_SPACING, 0, 0)) .SetInsets(0, B_USE_SMALL_SPACING, 0, 0))
.SetInsets(B_USE_SMALL_SPACING, B_USE_SMALL_SPACING, .SetInsets(B_USE_SMALL_SPACING, B_USE_SMALL_SPACING,
B_USE_SMALL_SPACING, B_USE_SMALL_SPACING) B_USE_SMALL_SPACING, B_USE_SMALL_SPACING)
@ -110,15 +116,18 @@ ConsoleWindow::QuitRequested()
void void
ConsoleWindow::_CopyToClipboard() ConsoleWindow::_CopyToClipboard()
{ {
if (fMessagesListView->CurrentSelection() == -1)
return;
BString text; BString text;
int32 index; int32 index;
for (int32 i = 0; (index = fMessagesListView->CurrentSelection(i)) >= 0; if (fMessagesListView->CurrentSelection() == -1) {
i++) { for (int32 i = 0; i < fMessagesListView->CountItems(); i++) {
BStringItem* item = (BStringItem*)fMessagesListView->ItemAt(index); BStringItem* item = (BStringItem*)fMessagesListView->ItemAt(i);
text << item->Text(); text << item->Text();
}
} else {
for (int32 i = 0; (index = fMessagesListView->CurrentSelection(i)) >= 0; i++) {
BStringItem* item = (BStringItem*)fMessagesListView->ItemAt(index);
text << item->Text();
}
} }
ssize_t textLen = text.Length(); ssize_t textLen = text.Length();

View File

@ -30,6 +30,7 @@ private:
private: private:
BListView* fMessagesListView; BListView* fMessagesListView;
BButton* fClearMessagesButton; BButton* fClearMessagesButton;
BButton* fCopyMessagesButton;
}; };