RichToolTips: Don't set a Timer for Tooltip but dismiss the tooltip when a mouse leave the button
This commit is contained in:
parent
6f3c8e16ad
commit
82de61b0aa
1 changed files with 23 additions and 1 deletions
|
@ -27,7 +27,11 @@
|
||||||
#include <wx/numdlg.h>
|
#include <wx/numdlg.h>
|
||||||
#include <wx/debug.h>
|
#include <wx/debug.h>
|
||||||
#include <wx/busyinfo.h>
|
#include <wx/busyinfo.h>
|
||||||
|
#ifdef _WIN32
|
||||||
#include <wx/richtooltip.h>
|
#include <wx/richtooltip.h>
|
||||||
|
#include <wx/custombgwin.h>
|
||||||
|
#include <wx/popupwin.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "libslic3r/libslic3r.h"
|
#include "libslic3r/libslic3r.h"
|
||||||
#include "libslic3r/Format/STL.hpp"
|
#include "libslic3r/Format/STL.hpp"
|
||||||
|
@ -624,6 +628,7 @@ struct Sidebar::priv
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
wxString btn_reslice_tip;
|
wxString btn_reslice_tip;
|
||||||
void show_rich_tip(const wxString& tooltip, wxButton* btn);
|
void show_rich_tip(const wxString& tooltip, wxButton* btn);
|
||||||
|
void hide_rich_tip(wxButton* btn);
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -663,9 +668,18 @@ void Sidebar::priv::show_rich_tip(const wxString& tooltip, wxButton* btn)
|
||||||
tip.SetTipKind(wxTipKind_BottomRight);
|
tip.SetTipKind(wxTipKind_BottomRight);
|
||||||
tip.SetTitleFont(wxGetApp().normal_font());
|
tip.SetTitleFont(wxGetApp().normal_font());
|
||||||
tip.SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
|
tip.SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
|
||||||
tip.SetTimeout(1200);
|
|
||||||
tip.ShowFor(btn);
|
tip.ShowFor(btn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Sidebar::priv::hide_rich_tip(wxButton* btn)
|
||||||
|
{
|
||||||
|
auto children = btn->GetChildren();
|
||||||
|
using wxRichToolTipPopup = wxCustomBackgroundWindow<wxPopupTransientWindow>;
|
||||||
|
for (auto child : children) {
|
||||||
|
if (wxRichToolTipPopup* popup = dynamic_cast<wxRichToolTipPopup*>(child))
|
||||||
|
popup->Dismiss();
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Sidebar / public
|
// Sidebar / public
|
||||||
|
@ -807,6 +821,10 @@ Sidebar::Sidebar(Plater *parent)
|
||||||
p->show_rich_tip(tooltip, *btn);
|
p->show_rich_tip(tooltip, *btn);
|
||||||
event.Skip();
|
event.Skip();
|
||||||
});
|
});
|
||||||
|
(*btn)->Bind(wxEVT_LEAVE_WINDOW, [btn, this](wxMouseEvent& event) {
|
||||||
|
p->hide_rich_tip(*btn);
|
||||||
|
event.Skip();
|
||||||
|
});
|
||||||
#else
|
#else
|
||||||
(*btn)->SetToolTip(tooltip);
|
(*btn)->SetToolTip(tooltip);
|
||||||
#endif // _WIN32
|
#endif // _WIN32
|
||||||
|
@ -874,6 +892,10 @@ Sidebar::Sidebar(Plater *parent)
|
||||||
p->show_rich_tip(p->btn_reslice_tip, p->btn_reslice);
|
p->show_rich_tip(p->btn_reslice_tip, p->btn_reslice);
|
||||||
event.Skip();
|
event.Skip();
|
||||||
});
|
});
|
||||||
|
p->btn_reslice->Bind(wxEVT_LEAVE_WINDOW, [this](wxMouseEvent& event) {
|
||||||
|
p->hide_rich_tip(p->btn_reslice);
|
||||||
|
event.Skip();
|
||||||
|
});
|
||||||
#endif // _WIN32
|
#endif // _WIN32
|
||||||
|
|
||||||
p->btn_send_gcode->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { p->plater->send_gcode(); });
|
p->btn_send_gcode->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { p->plater->send_gcode(); });
|
||||||
|
|
Loading…
Reference in a new issue