aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--generic/Arc.c4
-rw-r--r--generic/Curve.c6
-rw-r--r--generic/Group.c11
-rw-r--r--generic/Item.h11
-rw-r--r--generic/Rectangle.c4
-rw-r--r--generic/Reticle.c4
-rw-r--r--generic/Tabular.c4
-rw-r--r--generic/Text.c4
-rw-r--r--generic/Track.c5
-rw-r--r--generic/Triangles.c4
-rw-r--r--generic/Window.c4
11 files changed, 53 insertions, 8 deletions
diff --git a/generic/Arc.c b/generic/Arc.c
index 9d86514..adb1656 100644
--- a/generic/Arc.c
+++ b/generic/Arc.c
@@ -77,6 +77,9 @@ typedef struct _ArcItemStruct {
static ZnAttrConfig arc_attrs[] = {
+ { ZN_CONFIG_BOOL, "-catchevent", NULL,
+ Tk_Offset(ArcItemStruct, header.flags), ZN_CATCH_EVENT_BIT,
+ ZN_REPICK_FLAG, False },
{ ZN_CONFIG_BOOL, "-closed", NULL,
Tk_Offset(ArcItemStruct, flags), CLOSED_BIT, ZN_COORDS_FLAG, False },
{ ZN_CONFIG_BOOL, "-composealpha", NULL,
@@ -151,6 +154,7 @@ Init(ZnItem item,
/* Init attributes */
SET(item->flags, ZN_VISIBLE_BIT);
SET(item->flags, ZN_SENSITIVE_BIT);
+ SET(item->flags, ZN_CATCH_EVENT_BIT);
SET(item->flags, ZN_COMPOSE_ALPHA_BIT);
SET(item->flags, ZN_COMPOSE_ROTATION_BIT);
SET(item->flags, ZN_COMPOSE_SCALE_BIT);
diff --git a/generic/Curve.c b/generic/Curve.c
index c73d467..832b125 100644
--- a/generic/Curve.c
+++ b/generic/Curve.c
@@ -85,6 +85,9 @@ static ZnAttrConfig cv_attrs[] = {
{ ZN_CONFIG_CAP_STYLE, "-capstyle", NULL,
Tk_Offset(CurveItemStruct, cap_style), 0,
ZN_COORDS_FLAG, False },
+ { ZN_CONFIG_BOOL, "-catchevent", NULL,
+ Tk_Offset(CurveItemStruct, header.flags), ZN_CATCH_EVENT_BIT,
+ ZN_REPICK_FLAG, False },
{ ZN_CONFIG_BOOL, "-closed", NULL,
Tk_Offset(CurveItemStruct, flags), CLOSED_BIT, ZN_COORDS_FLAG, False },
{ ZN_CONFIG_BOOL, "-composealpha", NULL,
@@ -132,7 +135,7 @@ static ZnAttrConfig cv_attrs[] = {
ZN_COORDS_FLAG, False },
{ ZN_CONFIG_BOOL, "-sensitive", NULL,
Tk_Offset(CurveItemStruct, header.flags), ZN_SENSITIVE_BIT,
- ZN_DRAW_FLAG, False },
+ ZN_REPICK_FLAG, False },
{ ZN_CONFIG_BOOL, "-smoothrelief", NULL,
Tk_Offset(CurveItemStruct, flags), SMOOTH_RELIEF_BIT,
ZN_REPICK_FLAG, False },
@@ -176,6 +179,7 @@ Init(ZnItem item,
/* Init attributes */
SET(item->flags, ZN_VISIBLE_BIT);
SET(item->flags, ZN_SENSITIVE_BIT);
+ SET(item->flags, ZN_CATCH_EVENT_BIT);
SET(item->flags, ZN_COMPOSE_ALPHA_BIT);
SET(item->flags, ZN_COMPOSE_ROTATION_BIT);
SET(item->flags, ZN_COMPOSE_SCALE_BIT);
diff --git a/generic/Group.c b/generic/Group.c
index ce581a8..c4fef66 100644
--- a/generic/Group.c
+++ b/generic/Group.c
@@ -72,6 +72,9 @@ static ZnAttrConfig group_attrs[] = {
{ ZN_CONFIG_BOOL, "-atomic", NULL,
Tk_Offset(GroupItemStruct, header.flags), ATOMIC_BIT,
ZN_REPICK_FLAG, False },
+ { ZN_CONFIG_BOOL, "-catchevent", NULL,
+ Tk_Offset(GroupItemStruct, header.flags), ZN_CATCH_EVENT_BIT,
+ ZN_REPICK_FLAG, False },
{ ZN_CONFIG_ITEM, "-clip", NULL,
Tk_Offset(GroupItemStruct, clip), 0,
ZN_COORDS_FLAG|ZN_ITEM_FLAG, False },
@@ -121,6 +124,7 @@ Init(ZnItem item,
group->dependents = NULL;
SET(item->flags, ZN_VISIBLE_BIT);
SET(item->flags, ZN_SENSITIVE_BIT);
+ SET(item->flags, ZN_CATCH_EVENT_BIT);
SET(item->flags, ZN_COMPOSE_ALPHA_BIT);
SET(item->flags, ZN_COMPOSE_ROTATION_BIT);
SET(item->flags, ZN_COMPOSE_SCALE_BIT);
@@ -1240,12 +1244,15 @@ Pick(ZnItem item,
for ( ; current_item != ZN_NO_ITEM; current_item = current_item->next) {
/*
+ * If an item doesn't catch events it can be safely skipped
+ * right now.
* Sensitive item must be reported even if they are invisible.
* It is legal to fire bindings on invisible sensitive items.
* This is _not_ a bug do _not_ modify the test below.
*/
- if (ISCLEAR(current_item->flags, ZN_SENSITIVE_BIT) &&
- ISCLEAR(current_item->flags, ZN_VISIBLE_BIT)) {
+ if (ISCLEAR(current_item->flags, ZN_CATCH_EVENT_BIT) ||
+ (ISCLEAR(current_item->flags, ZN_SENSITIVE_BIT) &&
+ ISCLEAR(current_item->flags, ZN_VISIBLE_BIT))) {
continue;
}
ZnIntersectBBox(&bbox, &current_item->item_bounding_box, &inter);
diff --git a/generic/Item.h b/generic/Item.h
index 3871bf8..38e57c4 100644
--- a/generic/Item.h
+++ b/generic/Item.h
@@ -132,14 +132,15 @@ typedef struct _ZnAttrConfig {
*/
#define ZN_VISIBLE_BIT (1<<0)
#define ZN_SENSITIVE_BIT (1<<1)
-#define ZN_UPDATE_DEPENDENT_BIT (1<<2)
-#define ZN_COMPOSE_SCALE_BIT (1<<3)
-#define ZN_COMPOSE_ROTATION_BIT (1<<4)
-#define ZN_COMPOSE_ALPHA_BIT (1<<5)
+#define ZN_CATCH_EVENT_BIT (1<<2)
+#define ZN_UPDATE_DEPENDENT_BIT (1<<3)
+#define ZN_COMPOSE_SCALE_BIT (1<<4)
+#define ZN_COMPOSE_ROTATION_BIT (1<<5)
+#define ZN_COMPOSE_ALPHA_BIT (1<<6)
/*
* Must be kept one greater than the last flag shift count.
*/
-#define ZN_PRIVATE_FLAGS_OFFSET 6
+#define ZN_PRIVATE_FLAGS_OFFSET 7
/*
diff --git a/generic/Rectangle.c b/generic/Rectangle.c
index 8afb38f..798239a 100644
--- a/generic/Rectangle.c
+++ b/generic/Rectangle.c
@@ -66,6 +66,9 @@ typedef struct _RectangleItemStruct {
static ZnAttrConfig rect_attrs[] = {
+ { ZN_CONFIG_BOOL, "-catchevent", NULL,
+ Tk_Offset(RectangleItemStruct, header.flags), ZN_CATCH_EVENT_BIT,
+ ZN_REPICK_FLAG, False },
{ ZN_CONFIG_BOOL, "-composealpha", NULL,
Tk_Offset(RectangleItemStruct, header.flags), ZN_COMPOSE_ALPHA_BIT,
ZN_DRAW_FLAG, False },
@@ -135,6 +138,7 @@ Init(ZnItem item,
/* Init attributes */
SET(item->flags, ZN_VISIBLE_BIT);
SET(item->flags, ZN_SENSITIVE_BIT);
+ SET(item->flags, ZN_CATCH_EVENT_BIT);
SET(item->flags, ZN_COMPOSE_ALPHA_BIT);
SET(item->flags, ZN_COMPOSE_ROTATION_BIT);
SET(item->flags, ZN_COMPOSE_SCALE_BIT);
diff --git a/generic/Reticle.c b/generic/Reticle.c
index cebeb98..59e3cdc 100644
--- a/generic/Reticle.c
+++ b/generic/Reticle.c
@@ -74,6 +74,9 @@ static ZnAttrConfig reticle_attrs[] = {
Tk_Offset(ReticleItemStruct, bright_line_color), 0, ZN_DRAW_FLAG, False },
{ ZN_CONFIG_LINE_STYLE, "-brightlinestyle", NULL,
Tk_Offset(ReticleItemStruct, bright_line_style), 0, ZN_DRAW_FLAG, False },
+ { ZN_CONFIG_BOOL, "-catchevent", NULL,
+ Tk_Offset(ReticleItemStruct, header.flags), ZN_CATCH_EVENT_BIT,
+ ZN_REPICK_FLAG, False },
{ ZN_CONFIG_BOOL, "-composealpha", NULL,
Tk_Offset(ReticleItemStruct, header.flags), ZN_COMPOSE_ALPHA_BIT,
ZN_DRAW_FLAG, False },
@@ -134,6 +137,7 @@ Init(ZnItem item,
SET(item->flags, ZN_VISIBLE_BIT);
CLEAR(item->flags, ZN_SENSITIVE_BIT);
+ CLEAR(item->flags, ZN_CATCH_EVENT_BIT);
SET(item->flags, ZN_COMPOSE_ALPHA_BIT);
SET(item->flags, ZN_COMPOSE_ROTATION_BIT);
SET(item->flags, ZN_COMPOSE_SCALE_BIT);
diff --git a/generic/Tabular.c b/generic/Tabular.c
index c0d9886..a9e8f2d 100644
--- a/generic/Tabular.c
+++ b/generic/Tabular.c
@@ -53,6 +53,9 @@ typedef struct _TabularItemStruct {
static ZnAttrConfig tabular_attrs[] = {
{ ZN_CONFIG_ANCHOR, "-anchor", NULL,
Tk_Offset(TabularItemStruct, anchor), 0, ZN_COORDS_FLAG, False },
+ { ZN_CONFIG_BOOL, "-catchevent", NULL,
+ Tk_Offset(TabularItemStruct, header.flags), ZN_CATCH_EVENT_BIT,
+ ZN_REPICK_FLAG, False },
{ ZN_CONFIG_BOOL, "-composealpha", NULL,
Tk_Offset(TabularItemStruct, header.flags), ZN_COMPOSE_ALPHA_BIT,
ZN_DRAW_FLAG, False },
@@ -111,6 +114,7 @@ Init(ZnItem item,
SET(item->flags, ZN_VISIBLE_BIT);
SET(item->flags, ZN_SENSITIVE_BIT);
+ SET(item->flags, ZN_CATCH_EVENT_BIT);
SET(item->flags, ZN_COMPOSE_ALPHA_BIT);
SET(item->flags, ZN_COMPOSE_SCALE_BIT);
SET(item->flags, ZN_COMPOSE_ROTATION_BIT);
diff --git a/generic/Text.c b/generic/Text.c
index b2e83f8..1217ee5 100644
--- a/generic/Text.c
+++ b/generic/Text.c
@@ -99,6 +99,9 @@ static ZnAttrConfig text_attrs[] = {
ZN_COORDS_FLAG|ZN_LAYOUT_FLAG, False },
{ ZN_CONFIG_ANCHOR, "-anchor", NULL,
Tk_Offset(TextItemStruct, anchor), 0, ZN_COORDS_FLAG, False },
+ { ZN_CONFIG_BOOL, "-catchevent", NULL,
+ Tk_Offset(TextItemStruct, header.flags), ZN_CATCH_EVENT_BIT,
+ ZN_REPICK_FLAG, False },
{ ZN_CONFIG_GRADIENT, "-color", NULL,
Tk_Offset(TextItemStruct, color), 0, ZN_DRAW_FLAG, False },
{ ZN_CONFIG_BOOL, "-composealpha", NULL,
@@ -174,6 +177,7 @@ Init(ZnItem item,
/* Init attributes */
SET(item->flags, ZN_VISIBLE_BIT);
SET(item->flags, ZN_SENSITIVE_BIT);
+ SET(item->flags, ZN_CATCH_EVENT_BIT);
SET(item->flags, ZN_COMPOSE_ALPHA_BIT);
CLEAR(item->flags, ZN_COMPOSE_ROTATION_BIT);
CLEAR(item->flags, ZN_COMPOSE_SCALE_BIT);
diff --git a/generic/Track.c b/generic/Track.c
index 911a2c0..e6c4341 100644
--- a/generic/Track.c
+++ b/generic/Track.c
@@ -141,6 +141,8 @@ typedef struct _TrackItemStruct {
static ZnAttrConfig track_attrs[] = {
+ { ZN_CONFIG_BOOL, "-catchevent", NULL,
+ Tk_Offset(TrackItemStruct, header.flags), ZN_CATCH_EVENT_BIT, ZN_REPICK_FLAG, False },
{ ZN_CONFIG_BOOL, "-circlehistory", NULL,
Tk_Offset(TrackItemStruct, flags), CIRCLE_HISTORY_BIT, ZN_DRAW_FLAG, False },
{ ZN_CONFIG_BOOL, "-composealpha", NULL,
@@ -271,6 +273,8 @@ static ZnAttrConfig track_attrs[] = {
};
static ZnAttrConfig wp_attrs[] = {
+ { ZN_CONFIG_BOOL, "-catchevent", NULL,
+ Tk_Offset(TrackItemStruct, header.flags), ZN_CATCH_EVENT_BIT, ZN_REPICK_FLAG, False },
{ ZN_CONFIG_BOOL, "-composealpha", NULL,
Tk_Offset(TrackItemStruct, header.flags), ZN_COMPOSE_ALPHA_BIT,
ZN_DRAW_FLAG, False },
@@ -384,6 +388,7 @@ Init(ZnItem item,
SET(item->flags, ZN_VISIBLE_BIT);
SET(item->flags, ZN_SENSITIVE_BIT);
+ SET(item->flags, ZN_CATCH_EVENT_BIT);
SET(item->flags, ZN_COMPOSE_ALPHA_BIT);
SET(item->flags, ZN_COMPOSE_ROTATION_BIT);
SET(item->flags, ZN_COMPOSE_SCALE_BIT);
diff --git a/generic/Triangles.c b/generic/Triangles.c
index 1565b5b..06a6c3a 100644
--- a/generic/Triangles.c
+++ b/generic/Triangles.c
@@ -59,6 +59,9 @@ typedef struct _TrianglesItemStruct {
static ZnAttrConfig tr_attrs[] = {
+ { ZN_CONFIG_BOOL, "-catchevent", NULL,
+ Tk_Offset(TrianglesItemStruct, header.flags), ZN_CATCH_EVENT_BIT,
+ ZN_REPICK_FLAG, False },
{ ZN_CONFIG_GRADIENT_LIST, "-colors", NULL,
Tk_Offset(TrianglesItemStruct, colors), 0, ZN_DRAW_FLAG, False },
{ ZN_CONFIG_BOOL, "-composealpha", NULL,
@@ -112,6 +115,7 @@ Init(ZnItem item,
/* Init attributes */
SET(item->flags, ZN_VISIBLE_BIT);
SET(item->flags, ZN_SENSITIVE_BIT);
+ SET(item->flags, ZN_CATCH_EVENT_BIT);
SET(item->flags, ZN_COMPOSE_ALPHA_BIT);
SET(item->flags, ZN_COMPOSE_ROTATION_BIT);
SET(item->flags, ZN_COMPOSE_SCALE_BIT);
diff --git a/generic/Window.c b/generic/Window.c
index a6ac2d7..eb5a68c 100644
--- a/generic/Window.c
+++ b/generic/Window.c
@@ -52,6 +52,9 @@ typedef struct _WindowItemStruct {
static ZnAttrConfig wind_attrs[] = {
{ ZN_CONFIG_ANCHOR, "-anchor", NULL,
Tk_Offset(WindowItemStruct, anchor), 0, ZN_COORDS_FLAG, False },
+ { ZN_CONFIG_BOOL, "-catchevent", NULL,
+ Tk_Offset(WindowItemStruct, header.flags), ZN_CATCH_EVENT_BIT,
+ ZN_REPICK_FLAG, False },
{ ZN_CONFIG_BOOL, "-composealpha", NULL,
Tk_Offset(WindowItemStruct, header.flags), ZN_COMPOSE_ALPHA_BIT,
ZN_DRAW_FLAG, False },
@@ -176,6 +179,7 @@ Init(ZnItem item,
/* Init attributes */
SET(item->flags, ZN_VISIBLE_BIT);
SET(item->flags, ZN_SENSITIVE_BIT);
+ SET(item->flags, ZN_CATCH_EVENT_BIT);
SET(item->flags, ZN_COMPOSE_ALPHA_BIT); /* N.A */
SET(item->flags, ZN_COMPOSE_ROTATION_BIT);
SET(item->flags, ZN_COMPOSE_SCALE_BIT);