mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-25 01:40:57 +00:00
Six fixes to the Design tab, all live-verified on :10: - Datum-plane re-pick: wxEVT_CHOICE on m_draw_plane re-planes the live sketch - Delete-feature dismisses its lingering settings card (on_delete_feature) - Revert rotation-orbit regression (no feed_bodies/reload on close_tool) - Sketch undo/delete via focus-independent CHAR_HOOK (Ctrl+Z/Y, Delete) - Fix undo hang: reset_autoedit() clears dangling auto-edit sequence - Titled value fields: each inline dim field shows its role (Width, Height, Radius, Angle, Length, Side, Distance, Major, Minor) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BVzKmX6Y1aEteit1HTXG4Q
52 lines
1.8 KiB
C++
52 lines
1.8 KiB
C++
#ifndef slic3r_SketchInlineEditor_hpp_
|
|
#define slic3r_SketchInlineEditor_hpp_
|
|
|
|
#include <functional>
|
|
#include <string>
|
|
|
|
class wxWindow;
|
|
class wxFrame;
|
|
class wxTextCtrl;
|
|
class wxStaticText;
|
|
class wxPoint;
|
|
|
|
namespace Slic3r {
|
|
namespace GUI {
|
|
|
|
// Onshape-style in-canvas value editor: a small borderless floating frame holding a
|
|
// wxTextCtrl, shown at screen coordinates over the GL canvas. A top-level frame is
|
|
// used (not a child widget) because a native child cannot be composited over the
|
|
// double-buffered wxGLCanvas under GTK3/llvmpipe — it stays invisible. Enter (or blur)
|
|
// commits the parsed number, Esc cancels. This is the single numeric-entry path for
|
|
// sketch dimensions, replacing the docked/modal value cards.
|
|
class SketchInlineEditor
|
|
{
|
|
public:
|
|
explicit SketchInlineEditor(wxWindow* parent_canvas);
|
|
|
|
// Show the editor centred on `screen_px` (absolute screen coords), pre-filled with
|
|
// `value`. on_commit(parsed) fires on Enter with a valid number; on_cancel() on Esc.
|
|
void open(const wxPoint& screen_px, double value, const std::string& title,
|
|
std::function<void(double)> on_commit,
|
|
std::function<void()> on_cancel);
|
|
void close();
|
|
void cancel(); // if open, run the registered cancel (keep-as-drawn)
|
|
bool is_open() const { return m_open; }
|
|
|
|
private:
|
|
void do_commit();
|
|
void do_cancel();
|
|
|
|
wxFrame* m_frame{nullptr};
|
|
wxTextCtrl* m_ctrl{nullptr};
|
|
wxStaticText* m_title{nullptr};
|
|
std::function<void(double)> m_commit;
|
|
std::function<void()> m_cancel;
|
|
bool m_open{false};
|
|
bool m_closing{false};
|
|
};
|
|
|
|
}} // namespace Slic3r::GUI
|
|
|
|
#endif // slic3r_SketchInlineEditor_hpp_
|