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
89 lines
1.9 KiB
C++
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
|