This repository has been archived on 2023-10-09. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
blender-archive/source/blender/windowmanager/wm_cursors.h
Campbell Barton da2ba40268 UI: wait for input for operators that depend on cursor location
Support waiting for input so operators that depend on the
cursor location are usable from menus / buttons.

Use an operator type flag which the user interface code checks for,
waiting for input when run from a menu item.

This patch only supports this feature, there are no functional changes.

The motivation for this change is discoverability since some actions
were either hidden or broken when accessed from menus
(where the behavior of the operator depended on the menu location).

In general, waiting for input is *not* an efficient way to access tools,
however there are over 50 operators with a "wait_for_input" property
so this isn't introducing a new kind of interaction,
rather exposing this in a way that does not need to be hard-coded into
each operator, or having modal callbacks added for the sole purpose
of waiting for input.

Besides requiring boiler plate code using a "wait_for_input" property
has the added down-side of preventing key shortcuts from showing.
Only the menu items will enable the property,
causing them not to match key-map items.

Reviewed By: Severin

Ref D12255
2021-09-17 12:57:28 +10:00

89 lines
1.9 KiB
C++

/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
* All rights reserved.
*/
/** \file
* \ingroup wm
*/
#pragma once
struct wmEvent;
struct wmWindow;
#ifdef __cplusplus
extern "C" {
#endif
typedef enum WMCursorType {
WM_CURSOR_DEFAULT = 1,
WM_CURSOR_TEXT_EDIT,
WM_CURSOR_WAIT,
WM_CURSOR_STOP,
WM_CURSOR_EDIT,
WM_CURSOR_COPY,
WM_CURSOR_HAND,
WM_CURSOR_CROSS,
WM_CURSOR_PAINT,
WM_CURSOR_DOT,
WM_CURSOR_CROSSC,
WM_CURSOR_KNIFE,
WM_CURSOR_VERTEX_LOOP,
WM_CURSOR_PAINT_BRUSH,
WM_CURSOR_ERASER,
WM_CURSOR_EYEDROPPER,
WM_CURSOR_SWAP_AREA,
WM_CURSOR_X_MOVE,
WM_CURSOR_Y_MOVE,
WM_CURSOR_H_SPLIT,
WM_CURSOR_V_SPLIT,
WM_CURSOR_NW_ARROW,
WM_CURSOR_NS_ARROW,
WM_CURSOR_EW_ARROW,
WM_CURSOR_N_ARROW,
WM_CURSOR_S_ARROW,
WM_CURSOR_E_ARROW,
WM_CURSOR_W_ARROW,
WM_CURSOR_NSEW_SCROLL,
WM_CURSOR_NS_SCROLL,
WM_CURSOR_EW_SCROLL,
WM_CURSOR_ZOOM_IN,
WM_CURSOR_ZOOM_OUT,
WM_CURSOR_NONE,
WM_CURSOR_MUTE,
WM_CURSOR_PICK_AREA,
/* --- ALWAYS LAST ----- */
WM_CURSOR_NUM,
} WMCursorType;
void wm_init_cursor_data(void);
bool wm_cursor_arrow_move(struct wmWindow *win, const struct wmEvent *event);
#ifdef __cplusplus
}
#endif