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 <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
This commit is contained in:
Humdinger
2023-03-19 08:04:40 +00:00
committed by humdinger
parent 7ee7b33be6
commit c757102870
2 changed files with 17 additions and 7 deletions
+16 -7
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();
+1
View File
@@ -30,6 +30,7 @@ private:
private:
BListView* fMessagesListView;
BButton* fClearMessagesButton;
BButton* fCopyMessagesButton;
};