diff --git a/Editor/ContentBrowserWindow.cpp b/Editor/ContentBrowserWindow.cpp index 88e786a92..c67bd55ec 100644 --- a/Editor/ContentBrowserWindow.cpp +++ b/Editor/ContentBrowserWindow.cpp @@ -404,6 +404,13 @@ void ContentBrowserWindow::AddItem(const std::string& filename, const std::strin }); this->SetVisible(false); }); + button.OnRightClick([this, filename](wi::gui::EventArgs args) { + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + editor->NewScene(); + editor->Open(filename); + }); + this->SetVisible(false); + }); button.font_description.params.h_align = wi::font::WIFALIGN_CENTER; button.font_description.params.v_align = wi::font::WIFALIGN_TOP; button.font.params.size = 42; @@ -438,4 +445,5 @@ void ContentBrowserWindow::AddItem(const std::string& filename, const std::strin } } } + button.SetTooltip(button.GetTooltip() + "\n\nLeft-click: Merge into current scene\nRight-click: Open in new scene tab"); } diff --git a/WickedEngine/wiGUI.cpp b/WickedEngine/wiGUI.cpp index 8dca2a4da..e52e752b3 100644 --- a/WickedEngine/wiGUI.cpp +++ b/WickedEngine/wiGUI.cpp @@ -829,6 +829,7 @@ namespace wi::gui SetName(name); SetText(name); OnClick([](EventArgs args) {}); + OnRightClick([](EventArgs args) {}); OnDragStart([](EventArgs args) {}); OnDrag([](EventArgs args) {}); OnDragEnd([](EventArgs args) {}); @@ -881,7 +882,8 @@ namespace wi::gui Deactivate(); } - bool clicked = false; + bool leftButtonClicked = false; + bool rightButtonClicked = false; // hover the button if (pointerHitbox.intersects(hitBox)) { @@ -896,7 +898,16 @@ namespace wi::gui if (state == FOCUS) { // activate - clicked = true; + leftButtonClicked = true; + } + } + + if (wi::input::Press(wi::input::MOUSE_BUTTON_RIGHT)) + { + if (state == FOCUS) + { + // right-click + rightButtonClicked = true; } } @@ -918,7 +929,7 @@ namespace wi::gui } } - if (clicked) + if (leftButtonClicked) { EventArgs args; args.clickPos = pointerHitbox.pos; @@ -928,6 +939,14 @@ namespace wi::gui Activate(); } + if (rightButtonClicked) + { + EventArgs args; + args.clickPos = pointerHitbox.pos; + onRightClick(args); + Activate(); + } + prevPos.x = pointerHitbox.pos.x; prevPos.y = pointerHitbox.pos.y; } @@ -1051,6 +1070,10 @@ namespace wi::gui { onClick = func; } + void Button::OnRightClick(std::function func) + { + onRightClick = func; + } void Button::OnDragStart(std::function func) { onDragStart = func; diff --git a/WickedEngine/wiGUI.h b/WickedEngine/wiGUI.h index 5781d49dd..55864a097 100644 --- a/WickedEngine/wiGUI.h +++ b/WickedEngine/wiGUI.h @@ -386,6 +386,7 @@ namespace wi::gui { protected: std::function onClick; + std::function onRightClick; std::function onDragStart; std::function onDrag; std::function onDragEnd; @@ -401,6 +402,7 @@ namespace wi::gui const char* GetWidgetTypeName() const override { return "Button"; } void OnClick(std::function func); + void OnRightClick(std::function func); void OnDragStart(std::function func); void OnDrag(std::function func); void OnDragEnd(std::function func);