mirror of
https://github.com/MidnightCommander/mc-old.git
synced 2026-02-02 11:11:36 -08:00
* Reformat tests with magic comma * Remove macro guards causing unstable formatting ``` find . -type file -name '*.[ch]' | xargs sed -i '' -E 's|# *endif.+//.+$|#endif|g' ``` Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
67 lines
2.4 KiB
C
67 lines
2.4 KiB
C
/** \file mouse.h
|
|
* \brief Header: Hight-level mouse API.
|
|
*
|
|
* This is a thin layer over the low-level mouse protocol in lib/tty/mouse.h.
|
|
* The latter is oblivious to the regions on the screen and is therefore a
|
|
* bit hard to use in widgets. This layer translates the low level Gpm_Event
|
|
* into something that's easy to work with in widgets.
|
|
*/
|
|
|
|
#ifndef MC__WIDGET_MOUSE_H
|
|
#define MC__WIDGET_MOUSE_H
|
|
|
|
#include "lib/tty/mouse.h" // Gpm_Event
|
|
|
|
/*** enums ***************************************************************************************/
|
|
|
|
/* Mouse messages */
|
|
typedef enum
|
|
{
|
|
/*
|
|
* Notes:
|
|
* (1) "anywhere" means "inside or outside the widget".
|
|
* (2) the mouse wheel is not considered "mouse button".
|
|
*/
|
|
MSG_MOUSE_NONE = 0,
|
|
MSG_MOUSE_DOWN = 1, // When mouse button is pressed down inside the widget.
|
|
MSG_MOUSE_UP, // When mouse button, previously pressed inside the widget, is released anywhere.
|
|
MSG_MOUSE_CLICK, // When mouse button, previously pressed inside the widget, is released inside
|
|
// the widget.
|
|
MSG_MOUSE_DRAG, // When a drag, initiated by button press inside the widget, occurs anywhere.
|
|
MSG_MOUSE_MOVE, // (Not currently implemented in MC.)
|
|
MSG_MOUSE_SCROLL_UP, // When mouse wheel is rotated away from the user.
|
|
MSG_MOUSE_SCROLL_DOWN // When mouse wheel is rotated towards the user.
|
|
} mouse_msg_t;
|
|
|
|
/*** structures declarations (and typedefs of structures)*****************************************/
|
|
|
|
/* Mouse event structure. */
|
|
typedef struct
|
|
{
|
|
mouse_msg_t msg;
|
|
|
|
int x, y; // Local to the widget.
|
|
int buttons; // Bitwise-or of: GPM_B_LEFT, GPM_B_MIDDLE, GPM_B_RIGHT
|
|
int count; // One of: GPM_SINGLE, GPM_DOUBLE, GPM_TRIPLE
|
|
|
|
// A mechanism for the callback to report back:
|
|
struct
|
|
{
|
|
gboolean abort;
|
|
gboolean repeat;
|
|
} result;
|
|
} mouse_event_t;
|
|
|
|
/*** typedefs(not structures) and defined constants **********************************************/
|
|
|
|
/*** global variables defined in .c file *********************************************************/
|
|
|
|
/*** declarations of public functions ************************************************************/
|
|
|
|
/* Translate GPM event to high-level event and process it */
|
|
int mouse_handle_event (Widget *w, Gpm_Event *event);
|
|
|
|
/*** inline functions ****************************************************************************/
|
|
|
|
#endif
|