///////////////////////////////////////////////////////////////////////////////
// Name: wx/busycursor.h
// Purpose: Functions and class for showing/hiding busy cursor.
// Author: Vadim Zeitlin
// Created: 2025-05-08 (extracted from wx/utils.h)
// Copyright: (c) 2025 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_BUSYCURSOR_H_
#define _WX_BUSYCURSOR_H_
#include "wx/gdicmn.h"
// Set the cursor to the busy cursor for all windows
WXDLLIMPEXP_CORE void wxBeginBusyCursor(const wxCursor *cursor = wxHOURGLASS_CURSOR);
WXDLLIMPEXP_CORE void wxBeginBusyCursor(const wxCursorBundle& cursors);
// Restore cursor to normal
WXDLLIMPEXP_CORE void wxEndBusyCursor();
// true if we're between the above two calls
WXDLLIMPEXP_CORE bool wxIsBusy();
// Convenience class so we can just create a wxBusyCursor object on the stack
class WXDLLIMPEXP_CORE wxBusyCursor
{
public:
explicit wxBusyCursor(const wxCursor* cursor = wxHOURGLASS_CURSOR)
{ wxBeginBusyCursor(cursor); }
explicit wxBusyCursor(const wxCursorBundle& cursors)
{ wxBeginBusyCursor(cursors); }
~wxBusyCursor()
{ wxEndBusyCursor(); }
#if WXWIN_COMPATIBILITY_3_2
// These functions are kept only for compatibility, they were never
// available in all ports and never did anything really useful.
wxDEPRECATED_MSG("Returns invalid cursor, don't use it")
static wxCursor GetStoredCursor();
wxDEPRECATED_MSG("Returns invalid cursor, don't use it")
static wxCursor GetBusyCursor();
#endif // WXWIN_COMPATIBILITY_3_2
};
// This class only exists for compatibility, it never did anything really
// useful and now doesn't do anything at all.
class wxDEPRECATED_MSG("Does nothing, stop using it") wxBusyCursorSuspender
{
public:
wxBusyCursorSuspender() = default;
~wxBusyCursorSuspender() = default;
};
#endif // _WX_BUSYCURSOR_H_