58 ImVec4
colorInfo = ImVec4(0.20f, 0.45f, 0.85f, 1.0f);
59 ImVec4
colorGood = ImVec4(0.16f, 0.65f, 0.22f, 1.0f);
113 using clock = std::chrono::steady_clock;
116 std::vector<Toast> local;
118 std::scoped_lock lk(
mtx_);
119 const auto now = clock::now();
127 ImGuiViewport* vp = ImGui::GetMainViewport();
134 basePos = ImVec2(vp->WorkPos.x + PAD, vp->WorkPos.y + PAD);
137 basePos = ImVec2(vp->WorkPos.x + vp->WorkSize.x - PAD, vp->WorkPos.y + PAD);
140 basePos = ImVec2(vp->WorkPos.x + PAD, vp->WorkPos.y + vp->WorkSize.y - PAD);
143 basePos = ImVec2(vp->WorkPos.x + vp->WorkSize.x - PAD, vp->WorkPos.y + vp->WorkSize.y - PAD);
152 ImVec2 pos = basePos;
155 for (
const auto& t : local)
160 bool delete_this_toast =
false;
162 ImGui::SetNextWindowViewport(vp->ID);
163 ImGui::SetNextWindowPos(pos, ImGuiCond_Always, anchor);
168 ImGui::SetNextWindowSize(ImVec2(
177 if (maxC.x <= 0.f || maxC.y <= 0.f)
179 maxC.x = (maxC.x <= 0.f) ? (vp->WorkSize.x * 0.9f) : maxC.x;
180 maxC.y = (maxC.y <= 0.f) ? (vp->WorkSize.y * 0.9f) : maxC.y;
182 ImGui::SetNextWindowSizeConstraints(minC, maxC);
185 ImGui::SetNextWindowSize(minC, ImGuiCond_Always);
189 ImGuiWindowFlags flags = ImGuiWindowFlags_NoDecoration |
190 ImGuiWindowFlags_NoSavedSettings |
191 ImGuiWindowFlags_NoNav;
193 flags |= ImGuiWindowFlags_NoFocusOnAppearing;
195 flags |= ImGuiWindowFlags_NoInputs;
197 flags |= ImGuiWindowFlags_AlwaysAutoResize;
200 ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding,
cfg_.
rounding);
203 ImGui::PushStyleColor(ImGuiCol_WindowBg, bg);
207 ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize,
cfg_.
borderSize);
210 std::string name =
"##toast-" + std::to_string(idx++);
211 if (ImGui::Begin(name.c_str(),
nullptr, flags))
214 ImGui::IsWindowHovered(ImGuiHoveredFlags_AllowWhenBlockedByActiveItem) &&
215 ImGui::IsMouseClicked(ImGuiMouseButton_Left))
217 delete_this_toast =
true;
225 ImGui::PushTextWrapPos(ImGui::GetCursorPosX() + wrapAt);
229 ImGui::TextUnformatted(t.message.c_str());
230 ImGui::PopStyleColor();
234 ImGui::PopTextWrapPos();
257 ImGui::PopStyleVar();
258 ImGui::PopStyleColor();
260 ImGui::PopStyleColor();
261 ImGui::PopStyleVar(2);
264 std::scoped_lock lk(
mtx_);
267 { return tt.id == t.id; });