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

View File

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