rofi
1.5.4
widget.h
Go to the documentation of this file.
1
/*
2
* rofi
3
*
4
* MIT/X11 License
5
* Copyright © 2013-2017 Qball Cow <qball@gmpclient.org>
6
*
7
* Permission is hereby granted, free of charge, to any person obtaining
8
* a copy of this software and associated documentation files (the
9
* "Software"), to deal in the Software without restriction, including
10
* without limitation the rights to use, copy, modify, merge, publish,
11
* distribute, sublicense, and/or sell copies of the Software, and to
12
* permit persons to whom the Software is furnished to do so, subject to
13
* the following conditions:
14
*
15
* The above copyright notice and this permission notice shall be
16
* included in all copies or substantial portions of the Software.
17
*
18
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
*
26
*/
27
28
#ifndef ROFI_WIDGET_H
29
#define ROFI_WIDGET_H
30
#include <glib.h>
31
#include <cairo.h>
32
#include <xcb/xcb.h>
33
#include <xcb/xproto.h>
34
#include "
keyb.h
"
51
typedef
struct
_widget
widget
;
52
56
typedef
enum
57
{
59
WIDGET_TYPE_UNKNOWN
,
61
WIDGET_TYPE_LISTVIEW
=
SCOPE_MOUSE_LISTVIEW
,
63
WIDGET_TYPE_LISTVIEW_ELEMENT
=
SCOPE_MOUSE_LISTVIEW_ELEMENT
,
65
WIDGET_TYPE_EDITBOX
=
SCOPE_MOUSE_EDITBOX
,
67
WIDGET_TYPE_SCROLLBAR
=
SCOPE_MOUSE_SCROLLBAR
,
69
WIDGET_TYPE_MODE_SWITCHER
=
SCOPE_MOUSE_MODE_SWITCHER
,
71
WIDGET_TYPE_TEXTBOX_TEXT
,
72
}
WidgetType
;
73
77
typedef
enum
78
{
80
WIDGET_TRIGGER_ACTION_RESULT_IGNORED
,
82
WIDGET_TRIGGER_ACTION_RESULT_HANDLED
,
84
WIDGET_TRIGGER_ACTION_RESULT_GRAB_MOTION_BEGIN
,
86
WIDGET_TRIGGER_ACTION_RESULT_GRAB_MOTION_END
,
87
}
WidgetTriggerActionResult
;
88
99
typedef
widget
* ( *widget_find_mouse_target_cb )(
widget
*
widget
,
WidgetType
type
, gint
x
, gint
y
);
100
112
typedef
WidgetTriggerActionResult
( *
widget_trigger_action_cb
)(
widget
*
widget
, guint action, gint
x
, gint
y
,
void
*user_data );
113
115
#define WIDGET( a ) ( (widget *) ( a ) )
116
126
int
widget_intersect
(
const
widget
*
widget
,
int
x
,
int
y
);
127
135
void
widget_move
(
widget
*
widget
,
short
x
,
short
y
);
136
143
WidgetType
widget_type
(
widget
*
widget
);
144
151
gboolean
widget_enabled
(
widget
*
widget
);
157
void
widget_disable
(
widget
*
widget
);
163
void
widget_enable
(
widget
*
widget
);
164
171
void
widget_draw
(
widget
*
widget
, cairo_t *d );
172
178
void
widget_free
(
widget
*wid );
179
187
void
widget_resize
(
widget
*
widget
,
short
w
,
short
h
);
188
194
int
widget_get_height
(
widget
*
widget
);
195
201
int
widget_get_width
(
widget
*
widget
);
202
208
int
widget_get_y_pos
(
widget
*
widget
);
209
215
int
widget_get_x_pos
(
widget
*
widget
);
216
224
void
widget_xy_to_relative
(
widget
*
widget
, gint *
x
, gint *
y
);
225
232
void
widget_update
(
widget
*
widget
);
239
void
widget_queue_redraw
(
widget
*wid );
245
gboolean
widget_need_redraw
(
widget
*wid );
246
257
widget
*
widget_find_mouse_target
(
widget
*wid,
WidgetType
type
, gint
x
, gint
y
);
258
270
WidgetTriggerActionResult
widget_trigger_action
(
widget
*wid, guint action, gint
x
, gint
y
);
271
279
void
widget_set_trigger_action_handler
(
widget
*wid,
widget_trigger_action_cb
cb,
void
*cb_data );
280
290
gboolean
widget_motion_notify
(
widget
*wid, gint
x
, gint
y
);
291
299
int
widget_get_desired_height
(
widget
*wid );
300
308
int
widget_get_desired_width
(
widget
*wid );
316
int
widget_get_absolute_xpos
(
widget
*wid );
324
int
widget_get_absolute_ypos
(
widget
*wid );
325
327
#endif // ROFI_WIDGET_H
widget_xy_to_relative
void widget_xy_to_relative(widget *widget, gint *x, gint *y)
Definition:
widget.c:413
WidgetType
WidgetType
Definition:
widget.h:57
WIDGET_TYPE_LISTVIEW
@ WIDGET_TYPE_LISTVIEW
Definition:
widget.h:61
widget_set_trigger_action_handler
void widget_set_trigger_action_handler(widget *wid, widget_trigger_action_cb cb, void *cb_data)
Definition:
widget.c:479
WIDGET_TYPE_UNKNOWN
@ WIDGET_TYPE_UNKNOWN
Definition:
widget.h:59
widget
struct _widget widget
Definition:
widget.h:51
WIDGET_TRIGGER_ACTION_RESULT_GRAB_MOTION_END
@ WIDGET_TRIGGER_ACTION_RESULT_GRAB_MOTION_END
Definition:
widget.h:86
widget_get_height
int widget_get_height(widget *widget)
Definition:
widget.c:378
SCOPE_MOUSE_SCROLLBAR
@ SCOPE_MOUSE_SCROLLBAR
Definition:
keyb.h:50
widget_get_width
int widget_get_width(widget *widget)
Definition:
widget.c:388
widget_find_mouse_target
widget * widget_find_mouse_target(widget *wid, WidgetType type, gint x, gint y)
Definition:
widget.c:453
widget_update
void widget_update(widget *widget)
Definition:
widget.c:422
WIDGET_TRIGGER_ACTION_RESULT_GRAB_MOTION_BEGIN
@ WIDGET_TRIGGER_ACTION_RESULT_GRAB_MOTION_BEGIN
Definition:
widget.h:84
widget_free
void widget_free(widget *wid)
Definition:
widget.c:365
SCOPE_MOUSE_LISTVIEW_ELEMENT
@ SCOPE_MOUSE_LISTVIEW_ELEMENT
Definition:
keyb.h:46
WIDGET_TYPE_SCROLLBAR
@ WIDGET_TYPE_SCROLLBAR
Definition:
widget.h:67
widget_get_desired_width
int widget_get_desired_width(widget *wid)
Definition:
widget.c:577
_widget::y
short y
Definition:
widget-internal.h:42
SCOPE_MOUSE_MODE_SWITCHER
@ SCOPE_MOUSE_MODE_SWITCHER
Definition:
keyb.h:51
widget_queue_redraw
void widget_queue_redraw(widget *wid)
Definition:
widget.c:432
keyb.h
_widget::x
short x
Definition:
widget-internal.h:40
widget_get_absolute_xpos
int widget_get_absolute_xpos(widget *wid)
Definition:
widget.c:588
widget_motion_notify
gboolean widget_motion_notify(widget *wid, gint x, gint y)
Definition:
widget.c:488
widget_get_absolute_ypos
int widget_get_absolute_ypos(widget *wid)
Definition:
widget.c:599
widget_disable
void widget_disable(widget *widget)
Definition:
widget.c:133
SCOPE_MOUSE_EDITBOX
@ SCOPE_MOUSE_EDITBOX
Definition:
keyb.h:49
widget_intersect
int widget_intersect(const widget *widget, int x, int y)
Definition:
widget.c:70
widget_get_x_pos
int widget_get_x_pos(widget *widget)
Definition:
widget.c:398
widget_move
void widget_move(widget *widget, short x, short y)
Definition:
widget.c:100
WIDGET_TYPE_LISTVIEW_ELEMENT
@ WIDGET_TYPE_LISTVIEW_ELEMENT
Definition:
widget.h:63
_widget::h
short h
Definition:
widget-internal.h:46
WIDGET_TYPE_EDITBOX
@ WIDGET_TYPE_EDITBOX
Definition:
widget.h:65
widget_get_y_pos
int widget_get_y_pos(widget *widget)
Definition:
widget.c:405
WIDGET_TYPE_MODE_SWITCHER
@ WIDGET_TYPE_MODE_SWITCHER
Definition:
widget.h:69
_widget::w
short w
Definition:
widget-internal.h:44
widget_trigger_action
WidgetTriggerActionResult widget_trigger_action(widget *wid, guint action, gint x, gint y)
Definition:
widget.c:471
widget_enable
void widget_enable(widget *widget)
Definition:
widget.c:124
widget_trigger_action_cb
WidgetTriggerActionResult(* widget_trigger_action_cb)(widget *widget, guint action, gint x, gint y, void *user_data)
Definition:
widget.h:112
widget_draw
void widget_draw(widget *widget, cairo_t *d)
Definition:
widget.c:142
SCOPE_MOUSE_LISTVIEW
@ SCOPE_MOUSE_LISTVIEW
Definition:
keyb.h:45
widget_get_desired_height
int widget_get_desired_height(widget *wid)
Definition:
widget.c:567
widget_resize
void widget_resize(widget *widget, short w, short h)
Definition:
widget.c:84
widget_need_redraw
gboolean widget_need_redraw(widget *wid)
Definition:
widget.c:445
WIDGET_TRIGGER_ACTION_RESULT_HANDLED
@ WIDGET_TRIGGER_ACTION_RESULT_HANDLED
Definition:
widget.h:82
WIDGET_TRIGGER_ACTION_RESULT_IGNORED
@ WIDGET_TRIGGER_ACTION_RESULT_IGNORED
Definition:
widget.h:80
widget_enabled
gboolean widget_enabled(widget *widget)
Definition:
widget.c:116
_widget
Definition:
widget-internal.h:36
WidgetTriggerActionResult
WidgetTriggerActionResult
Definition:
widget.h:78
_widget::type
WidgetType type
Definition:
widget-internal.h:38
WIDGET_TYPE_TEXTBOX_TEXT
@ WIDGET_TYPE_TEXTBOX_TEXT
Definition:
widget.h:71
widget_type
WidgetType widget_type(widget *widget)
Definition:
widget.c:108
include
widgets
widget.h
Generated by
1.8.18