Operating systems, development tools, and professional services
for connected embedded systems
for connected embedded systems
![]() |
![]() |
![]() |
![]() |
PhDragEvent_t
Data associated with a drag event
Synopsis:
typedef struct Ph_ev_drag_data {
PhRect_t rect;
PhRid_t rid;
PhRect_t boundary;
PhDim_t min;
PhDim_t max;
PhDim_t step;
PhPoint_t pos;
unsigned long key_mods;
ushort_t flags;
unsigned short button_state;
} PhDragEvent_t;
Description:
The PhDragEvent_t structure defines the data associated with Ph_EV_DRAG events (see PhEvent_t). It contains at least the following members:
- rect
- A PhRect_t structure that contains the coordinates of the initial, current, or final drag rectangle, depending on the drag-event subtype value.
- rid
- The ID of the region that initiated the drag operation. Your application needs to specify the region ID when it calls PhInitDrag() to initiate the dragging operation.
- boundary
- A PhRect_t structure that contains the coordinates of the rectangle that constrains the drag operation.
- min, max
- PhDim_t structures that define the minimum and maximum sizes of the drag rectangle, as specified in the call to PhInitDrag().
- step
- A PhDim_t structure that defines the drag operation's granularity, as specified in the call to PhInitDrag().
- pos
- A PhPoint_t structure that indicates the current cursor position. This position isn't necessarily within the boundary rectangle.
- key_mods
- Your application can use the modifier keys (e.g. Shift or
Num Lock) to change the meaning of a drag event.
When a modifier key is pressed or released, it's evaluated through a table,
and the key_mods field is updated accordingly.
This evaluation is done before the drag event is sent.
The key_mods member is a combination of the following bits:
- Pk_KM_Shift
- Pk_KM_Ctrl
- Pk_KM_Alt
- Pk_KM_AltGr
- Pk_KM_Shl3
- Pk_KM_Mod6
- Pk_KM_Mod7
- Pk_KM_Mod8
- Pk_KM_Shift_Lock
- Pk_KM_Ctrl_Lock
- Pk_KM_Alt_Lock
- Pk_KM_AltGr_Lock
- Pk_KM_Shl3_Lock
- Pk_KM_Mod6_Lock
- Pk_KM_Mod7_Lock
- Pk_KM_Mod8_Lock
- Pk_KM_Caps_Lock
- Pk_KM_Num_Lock
- Pk_KM_Scroll_Lock
If the Shift key is pressed, the Shift modifier is on; if it's released, the Shift modifier is off. Because some keys occur twice on the keyboard, a key release doesn't guarantee that the corresponding modifier is off -- the matching key may still be pressed.
- unsigned short flags
- Flags that indicate which edges of the drag rectangle track the pointer.
You can OR the following values into flags:
- Ph_DRAG_NOBUTTON--Allow the drag to start, even if the user isn't holding down a button.
- Ph_DRAG_KEY_MOTION--During the drag, emit drag events with the Ph_EV_DRAG_KEY_EVENT or the Ph_EV_DRAG_MOTION_EVENT subtype (see PhEvent_t).
- Ph_DRAG_TRACK--No drag outline is drawn, and Ph_EV_DRAG_MOVE events are emitted to the initiating region. Use this flag if you want to implement your own visual interpretation of dragging operations.
- Ph_TRACK_LEFT--left edge tracks the pointer.
- Ph_TRACK_RIGHT--right edge tracks the pointer.
- Ph_TRACK_TOP--top edge tracks the pointer.
- Ph_TRACK_BOTTOM--bottom edge tracks the pointer.
- Ph_TRACK_DRAG--all edges track the pointer (the same as using all four of the above values).
- unsigned short button_state
- The current state of the pointing-device buttons (i.e. which buttons
are currently pressed):
- Ph_BUTTON_SELECT
- Ph_BUTTON_MENU
- Ph_BUTTON_ADJUST
Classification:
Photon
See also:
PhDim_t, PhEvent_t, PhInitDrag(), PhPoint_t, PhRect_t
"Dragging" in the Events chapter of the Photon Programmer's Guide
![]() |
![]() |
![]() |
![]() |

![[Previous]](../prev.gif)
![[Contents]](../contents.gif)
![[Index]](../keyword_index.gif)
![[Next]](../next.gif)