|
|
@@ -36,6 +36,8 @@
|
|
|
#include <TurboBadger/tb_tab_container.h>
|
|
|
#include <TurboBadger/tb_toggle_container.h>
|
|
|
#include <TurboBadger/tb_scroll_container.h>
|
|
|
+#include <TurboBadger/tb_menu_window.h>
|
|
|
+#include <TurboBadger/tb_popup_window.h>
|
|
|
#include <TurboBadger/image/tb_image_widget.h>
|
|
|
|
|
|
void register_tbbf_font_renderer();
|
|
|
@@ -79,6 +81,8 @@ using namespace tb;
|
|
|
#include "UISeparator.h"
|
|
|
#include "UIDimmer.h"
|
|
|
#include "UISelectDropdown.h"
|
|
|
+#include "UIMenuWindow.h"
|
|
|
+#include "UIPopupWindow.h"
|
|
|
|
|
|
#include "SystemUI/SystemUI.h"
|
|
|
#include "SystemUI/SystemUIEvents.h"
|
|
|
@@ -535,11 +539,52 @@ void UI::HandleUpdate(StringHash eventType, VariantMap& eventData)
|
|
|
exitRequested_ = false;
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ mouseStayedTime += eventData[Update::P_TIMESTEP].GetFloat();
|
|
|
+
|
|
|
+ if (mouseStayedTime >= 0.5f)
|
|
|
+ {
|
|
|
+ UIWidget* hoveredWidget = GetHoveredWidget();
|
|
|
+ if (hoveredWidget && !tooltip_ && (hoveredWidget->GetShorten() || hoveredWidget->GetTooltip().Length() > 0))
|
|
|
+ {
|
|
|
+ tooltip_ = new UIPopupWindow(context_, hoveredWidget, "tooltip");
|
|
|
+ UILayout* tooltipLayout = new UILayout(context_, UI_AXIS_Y, true);
|
|
|
+ if (hoveredWidget->GetShorten())
|
|
|
+ {
|
|
|
+ UIEditField* fullTextField = new UIEditField(context_, true);
|
|
|
+ fullTextField->SetAdaptToContentSize(true);
|
|
|
+ fullTextField->SetText(hoveredWidget->GetText());
|
|
|
+ fullTextField->SetReadOnly(true);
|
|
|
+ tooltipLayout->AddChild(fullTextField);
|
|
|
+ }
|
|
|
+ if (hoveredWidget->GetTooltip().Length() > 0)
|
|
|
+ {
|
|
|
+ UIEditField* tooltipTextField = new UIEditField(context_, true);
|
|
|
+ tooltipTextField->SetAdaptToContentSize(true);
|
|
|
+ tooltipTextField->SetText(hoveredWidget->GetTooltip());
|
|
|
+ tooltipTextField->SetReadOnly(true);
|
|
|
+ tooltipLayout->AddChild(tooltipTextField);
|
|
|
+ }
|
|
|
+ Input* input = GetSubsystem<Input>();
|
|
|
+ IntVector2 mousePosition = input->GetMousePosition();
|
|
|
+ tooltip_->AddChild(tooltipLayout);
|
|
|
+ tooltip_->Show(mousePosition.x_ + 1, mousePosition.y_ + 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (tooltip_) tooltip_->Close();
|
|
|
+ }
|
|
|
|
|
|
SendEvent(E_UIUPDATE);
|
|
|
TBMessageHandler::ProcessMessages();
|
|
|
}
|
|
|
|
|
|
+UIWidget* UI::GetHoveredWidget()
|
|
|
+{
|
|
|
+ return WrapWidget(TBWidget::hovered_widget);
|
|
|
+}
|
|
|
+
|
|
|
bool UI::IsWidgetWrapped(tb::TBWidget* widget)
|
|
|
{
|
|
|
return widgetWrap_.Contains(widget);
|
|
|
@@ -640,7 +685,6 @@ UIWidget* UI::WrapWidget(tb::TBWidget* widget)
|
|
|
return sep;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
if (widget->IsOfType<TBContainer>())
|
|
|
{
|
|
|
UIContainer* container = new UIContainer(context_, false);
|