diff options
author | David Walter Seikel | 2014-05-05 02:45:13 +1000 |
---|---|---|
committer | David Walter Seikel | 2014-05-05 02:45:13 +1000 |
commit | 60d68c06a933dec2555a21f2a666a769e3e4de3f (patch) | |
tree | eefaedb12308a59a25cc6fb1fa63e814b69caa42 /src | |
parent | Track all windows in a Eina_List. (diff) | |
download | SledjHamr-60d68c06a933dec2555a21f2a666a769e3e4de3f.zip SledjHamr-60d68c06a933dec2555a21f2a666a769e3e4de3f.tar.gz SledjHamr-60d68c06a933dec2555a21f2a666a769e3e4de3f.tar.bz2 SledjHamr-60d68c06a933dec2555a21f2a666a769e3e4de3f.tar.xz |
Merge the window handle creation code, and add proper hiding for them.
Diffstat (limited to '')
-rw-r--r-- | src/extantz/files.c | 8 | ||||
-rw-r--r-- | src/extantz/winFang.c | 83 | ||||
-rw-r--r-- | src/extantz/winFang.h | 7 |
3 files changed, 69 insertions, 29 deletions
diff --git a/src/extantz/files.c b/src/extantz/files.c index ff76dff..c0867c6 100644 --- a/src/extantz/files.c +++ b/src/extantz/files.c | |||
@@ -80,14 +80,14 @@ static void my_fileselector_activated(void *data, Evas_Object *obj EINA_UNUSED, | |||
80 | 80 | ||
81 | printf("SELECTED file : %s\n", file); | 81 | printf("SELECTED file : %s\n", file); |
82 | } | 82 | } |
83 | evas_object_hide(me->win); | 83 | winFangHide(me); |
84 | } | 84 | } |
85 | 85 | ||
86 | static void _CANCEL_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) | 86 | static void _CANCEL_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) |
87 | { | 87 | { |
88 | winFang *me = data; | 88 | winFang *me = data; |
89 | 89 | ||
90 | evas_object_hide(me->win); | 90 | winFangHide(me); |
91 | } | 91 | } |
92 | 92 | ||
93 | static void _OK_clicked(void *data, Evas_Object *obj, void *event_info) | 93 | static void _OK_clicked(void *data, Evas_Object *obj, void *event_info) |
@@ -278,7 +278,7 @@ winFang *filesAdd(globals *ourGlobals, char *path, Eina_Bool multi, Eina_Bool sa | |||
278 | eo_unref(bx); | 278 | eo_unref(bx); |
279 | 279 | ||
280 | winFangComplete(ourGlobals, me, ourGlobals->win_w - 380, ourGlobals->win_w - 530, 350, 500); | 280 | winFangComplete(ourGlobals, me, ourGlobals->win_w - 380, ourGlobals->win_w - 530, 350, 500); |
281 | evas_object_hide(me->win); | 281 | winFangHide(me); |
282 | return me; | 282 | return me; |
283 | } | 283 | } |
284 | 284 | ||
@@ -292,5 +292,5 @@ void filesShow(winFang *me, Evas_Smart_Cb func, void *data) | |||
292 | evas_object_smart_callback_add(fs, "activated", func, data); | 292 | evas_object_smart_callback_add(fs, "activated", func, data); |
293 | else | 293 | else |
294 | evas_object_smart_callback_add(fs, "activated", my_fileselector_activated, me); | 294 | evas_object_smart_callback_add(fs, "activated", my_fileselector_activated, me); |
295 | evas_object_show(me->win); | 295 | winFangShow(me); |
296 | } | 296 | } |
diff --git a/src/extantz/winFang.c b/src/extantz/winFang.c index 3d2b6ef..3c4cc22 100644 --- a/src/extantz/winFang.c +++ b/src/extantz/winFang.c | |||
@@ -49,31 +49,22 @@ static void cb_mouse_move(void *data, Evas *evas, Evas_Object *obj, void *event_ | |||
49 | evas_map_free(p); | 49 | evas_map_free(p); |
50 | } | 50 | } |
51 | 51 | ||
52 | static void create_handles(Evas_Object *obj) | 52 | void winFangHide(winFang *win) |
53 | { | 53 | { |
54 | int i; | 54 | int i; |
55 | Evas_Coord x, y, w, h; | ||
56 | 55 | ||
57 | evas_object_geometry_get(obj, &x, &y, &w, &h); | 56 | evas_object_hide(win->win); |
58 | for (i = 0; i < 4; i++) | 57 | for (i = 0; i < 4; i++) |
59 | { | 58 | evas_object_hide(win->hand[i]); |
60 | Evas_Object *hand; | 59 | } |
61 | char buf[PATH_MAX]; | ||
62 | char key[32]; | ||
63 | 60 | ||
64 | hand = evas_object_image_filled_add(evas_object_evas_get(obj)); | 61 | void winFangShow(winFang *win) |
65 | evas_object_resize(hand, 31, 31); | 62 | { |
66 | snprintf(buf, sizeof(buf), "%s/pt.png", elm_app_data_dir_get()); | 63 | int i; |
67 | evas_object_image_file_set(hand, buf, NULL); | 64 | |
68 | if (i == 0) evas_object_move(hand, x - 15, y - 15); | 65 | evas_object_show(win->win); |
69 | else if (i == 1) evas_object_move(hand, x + w - 15, y - 15); | 66 | for (i = 0; i < 4; i++) |
70 | else if (i == 2) evas_object_move(hand, x + w - 15, y + h - 15); | 67 | evas_object_show(win->hand[i]); |
71 | else if (i == 3) evas_object_move(hand, x - 15, y + h - 15); | ||
72 | evas_object_event_callback_add(hand, EVAS_CALLBACK_MOUSE_MOVE, cb_mouse_move, obj); | ||
73 | evas_object_show(hand); | ||
74 | snprintf(key, sizeof(key), "h-%i\n", i); | ||
75 | evas_object_data_set(obj, key, hand); | ||
76 | } | ||
77 | } | 68 | } |
78 | 69 | ||
79 | winFang *winFangAdd(globals *ourGlobals) | 70 | winFang *winFangAdd(globals *ourGlobals) |
@@ -107,14 +98,56 @@ winFang *winFangAdd(globals *ourGlobals) | |||
107 | 98 | ||
108 | void winFangComplete(globals *ourGlobals, winFang *win, int x, int y, int w, int h) | 99 | void winFangComplete(globals *ourGlobals, winFang *win, int x, int y, int w, int h) |
109 | { | 100 | { |
101 | Evas_Object *obj = elm_win_inlined_image_object_get(win->win); | ||
102 | Evas_Object *obj2 = evas_object_evas_get(obj); | ||
103 | char buf[PATH_MAX]; | ||
104 | int i; | ||
105 | |||
106 | win->x = x; | ||
107 | win->y = y; | ||
108 | win->w = w; | ||
109 | win->h = h; | ||
110 | // image object for win is unlinked to its pos/size - so manual control | 110 | // image object for win is unlinked to its pos/size - so manual control |
111 | // this allows also for using map and other things with it. | 111 | // this allows also for using map and other things with it. |
112 | evas_object_move(elm_win_inlined_image_object_get(win->win), x, y); | 112 | evas_object_move(obj, x, y); |
113 | // Odd, it needs to be resized twice. WTF? | 113 | // Odd, it needs to be resized twice. WTF? |
114 | evas_object_resize(win->win, w, h); | 114 | evas_object_resize(win->win, w, h); |
115 | evas_object_resize(elm_win_inlined_image_object_get(win->win), w, h); | 115 | evas_object_resize(obj, w, h); |
116 | evas_object_show(win->win); | 116 | evas_object_show(win->win); |
117 | create_handles(elm_win_inlined_image_object_get(win->win)); | 117 | |
118 | // Create corner handles. | ||
119 | snprintf(buf, sizeof(buf), "%s/pt.png", elm_app_data_dir_get()); | ||
120 | for (i = 0; i < 4; i++) | ||
121 | { | ||
122 | char key[32]; | ||
123 | int cx = x, cy = y; | ||
124 | |||
125 | if (i == 1) cx += w; | ||
126 | else if (i == 2) {cx += w; cy += h;} | ||
127 | else if (i == 3) cy += h; | ||
128 | snprintf(key, sizeof(key), "h-%i\n", i); | ||
129 | #if 1 | ||
130 | win->hand[i] = evas_object_image_filled_add(obj2); | ||
131 | evas_object_image_file_set(win->hand[i], buf, NULL); | ||
132 | evas_object_resize(win->hand[i], 31, 31); | ||
133 | evas_object_move(win->hand[i], cx - 15, cy - 15); | ||
134 | evas_object_data_set(obj, key, win->hand[i]); | ||
135 | evas_object_show(win->hand[i]); | ||
136 | evas_object_event_callback_add(win->hand[i], EVAS_CALLBACK_MOUSE_MOVE, cb_mouse_move, obj); | ||
137 | #else | ||
138 | // TODO - No idea why, but using this version makes the window vanish when you click on a handle. | ||
139 | win->hand[i] = eo_add(EVAS_OBJ_IMAGE_CLASS, obj2, | ||
140 | evas_obj_image_filled_set(EINA_TRUE), | ||
141 | evas_obj_image_file_set(buf, NULL), | ||
142 | evas_obj_size_set(31, 31), | ||
143 | evas_obj_position_set(cx - 15, cy - 15), | ||
144 | eo_key_data_set(key, win->hand[i], NULL), | ||
145 | evas_obj_visibility_set(EINA_TRUE) | ||
146 | ); | ||
147 | evas_object_event_callback_add(win->hand[i], EVAS_CALLBACK_MOUSE_MOVE, cb_mouse_move, obj); | ||
148 | eo_unref(win->hand[i]); | ||
149 | #endif | ||
150 | } | ||
118 | } | 151 | } |
119 | 152 | ||
120 | void winFangDel(globals *ourGlobals, winFang *win) | 153 | void winFangDel(globals *ourGlobals, winFang *win) |
diff --git a/src/extantz/winFang.h b/src/extantz/winFang.h index 738a616..cc61847 100644 --- a/src/extantz/winFang.h +++ b/src/extantz/winFang.h | |||
@@ -8,6 +8,10 @@ typedef struct _winFang | |||
8 | { | 8 | { |
9 | Evas_Object *win; | 9 | Evas_Object *win; |
10 | Eina_Clist widgets; | 10 | Eina_Clist widgets; |
11 | int x, y, w, h; | ||
12 | |||
13 | Evas_Object *hand[4]; | ||
14 | |||
11 | Eina_Clist node; | 15 | Eina_Clist node; |
12 | void *data; | 16 | void *data; |
13 | Evas_Smart_Cb on_del; | 17 | Evas_Smart_Cb on_del; |
@@ -31,5 +35,8 @@ typedef struct _Widget | |||
31 | 35 | ||
32 | winFang *winFangAdd(globals *ourGlobals); | 36 | winFang *winFangAdd(globals *ourGlobals); |
33 | void winFangComplete(globals *ourGlobals, winFang *win, int x, int y, int w, int h); | 37 | void winFangComplete(globals *ourGlobals, winFang *win, int x, int y, int w, int h); |
38 | void winFangHide(winFang *win); | ||
39 | void winFangShow(winFang *win); | ||
34 | void winFangDel(globals *ourGlobals, winFang *win); | 40 | void winFangDel(globals *ourGlobals, winFang *win); |
41 | |||
35 | Widget *widgetAdd(winFang *win, const Eo_Class *klass, Evas_Object *parent, char *title); | 42 | Widget *widgetAdd(winFang *win, const Eo_Class *klass, Evas_Object *parent, char *title); |