Files
wxWidgets/interface/wx/busycursor.h
T
Vadim Zeitlin 1eeb494ca7 Add wxCursorBundle ctor taking wxStockCursor
This allows the existing code passing wxStockCursor instead of wxCursor
parameter to keep working with the functions taking wxCursorBundle
instead of wxCursor too and, in particular, we can keep just a single
version of wxSetCursor() instead of having two overloads (which wasn't
necessarily a problem for just this function, but is inconsistent with
the other functions taking wxCursor, notably wxDropSource ctor where
overloads really can't be used because we would need too many of them
to cover all combinations of 3 different wxCursor parameters).
2025-05-08 02:49:54 +02:00

110 lines
2.7 KiB
Objective-C

/////////////////////////////////////////////////////////////////////////////
// Name: wx/busycursor.h
// Purpose: Busy cursor-related stuff
// Author: wxWidgets team
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/** @addtogroup group_funcmacro_dialog */
///@{
/**
Changes the cursor to the given cursor for all windows in the application.
Use wxEndBusyCursor() to revert the cursor back to its previous state.
These two calls can be nested, and a counter ensures that only the outer
calls take effect.
Prefer using wxBusyCursor to using this function directly.
@see wxIsBusy(), wxBusyCursor
@header{wx/busycursor.h}
@library{wxcore}
*/
void wxBeginBusyCursor(const wxCursor* cursor = wxHOURGLASS_CURSOR);
/**
Overload of wxBeginBusyCursor() taking a cursor bundle.
This overload selects the cursor of the appropriate size from @a cursors.
As with wxSetCursor(), the busy cursor is currently not updated
automatically if the DPI or preferred cursor size changes because this is
considered to be unlikely to happen during the brief time while the busy
cursor is shown.
@since 3.3.0
*/
void wxBeginBusyCursor(const wxCursorBundle& cursors);
/**
Changes the cursor back to the original cursor, for all windows in the
application. Use with wxBeginBusyCursor().
@see wxIsBusy(), wxBusyCursor
@header{wx/busycursor.h}
@library{wxcore}
*/
void wxEndBusyCursor();
/**
Returns @true if between two wxBeginBusyCursor() and wxEndBusyCursor()
calls.
@see wxBusyCursor.
@header{wx/busycursor.h}
@library{wxcore}
*/
bool wxIsBusy();
///@}
/**
@class wxBusyCursor
This class makes it easy to tell your user that the program is temporarily
busy. Just create a wxBusyCursor object on the stack, and within the
current scope, the hourglass will be shown.
For example:
@code
wxBusyCursor wait;
for (int i = 0; i < 100000; i++)
DoACalculation();
@endcode
It works by calling wxBeginBusyCursor() in the constructor, and
wxEndBusyCursor() in the destructor.
@library{wxcore}
@category{misc}
@see wxBeginBusyCursor(), wxEndBusyCursor(), wxWindowDisabler, wxBusyInfo
*/
class wxBusyCursor
{
public:
/**
Constructs a busy cursor object, calling wxBeginBusyCursor().
*/
explicit wxBusyCursor(const wxCursor* cursor = wxHOURGLASS_CURSOR);
/**
Constructs a busy cursor object, calling wxBeginBusyCursor() with the
given cursor bundle.
@since 3.3.0
*/
explicit wxBusyCursor(const wxCursorBundle& cursors);
/**
Destroys the busy cursor object, calling wxEndBusyCursor().
*/
~wxBusyCursor();
};