From d7bf736ca2aaa4c2cd07648f2650873f01ffd79a Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Tue, 2 Jan 2001 23:10:12 +0000 Subject: [PATCH] e17 does..... MENUS! SVN revision: 4076 --- .../selected-0.sticky-0.shaded-0.bits.db | Bin 315392 -> 364544 bytes .../selected-1.sticky-0.shaded-0.bits.db | Bin 425984 -> 425984 bytes src/actions.c | 6 + src/border.c | 102 +- src/config.c | 3 + src/desktops.c | 50 + src/e.h | 66 +- src/icccm.c | 25 + src/main.c | 1 + src/menu.c | 1068 ++++++++++++++++- 10 files changed, 1307 insertions(+), 14 deletions(-) diff --git a/data/config/appearance/default/borders/default/selected-0.sticky-0.shaded-0.bits.db b/data/config/appearance/default/borders/default/selected-0.sticky-0.shaded-0.bits.db index 7c9d03ffcc7891ffd3c3883d15bf3131f12429f5..05cc8153608169cba0d76cde710eefd323c49782 100644 GIT binary patch delta 63061 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 delta 34863 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 M@Dmva$o6pm2VGepC;$Ke diff --git a/data/config/appearance/default/borders/default/selected-1.sticky-0.shaded-0.bits.db b/data/config/appearance/default/borders/default/selected-1.sticky-0.shaded-0.bits.db index 159753eee27add5ecacec7dda5e2651a1adb8c28..489476bb9221ac73a7866fa79a0550e5c5ee4bfb 100644 GIT binary patch delta 32975 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 delta 28327 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 W-`IUCW*FiZH<-V!VR|w@`u_kO2Y6=y diff --git a/src/actions.c b/src/actions.c index a800d0fc9..5a7e91138 100644 --- a/src/actions.c +++ b/src/actions.c @@ -500,6 +500,7 @@ e_act_resize_start (void *o, E_Action *a, void *data, int x, int y, int rx, int E_Border *b; b = o; + if (b->current.shaded != 0) return; /* 0 | 1 */ /* --+-- */ /* 2 | 3 */ @@ -564,6 +565,7 @@ e_act_resize_go (void *o, E_Action *a, void *data, int x, int y, int rx, int E_Border *b; b = o; + if (b->current.shaded != 0) return; if (b->mode.resize == 0) { b->current.requested.w -= dx; @@ -606,6 +608,7 @@ e_act_resize_h_start (void *o, E_Action *a, void *data, int x, int y, int rx, in E_Border *b; b = o; + if (b->current.shaded != 0) return; /* 4 | 5 */ if (x > (b->current.w / 2)) { @@ -653,6 +656,7 @@ e_act_resize_h_go (void *o, E_Action *a, void *data, int x, int y, int rx, in E_Border *b; b = o; + if (b->current.shaded != 0) return; if (b->mode.resize == 4) { b->current.requested.w -= dx; @@ -681,6 +685,7 @@ e_act_resize_v_start (void *o, E_Action *a, void *data, int x, int y, int rx, in E_Border *b; b = o; + if (b->current.shaded != 0) return; /* 6 */ /* - */ /* 7 */ @@ -730,6 +735,7 @@ e_act_resize_v_go (void *o, E_Action *a, void *data, int x, int y, int rx, in E_Border *b; b = o; + if (b->current.shaded != 0) return; if (b->mode.resize == 6) { b->current.requested.h -= dy; diff --git a/src/border.c b/src/border.c index 2f9dec90a..1e6256baf 100644 --- a/src/border.c +++ b/src/border.c @@ -62,12 +62,18 @@ e_idle(void *data) b = l->data; e_border_update(b); } - for (l = evases; l; l = l->next) + for (l = borders; l; l = l->next) { - Evas evas; + E_Border *b; - evas = l->data; - evas_render(evas); + b = l->data; + if (b->first_expose) + { + evas_render(b->evas.l); + evas_render(b->evas.r); + evas_render(b->evas.t); + evas_render(b->evas.b); + } } e_db_runtime_flush(); return; @@ -704,6 +710,7 @@ e_window_expose(Eevent * ev) e = ev->event; { Evas_List l; + E_Border *b; for (l = evases; l; l = l->next) { @@ -713,6 +720,8 @@ e_window_expose(Eevent * ev) if (evas_get_window(evas) == e->win) evas_update_rect(evas, e->x, e->y, e->w, e->h); } + b = e_border_find_by_window(e->win); + if (b) b->first_expose = 1; } current_ev = NULL; } @@ -1146,6 +1155,7 @@ e_border_adopt(Window win, int use_client_pos) e_icccm_get_size_info(win, b); e_icccm_get_mwm_hints(win, b); e_icccm_get_layer(win, b); + e_icccm_get_title(win, b); b->current.shaped_client = e_icccm_is_shaped(win); /* we have now placed the bugger */ b->placed = 1; @@ -1220,7 +1230,10 @@ e_border_new(void) b->win.main = e_window_override_new(desk->win.container, 0, 0, 1, 1); b->win.input = e_window_input_new(b->win.main, 0, 0, 1, 1); b->win.container = e_window_override_new(b->win.main, 0, 0, 1, 1); - e_window_set_events(b->win.input, XEV_MOUSE_MOVE | XEV_BUTTON | XEV_IN_OUT); + e_window_set_events_propagate(b->win.input, 1); + e_window_set_events(b->win.input, XEV_MOUSE_MOVE | XEV_BUTTON); + e_window_set_events(b->win.main, XEV_IN_OUT); + e_window_set_events(b->win.container, XEV_IN_OUT); e_window_show(b->win.input); e_window_show(b->win.container); @@ -1264,7 +1277,47 @@ e_border_new(void) font_dir); b->win.b = evas_get_window(b->evas.b); e_add_child(b->win.main, b->win.b); + + b->obj.title.l = evas_add_text(b->evas.l, "borzoib", 8, ""); + b->obj.title.r = evas_add_text(b->evas.r, "borzoib", 8, ""); + b->obj.title.t = evas_add_text(b->evas.t, "borzoib", 8, ""); + b->obj.title.b = evas_add_text(b->evas.b, "borzoib", 8, ""); + + b->obj.title_clip.l = evas_add_rectangle(b->evas.l); + b->obj.title_clip.r = evas_add_rectangle(b->evas.r); + b->obj.title_clip.t = evas_add_rectangle(b->evas.t); + b->obj.title_clip.b = evas_add_rectangle(b->evas.b); + evas_set_color(b->evas.l, b->obj.title_clip.l, 255, 255, 255, 255); + evas_set_color(b->evas.r, b->obj.title_clip.r, 255, 255, 255, 255); + evas_set_color(b->evas.t, b->obj.title_clip.t, 255, 255, 255, 255); + evas_set_color(b->evas.b, b->obj.title_clip.b, 255, 255, 255, 255); + + evas_set_pass_events(b->evas.l, b->obj.title.l, 1); + evas_set_pass_events(b->evas.r, b->obj.title.r, 1); + evas_set_pass_events(b->evas.t, b->obj.title.t, 1); + evas_set_pass_events(b->evas.b, b->obj.title.b, 1); + + evas_set_color(b->evas.l, b->obj.title.l, 0, 0, 0, 255); + evas_set_color(b->evas.r, b->obj.title.r, 0, 0, 0, 255); + evas_set_color(b->evas.t, b->obj.title.t, 0, 0, 0, 255); + evas_set_color(b->evas.b, b->obj.title.b, 0, 0, 0, 255); + + evas_show(b->evas.l, b->obj.title.l); + evas_show(b->evas.r, b->obj.title.r); + evas_show(b->evas.t, b->obj.title.t); + evas_show(b->evas.b, b->obj.title.b); + + evas_show(b->evas.l, b->obj.title_clip.l); + evas_show(b->evas.r, b->obj.title_clip.r); + evas_show(b->evas.t, b->obj.title_clip.t); + evas_show(b->evas.b, b->obj.title_clip.b); + + evas_set_clip(b->evas.l, b->obj.title.l, b->obj.title_clip.l); + evas_set_clip(b->evas.l, b->obj.title.r, b->obj.title_clip.r); + evas_set_clip(b->evas.l, b->obj.title.t, b->obj.title_clip.t); + evas_set_clip(b->evas.l, b->obj.title.b, b->obj.title_clip.b); + e_window_raise(b->win.input); e_window_raise(b->win.container); @@ -1516,11 +1569,11 @@ e_border_set_bits(E_Border *b, char *file) b->bits.r = ebits_load(file); b->bits.t = ebits_load(file); b->bits.b = ebits_load(file); - + b->bits.new = 1; b->changed = 1; - if (b->bits.t) ebits_get_insets(b->bits.l, &ppl, &ppr, &ppt, &ppb); + if (b->bits.t) ebits_get_insets(b->bits.t, &ppl, &ppr, &ppt, &ppb); b->current.requested.w -= (pl + pr) - (ppl + ppr); b->current.requested.h -= (pt + pb) - (ppt + ppb); b->current.requested.x += (pl - ppl); @@ -1825,12 +1878,45 @@ e_border_update(E_Border *b) if (b->bits.r) ebits_resize(b->bits.r, b->current.w, b->current.h); if (b->bits.t) ebits_resize(b->bits.t, b->current.w, b->current.h); if (b->bits.b) ebits_resize(b->bits.b, b->current.w, b->current.h); - + e_icccm_move_resize(b->win.client, b->current.x + pl, b->current.y + pt - b->current.shaded, b->client.w, b->client.h); e_cb_border_move_resize(b); } + if ((b->client.title) && (b->bits.t)) + { + double tx, ty, tw, th; + + ebits_get_bit_geometry(b->bits.l, "Title_Area", &tx, &ty, &tw, &th); + evas_set_text(b->evas.l, b->obj.title.l, b->client.title); + evas_move(b->evas.l, b->obj.title.l, tx, ty); + evas_move(b->evas.l, b->obj.title_clip.l, tx, ty); + evas_resize(b->evas.l, b->obj.title_clip.l, tw, th); + + ebits_get_bit_geometry(b->bits.r, "Title_Area", &tx, &ty, &tw, &th); + evas_set_text(b->evas.r, b->obj.title.r, b->client.title); + evas_move(b->evas.r, b->obj.title.r, tx, ty); + evas_move(b->evas.r, b->obj.title_clip.r, tx, ty); + evas_resize(b->evas.r, b->obj.title_clip.r, tw, th); + + ebits_get_bit_geometry(b->bits.t, "Title_Area", &tx, &ty, &tw, &th); + evas_set_text(b->evas.t, b->obj.title.t, b->client.title); + evas_move(b->evas.t, b->obj.title.t, tx, ty); + evas_move(b->evas.t, b->obj.title_clip.t, tx, ty); + evas_resize(b->evas.t, b->obj.title_clip.t, tw, th); + + ebits_get_bit_geometry(b->bits.b, "Title_Area", &tx, &ty, &tw, &th); + evas_set_text(b->evas.b, b->obj.title.b, b->client.title); + evas_move(b->evas.b, b->obj.title.b, tx, ty); + evas_move(b->evas.b, b->obj.title_clip.b, tx, ty); + evas_resize(b->evas.b, b->obj.title_clip.b, tw, th); + + evas_set_layer(b->evas.l, b->obj.title.l, 1); + evas_set_layer(b->evas.r, b->obj.title.r, 1); + evas_set_layer(b->evas.t, b->obj.title.t, 1); + evas_set_layer(b->evas.b, b->obj.title.b, 1); + } e_border_reshape(b); if (visibility_changed) { diff --git a/src/config.c b/src/config.c index 6c3bc1d0e..b251ee11a 100644 --- a/src/config.c +++ b/src/config.c @@ -16,6 +16,7 @@ static char cfg_grabs_db[4096] = ""; static char cfg_settings_db[4096] = ""; static char cfg_actions_db[4096] = ""; static char cfg_borders_db[4096] = ""; +static char cfg_menus_db[4096] = ""; static char cfg_user_dir[4096] = ""; static char cfg_images_dir[4096] = ""; static char cfg_fonts_dir[4096] = ""; @@ -46,6 +47,8 @@ e_config_get(char *type) PACKAGE_DATA_DIR"/data/config/behavior/default/actions.db"); E_CONF("borders", cfg_borders_db, PACKAGE_DATA_DIR"/data/config/appearance/default/borders/"); + E_CONF("menus", cfg_menus_db, + PACKAGE_DATA_DIR"/data/config/appearance/default/menus/"); E_CONF("images", cfg_images_dir, PACKAGE_DATA_DIR"/data/images/"); E_CONF("fonts", cfg_fonts_dir, diff --git a/src/desktops.c b/src/desktops.c index 2cb8788cc..447c6e579 100644 --- a/src/desktops.c +++ b/src/desktops.c @@ -130,6 +130,56 @@ e_mouse_down(Eevent * ev) x = e->rx - x; y = e->ry - y; evas_event_button_down(evas, x, y, e->button); + if (e->button == 1) + { + int count; + static E_Menu *menu = NULL; + char buf[4096]; + + if (!menu) + { + menu = e_menu_new(); + for (count = 1; count <= 16; count++) + { + int count2; + E_Menu *menu2; + E_Menu_Item *menuitem; + + sprintf(buf, "Menu item %i", count); + menuitem = e_menu_item_new(buf); + if (count < 10) + { + menu2 = e_menu_new(); + menuitem->submenu = menu2; + } + e_menu_add_item(menu, menuitem); + if (count < 10) + { + for (count2 = 1; count2 <= 14; count2++) + { + E_Menu_Item *menuitem2; + E_Menu *menu3; + int count3; + + sprintf(buf, "Submenu item %i", count2); + menuitem2 = e_menu_item_new(buf); + menu3 = e_menu_new(); + menuitem2->submenu = menu3; + e_menu_add_item(menu2, menuitem2); + for (count3 = 1; count3 <= 12; count3++) + { + E_Menu_Item *menuitem3; + + sprintf(buf, "Submenu item %i", count3); + menuitem3 = e_menu_item_new(buf); + e_menu_add_item(menu3, menuitem3); + } + } + } + } + } + e_menu_show_at_mouse(menu, e->rx, e->ry, e->time); + } if (e->button == 3) e_exec_restart(); return; diff --git a/src/e.h b/src/e.h index 90c100ef8..112a29c37 100644 --- a/src/e.h +++ b/src/e.h @@ -152,6 +152,14 @@ struct _E_Border struct { Evas l, r, t, b; } evas; + struct { + struct { + Evas_Object l, r, t, b; + } title; + struct { + Evas_Object l, r, t, b; + } title_clip; + } obj; struct { Pixmap l, r, t, b; } pixmap; @@ -212,6 +220,8 @@ struct _E_Border E_Desktop *desk; char *border_file; + + int first_expose; int changed; }; @@ -295,12 +305,65 @@ struct _E_Menu { OBJ_PROPERTIES; - Window win; + struct { + int x, y, w, h; + int visible; + } current, previous; + struct { + int l, r, t, b; + } border, sel_border; + struct { + Window main, evas; + } win; + Evas evas; + Ebits_Object bg; + Evas_List entries; + char *bg_file; + + int first_expose; + + int recalc_entries; + int redo_sel; + int changed; + + E_Menu_Item *selected; + + Time time; }; struct _E_Menu_Item { OBJ_PROPERTIES; + + int x, y; + struct { + struct { + int w, h; + } min; + int w, h; + } size; + + Ebits_Object bg; + char *bg_file; + int selected; + + Evas_Object obj_entry; + + char *str; + Evas_Object obj_text; + + char *icon; + Evas_Object obj_icon; + + int radio_group; + int check; + int on; + + E_Menu *menu; + E_Menu *submenu; + + void (*func_select) (E_Menu *m, E_Menu_Item *mi, void *data); + void *func_select_data; }; void e_action_add_proto(char *action, @@ -349,6 +412,7 @@ void e_icccm_release(Window win); void e_icccm_get_size_info(Window win, E_Border *b); void e_icccm_get_mwm_hints(Window win, E_Border *b); void e_icccm_get_layer(Window win, E_Border *b); +void e_icccm_get_title(Window win, E_Border *b); void e_icccm_set_frame_size(Window win, int l, int r, int t, int b); void e_icccm_set_desk_area(Window win, int ax, int ay); void e_icccm_set_desk_area_size(Window win, int ax, int ay); diff --git a/src/icccm.c b/src/icccm.c index a38194dca..e280b82fb 100644 --- a/src/icccm.c +++ b/src/icccm.c @@ -296,6 +296,7 @@ e_icccm_get_mwm_hints(Window win, E_Border *b) if (mwmhints->decorations & MWM_DECOR_BORDER) b->client.border = 1; if (mwmhints->decorations & MWM_DECOR_RESIZEH) b->client.handles = 1; if (mwmhints->decorations & MWM_DECOR_TITLE) b->client.titlebar = 1; + e_border_apply_border(b); } FREE(mwmhints); } @@ -321,6 +322,24 @@ e_icccm_get_layer(Window win, E_Border *b) } } +void +e_icccm_get_title(Window win, E_Border *b) +{ + char *title; + + title = e_window_get_title(win); + + if (b->client.title) + { + if ((title) && (!strcmp(title, b->client.title))) return; + b->changed = 1; + FREE(b->client.title); + } + b->client.title = NULL; + if (title) b->client.title = title; + else b->client.title = strdup("No Title"); +} + void e_icccm_set_frame_size(Window win, int l, int r, int t, int b) { @@ -392,10 +411,16 @@ void e_icccm_handle_property_change(Atom a, E_Border *b) { static Atom a_wm_normal_hints = 0; + static Atom a_motif_wm_hints = 0; + static Atom a_wm_name = 0; E_ATOM(a_wm_normal_hints, "WM_NORMAL_HINTS"); + E_ATOM(a_motif_wm_hints, "_MOTIF_WM_HINTS"); + E_ATOM(a_wm_name, "WM_NAME"); if (a == a_wm_normal_hints) e_icccm_get_size_info(b->win.client, b); + else if (a == a_motif_wm_hints) e_icccm_get_mwm_hints(b->win.client, b); + else if (a == a_wm_name) e_icccm_get_title(b->win.client, b); } void diff --git a/src/main.c b/src/main.c index 3c192a86d..a326dac47 100644 --- a/src/main.c +++ b/src/main.c @@ -50,6 +50,7 @@ main(int argc, char **argv) e_desktops_init(); e_border_init(); e_actions_init(); + e_menu_init(); setup(); diff --git a/src/menu.c b/src/menu.c index fbdbc172c..f949ce8de 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1,7 +1,10 @@ #include "e.h" static Evas_List open_menus = NULL; -static Evas_list menus = NULL; +static Evas_List menus = NULL; +static Window menu_event_win = 0; +static int screen_w, screen_h; +static int mouse_x, mouse_y; static void e_idle(void *data); static void e_key_down(Eevent * ev); @@ -12,6 +15,112 @@ static void e_mouse_in(Eevent * ev); static void e_mouse_out(Eevent * ev); static void e_window_expose(Eevent * ev); +static void +e_scroller_timer(int val, void *data) +{ + Evas_List l; + int ok = 0; + int resist = 5; + int scroll_speed = 16; + static double last_time = 0.0, t; + + t = e_get_time(); + if (val != 0) + scroll_speed = (int)(((t - last_time) / 0.02) * (double)scroll_speed); + last_time = t; + + if (mouse_x >= (screen_w - resist)) + { + int scroll = 0; + + for (l = open_menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + if ((m->current.x + m->current.w) > screen_w) + { + scroll = m->current.x + m->current.w - screen_w; + break; + } + } + if (scroll) + { + if (scroll > scroll_speed) scroll = scroll_speed; + e_menu_scroll_all_by(-scroll, 0); + ok = 1; + } + } + else if (mouse_x < resist) + { + int scroll = 0; + + for (l = open_menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + if (m->current.x < 0) + { + scroll = -m->current.x; + break; + } + } + if (scroll) + { + if (scroll > scroll_speed) scroll = scroll_speed; + e_menu_scroll_all_by(scroll, 0); + ok = 1; + } + } + if (mouse_y >= (screen_h - resist)) + { + int scroll = 0; + + for (l = open_menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + if ((m->current.y + m->current.h) > screen_h) + { + scroll = m->current.y + m->current.h - screen_h; + break; + } + } + if (scroll) + { + if (scroll > scroll_speed) scroll = scroll_speed; + e_menu_scroll_all_by(0, -scroll); + ok = 1; + } + } + else if (mouse_y < resist) + { + int scroll = 0; + + for (l = open_menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + if (m->current.y < 0) + { + scroll = -m->current.y; + break; + } + } + if (scroll) + { + if (scroll > scroll_speed) scroll = scroll_speed; + e_menu_scroll_all_by(0, scroll); + ok = 1; + } + } + if (ok) + e_add_event_timer("menu_scroller", 0.02, e_scroller_timer, val + 1, NULL); +} + static void e_idle(void *data) { @@ -22,34 +131,129 @@ e_idle(void *data) E_Menu *m; m = l->data; - e_menu_update(m); + e_menu_update_base(m); + } + for (l = menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + e_menu_update_shows(m); + } + for (l = menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + e_menu_update_hides(m); + } + for (l = menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + e_menu_update_finish(m); + } + for (l = menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + if (m->first_expose) + evas_render(m->evas); } e_db_runtime_flush(); return; UN(data); } +static void +e_wheel(Eevent * ev) +{ + Ev_Wheel *e; + + e = ev->event; + if (e->win == menu_event_win) + { + } +} + static void e_key_down(Eevent * ev) { Ev_Key_Down *e; + int ok; e = ev->event; + ok = 0; + if (e->win == menu_event_win) ok = 1; + else { + Evas_List l; + + for (l = open_menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + if ((e->win == m->win.main) || (e->win == m->win.evas)) ok = 1; + } + } + if (ok) + { + Evas_List l; + E_Menu *m = NULL; + E_Menu_Item *mi = NULL; + + for (l = open_menus; l; l = l->next) + { + m = l->data; + if (m->selected) + { + mi = m->selected; + } + } if (!strcmp(e->key, "Up")) { + e_menu_select(0, -1); } else if (!strcmp(e->key, "Down")) { + e_menu_select(0, 1); } else if (!strcmp(e->key, "Left")) { + e_menu_select(-1, 0); } else if (!strcmp(e->key, "Right")) { + e_menu_select(1, 0); } else if (!strcmp(e->key, "Escape")) { + for (l = menus; l; l = l->next) + { + m = l->data; + + if (m->current.visible) + e_menu_hide(m); + } + } + else if (!strcmp(e->key, "Return")) + { + if (mi) + { + e_menu_callback_item(m, mi); + mi->selected = 0; + mi->menu->selected = NULL; + } + for (l = menus; l; l = l->next) + { + m = l->data; + + if (m->current.visible) + e_menu_hide(m); + } } else { @@ -67,9 +271,491 @@ e_key_up(Eevent * ev) } } -E_Menu * -e_menu_new(void) +/* handling mouse down events */ +static void +e_mouse_down(Eevent * ev) { + Ev_Mouse_Down *e; + + e = ev->event; + { + } +} + +/* handling mouse up events */ +static void +e_mouse_up(Eevent * ev) +{ + Ev_Mouse_Up *e; + + e = ev->event; + if (e->win == menu_event_win) + { + if (open_menus) + { + E_Menu *m; + + m = open_menus->data; + if ((e->time - m->time) > 200) + { + Evas_List l; + + for (l = open_menus; l; l = l->next) + { + m = l->data; + if (m->selected) + { + e_menu_callback_item(m, m->selected); + m->selected->selected = 0; + m->selected = NULL; + break; + } + } + for (l = menus; l; l = l->next) + { + m = l->data; + + if (m->current.visible) + e_menu_hide(m); + } + } + } + } +} + +/* handling mouse move events */ +static void +e_mouse_move(Eevent * ev) +{ + Ev_Mouse_Move *e; + + e = ev->event; + if (e->win == menu_event_win) + { + Evas_List l; + + mouse_x = e->rx; + mouse_y = e->ry; + for (l = open_menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + evas_event_move(m->evas, + e->rx - m->current.x, + e->ry - m->current.y); + } + } + else + { + Evas_List l; + + mouse_x = e->rx; + mouse_y = e->ry; + for (l = open_menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + + evas_event_move(m->evas, + e->rx - m->current.x, + e->ry - m->current.y); + } + } + e_scroller_timer(0, NULL); +} + +/* handling mouse enter events */ +static void +e_mouse_in(Eevent * ev) +{ + Ev_Window_Enter *e; + + e = ev->event; + if (e->win == menu_event_win) + { + } +} + +/* handling mouse leave events */ +static void +e_mouse_out(Eevent * ev) +{ + Ev_Window_Leave *e; + + e = ev->event; + if (e->win == menu_event_win) + { + } + else + { + Evas_List l; + + for (l = open_menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + if ((e->win == m->win.main) || (e->win == m->win.evas)) + { + evas_event_move(m->evas, -99999999, -99999999); + } + } + } +} + +/* handling expose events */ +static void +e_window_expose(Eevent * ev) +{ + Ev_Window_Expose *e; + + e = ev->event; + { + Evas_List l; + + for (l = open_menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + if (e->win == m->win.evas) + { + m->first_expose = 1; + evas_update_rect(m->evas, e->x, e->y, e->w, e->h); + } + } + } +} + +static void +e_menu_item_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) +{ + E_Menu_Item *mi; + Evas_List l; + + mi = _data; + mi->menu->selected = mi; + mi->selected = 1; + mi->menu->redo_sel = 1; + mi->menu->changed = 1; + e_menu_hide_submenus(mi->menu); + if (mi->submenu) + { + e_menu_move_to(mi->submenu, + mi->menu->current.x + mi->menu->current.w, + mi->menu->current.y + mi->y - mi->menu->border.t); + e_menu_show(mi->submenu); + } +} + +static void +e_menu_item_out_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) +{ + E_Menu_Item *mi; + + mi = _data; + if (mi->menu->selected == mi) mi->menu->selected = NULL; + mi->selected = 0; + mi->menu->redo_sel = 1; + mi->menu->changed = 1; +} + +void +e_menu_callback_item(E_Menu *m, E_Menu_Item *mi) +{ + if (mi->func_select) mi->func_select(m, mi, mi->func_select_data); +} + +void +e_menu_item_set_callback(E_Menu_Item *mi, void (*func) (E_Menu *m, E_Menu_Item *mi, void *data), void *data) +{ + mi->func_select = func; + mi->func_select_data = data; +} + +void +e_menu_hide_submenus(E_Menu *menus_after) +{ + Evas_List l; + + for (l = open_menus; l; l = l->next) + { + if (l->data == menus_after) + { + l = l->next; + for (; l; l = l->next) + { + E_Menu *m; + + m = l->data; + e_menu_hide(m); + } + break; + } + } +} + +void +e_menu_select(int dx, int dy) +{ + Evas_List l, ll; + int done = 0; + + for (l = open_menus; (l) && (!done); l = l->next) + { + E_Menu *m; + + m = l->data; + if (m->selected) + { + for (ll = m->entries; (ll) && (!done); ll = ll->next) + { + E_Menu_Item *mi; + + mi = ll->data; + if (mi->selected) + { + if (dy != 0) + { + int ok = 0; + + if ((dy < 0) && (ll->prev)) ok = 1; + else if ((dy > 0) && (ll->next)) ok = 1; + if (ok) + { + if (m->selected) + { + m->selected->selected = 0; + m->redo_sel = 1; + m->changed = 1; + m->selected = NULL; + } + if (dy < 0) mi = ll->prev->data; + else mi = ll->next->data; + m->selected = mi; + mi->selected = 1; + mi->menu->redo_sel = 1; + mi->menu->changed = 1; + e_menu_hide_submenus(mi->menu); + if (mi->submenu) + { + e_menu_move_to(mi->submenu, + mi->menu->current.x + mi->menu->current.w, + mi->menu->current.y + mi->y - mi->menu->border.t); + e_menu_show(mi->submenu); + } + } + } + done = 1; + } + } + if (dx != 0) + { + int ok = 0; + + if ((dx < 0) && (l->prev)) ok = 1; + else if ((dx > 0) && (l->next)) ok = 1; + if (ok) + { + E_Menu_Item *mi = NULL; + E_Menu *mm; + + if (dx < 0) + { + Evas_List ll; + + mm = l->prev->data; + for (ll = mm->entries; (ll) && (!mi); ll = ll->next) + { + E_Menu_Item *mmi; + + mmi = ll->data; + if (mmi->submenu == m) mi = mmi; + } + } + else + { + mm = l->next->data; + if (mm->entries) + mi = mm->entries->data; + } + if (mi) + { + if (m->selected) + { + m->selected->selected = 0; + m->redo_sel = 1; + m->changed = 1; + m->selected = NULL; + } + mm->selected = mi; + mi->selected = 1; + mi->menu->redo_sel = 1; + mi->menu->changed = 1; + e_menu_hide_submenus(mi->menu); + if (mi->submenu) + { + e_menu_move_to(mi->submenu, + mi->menu->current.x + mi->menu->current.w, + mi->menu->current.y + mi->y - mi->menu->border.t); + e_menu_show(mi->submenu); + } + e_menu_update_visibility(mm); + } + } + done = 1; + } + e_menu_update_visibility(m); + } + } + if (!done) + { + if (open_menus) + { + E_Menu *m; + E_Menu_Item *mi; + + m = open_menus->data; + mi = m->entries->data; + m->selected = mi; + mi->selected = 1; + mi->menu->redo_sel = 1; + mi->menu->changed = 1; + if (mi->submenu) + { + e_menu_move_to(mi->submenu, + mi->menu->current.x + mi->menu->current.w, + mi->menu->current.y + mi->y - mi->menu->border.t); + e_menu_show(mi->submenu); + } + } + } +} + +void +e_menu_init(void) +{ + e_window_get_geometry(0, NULL, NULL, &screen_w, &screen_h); + e_event_filter_handler_add(EV_MOUSE_DOWN, e_mouse_down); + e_event_filter_handler_add(EV_MOUSE_UP, e_mouse_up); + e_event_filter_handler_add(EV_MOUSE_MOVE, e_mouse_move); + e_event_filter_handler_add(EV_MOUSE_IN, e_mouse_in); + e_event_filter_handler_add(EV_MOUSE_OUT, e_mouse_out); + e_event_filter_handler_add(EV_WINDOW_EXPOSE, e_window_expose); + e_event_filter_handler_add(EV_KEY_DOWN, e_key_down); + e_event_filter_handler_add(EV_KEY_UP, e_key_up); + e_event_filter_handler_add(EV_MOUSE_WHEEL, e_wheel); + e_event_filter_idle_handler_add(e_idle, NULL); +} + +void +e_menu_event_win_show(void) +{ + /* create it */ + if (!menu_event_win) + { + menu_event_win = e_window_input_new(0, 0, 0, screen_w, screen_h); + e_window_set_events(menu_event_win, XEV_MOUSE_MOVE | XEV_BUTTON | XEV_IN_OUT | XEV_KEY); + e_window_show(menu_event_win); + e_keyboard_grab(menu_event_win); + e_grab_mouse(menu_event_win, 1, 0); + } + /* raise it */ + if (menu_event_win) e_window_raise(menu_event_win); +} + +void +e_menu_event_win_hide(void) +{ + /* destroy it */ + if (menu_event_win) + { + e_keyboard_ungrab(); + e_window_destroy(menu_event_win); + menu_event_win = 0; + } +} + +void +e_menu_set_background(E_Menu *m) +{ + char *menus; + char buf[4096]; + char *style = "default"; + char *part; + int pl, pr, pt, pb; + + menus = e_config_get("menus"); + + part = "base.bits.db"; + sprintf(buf, "%s%s/%s", menus, style, part); + if ((m->bg_file) && (!strcmp(m->bg_file, buf))) return; + + IF_FREE(m->bg_file); + m->bg_file = strdup(buf); + + if (m->bg) ebits_free(m->bg); + m->bg = ebits_load(m->bg_file); + if (m->bg) ebits_set_color_class(m->bg, "Menu BG", 100, 200, 255, 255); + + pl = pr = pt = pb = 0; + if (m->bg) + { + ebits_get_insets(m->bg, &pl, &pr, &pt, &pb); + ebits_add_to_evas(m->bg, m->evas); + ebits_move(m->bg, 0, 0); + ebits_show(m->bg); + ebits_set_layer(m->bg, 0); + } + m->current.w += ((pl + pr) - (m->border.l + m->border.r)); + m->current.h += ((pt + pb) - (m->border.t + m->border.b)); + m->border.l = pl; + m->border.r = pr; + m->border.t = pt; + m->border.b = pb; + m->changed = 1; +} + +void +e_menu_set_sel(E_Menu *m, E_Menu_Item *mi) +{ + char *menus; + char buf[4096]; + char *style = "default"; + char *part; + int pl, pr, pt, pb; + int has_sub = 0; + int selected = 0; + + menus = e_config_get("menus"); + selected = mi->selected; + if (mi->submenu) has_sub = 1; + sprintf(buf, "%s%s/selected-%i.submenu-%i.bits.db", menus, style, + selected, has_sub); + if ((mi->bg_file) && (!strcmp(mi->bg_file, buf))) return; + + IF_FREE(mi->bg_file); + mi->bg_file = strdup(buf); + + if (mi->bg) ebits_free(mi->bg); + mi->bg = ebits_load(mi->bg_file); + if (mi->bg) ebits_set_color_class(mi->bg, "Menu BG", 100, 200, 255, 255); + + pl = pr = pt = pb = 0; + if (mi->bg) + { + ebits_get_insets(mi->bg, &pl, &pr, &pt, &pb); + ebits_add_to_evas(mi->bg, m->evas); + ebits_set_layer(mi->bg, 1); + } + if (m->sel_border.l < pl) {m->sel_border.l = pl; m->recalc_entries = 1;} + if (m->sel_border.r < pr) {m->sel_border.r = pr; m->recalc_entries = 1;} + if (m->sel_border.t < pt) {m->sel_border.t = pt; m->recalc_entries = 1;} + if (m->sel_border.b < pb) {m->sel_border.b = pb; m->recalc_entries = 1;} + m->redo_sel = 1; + m->changed = 1; } void @@ -77,37 +763,409 @@ e_menu_free(E_Menu *m) { } +E_Menu * +e_menu_new(void) +{ + E_Menu *m; + int max_colors = 216; + int font_cache = 1024 * 1024; + int image_cache = 8192 * 1024; + char *font_dir; + + font_dir = e_config_get("fonts"); + + m = NEW(E_Menu, 1); + ZERO(m, E_Menu, 1); + + OBJ_INIT(m, e_menu_free); + + m->win.main = e_window_override_new(0, 0, 0, 1, 1); + m->evas = evas_new_all(e_display_get(), + m->win.main, + 0, 0, 1, 1, + RENDER_METHOD_ALPHA_SOFTWARE, + max_colors, + font_cache, + image_cache, + font_dir); + /* aaaaaaaaah. this makes building the menu fast - moves the mouse far */ + /* far far far far away so callbacks and events arent triggerd as we */ + /* create objects that ofter hang around 0,0 - the default place for */ + /* the pointer to be... this means my 2000 entry menu works and comes up */ + /* pretty damn fast - considering i creating it when i click :) - problem */ + /* you can't fit 2000 entires into a window in X - since the limit is */ + /* 65536x65536 fo X - the other problem is i can only really draw in */ + /* the first 32768x32768 pixels of the window - thus limiting the menu */ + /* size to well - 32768x32768 - normally ok - but in extremes not so */ + /* good. We *COULD* do a workaround that meant we did the menu scrolling */ + /* within the evas and faked a menu window that only gets as big as the */ + /* screen - an then re-render it all - but well.. it's an extreme and */ + /* for now i think people will just have to live with a maximum menu size */ + /* of 32768x32768... didums! */ + evas_event_move(m->evas, -999999999, -99999999); + + m->win.evas = evas_get_window(m->evas); + e_window_set_events(m->win.evas, XEV_EXPOSE | XEV_MOUSE_MOVE | XEV_BUTTON | XEV_IN_OUT | XEV_KEY); + e_window_set_events(m->win.main, XEV_IN_OUT | XEV_KEY); + e_window_show(m->win.evas); + e_add_child(m->win.main, m->win.evas); + + e_menu_set_background(m); + + m->current.w = m->border.l + m->border.r; + m->current.h = m->border.t + m->border.b; + m->changed = 1; + + menus = evas_list_prepend(menus, m); + + return m; +} + void e_menu_hide(E_Menu *m) { + m->current.visible = 0; + m->changed = 1; } void e_menu_show(E_Menu *m) { + m->current.visible = 1; + m->changed = 1; } void e_menu_move_to(E_Menu *m, int x, int y) { + m->current.x = x; + m->current.y = y; + m->changed = 1; } void -e_menu_show_at_mouse(E_Menu *m, int x, int y) +e_menu_show_at_mouse(E_Menu *m, int x, int y, Time t) { + m->current.x = x; + m->current.y = y; + m->time = t; + e_menu_show(m); } void e_menu_add_item(E_Menu *m, E_Menu_Item *mi) { + m->entries = evas_list_append(m->entries, mi); + m->recalc_entries = 1; + m->changed = 1; + mi->menu = m; + e_menu_item_realize(m, mi); } void e_menu_del_item(E_Menu *m, E_Menu_Item *mi) { + m->entries = evas_list_remove(m->entries, mi); + m->recalc_entries = 1; + m->changed = 1; + e_menu_item_unrealize(m, mi); + mi->menu = NULL; +} + +void +e_menu_item_update(E_Menu *m, E_Menu_Item *mi) +{ + evas_move(m->evas, mi->obj_text, mi->x + m->sel_border.l, mi->y + m->sel_border.t); + evas_move(m->evas, mi->obj_entry, mi->x, mi->y); + evas_resize(m->evas, mi->obj_entry, mi->size.w + m->sel_border.l + m->sel_border.r, mi->size.h + m->sel_border.t + m->sel_border.b); +} + +void +e_menu_item_unrealize(E_Menu *m, E_Menu_Item *mi) +{ +} + +void +e_menu_item_realize(E_Menu *m, E_Menu_Item *mi) +{ + double tw, th; + + mi->obj_text = evas_add_text(m->evas, "borzoib", 8, mi->str); + mi->obj_entry = evas_add_rectangle(m->evas); + evas_set_color(m->evas, mi->obj_text, 0, 0, 0, 255); + evas_set_color(m->evas, mi->obj_entry, 0, 0, 0, 0); + evas_show(m->evas, mi->obj_text); + evas_show(m->evas, mi->obj_entry); + evas_set_layer(m->evas, mi->obj_text, 10); + evas_set_layer(m->evas, mi->obj_entry, 11); + evas_get_geometry(m->evas, mi->obj_text, NULL, NULL, &tw, &th); + mi->size.min.w = tw; + mi->size.min.h = th; + evas_callback_add(m->evas, mi->obj_entry, CALLBACK_MOUSE_IN, e_menu_item_in_cb, mi); + evas_callback_add(m->evas, mi->obj_entry, CALLBACK_MOUSE_OUT, e_menu_item_out_cb, mi); + e_menu_set_sel(m, mi); +} + +E_Menu_Item * +e_menu_item_new(char *str) +{ + E_Menu_Item *mi; + + mi = NEW(E_Menu_Item, 1); + ZERO(mi, E_Menu_Item, 1); + + mi->str = strdup(str); + + return mi; +} + +void +e_menu_obscure_outside_screen(E_Menu *m) +{ + /* obscure stuff outside the screen boundaries - optimizes rendering */ + evas_clear_obscured_rects(m->evas); + evas_add_obscured_rect(m->evas, + -m->current.x - 100000, + -m->current.y - 100000, + 200000 + screen_w, 100000); + evas_add_obscured_rect(m->evas, + -m->current.x - 100000, + -m->current.y - 100000, + 100000, 200000 + screen_h); + evas_add_obscured_rect(m->evas, + -m->current.x - 100000, + screen_h - m->current.y, + 200000 + screen_w, 100000); + evas_add_obscured_rect(m->evas, + screen_w - m->current.x, + -m->current.y - 100000, + 100000, 200000 + screen_h); +} + +void +e_menu_scroll_all_by(int dx, int dy) +{ + Evas_List l; + + for (l = menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + if (m->current.visible) + { + m->current.x += dx; + m->current.y += dy; + m->changed = 1; + } + } + for (l = open_menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + evas_event_move(m->evas, + mouse_x - m->current.x, + mouse_y - m->current.y); + } +} + +void +e_menu_update_visibility(E_Menu *m) +{ + E_Menu_Item *mi; + + mi = m->selected; + if (mi) + { + /* if the entry is off screen - scroll so it's on screen */ + if (m->current.x < 0) + e_menu_scroll_all_by(-m->current.x, 0); + else if ((m->current.x + m->current.w) > screen_w) + { + e_menu_scroll_all_by(screen_w - (m->current.x + m->current.w), 0); + } + if ((m->current.y + m->sel_border.t + mi->y) < 0) + { + if (m->current.y < -(screen_h / 4)) + e_menu_scroll_all_by(0, screen_h / 4); + else + e_menu_scroll_all_by(0, - m->current.y); + } + else if ((m->current.y + m->sel_border.t + mi->y + mi->size.h) > screen_h) + { + if ((m->current.y + m->current.h - screen_h) < (screen_h / 4)) + e_menu_scroll_all_by(0, -(m->current.y + m->current.h - screen_h)); + else + e_menu_scroll_all_by(0, -(screen_h / 4)); + } + } +} + +void +e_menu_update_base(E_Menu *m) +{ + int size_changed = 0; + int location_changed = 0; + + if (!m->changed) return; + + if (m->recalc_entries) + { + Evas_List l; + int max_w, max_h; + int i, count; + + max_w = 0; + max_h = 0; + count = 0; + for (l = m->entries; l; l = l->next) + { + E_Menu_Item *mi; + + mi = l->data; + if (mi->size.min.w > max_w) max_w = mi->size.min.w; + if (mi->size.min.h > max_h) max_h = mi->size.min.h; + count++; + } + m->current.w = m->border.l + m->border.r + max_w + m->sel_border.l + m->sel_border.r; + m->current.h = m->border.b + m->border.t + ((max_h + m->sel_border.t + m->sel_border.b) * count); + i = 0; + for (l = m->entries; l; l = l->next) + { + E_Menu_Item *mi; + + mi = l->data; + mi->size.w = max_w; + mi->size.h = max_h; + mi->x = m->border.l; + mi->y = m->border.t + (i * (max_h + m->sel_border.t + m->sel_border.b)); + e_menu_item_update(m, mi); + i++; + } + m->recalc_entries = 0; + } + if (m->redo_sel) + { + Evas_List l; + + for (l = m->entries; l; l = l->next) + { + E_Menu_Item *mi; + + mi = l->data; + e_menu_set_sel(m, mi); + if (mi) + { + if (mi->bg) + { + ebits_move(mi->bg, mi->x, mi->y); + ebits_resize(mi->bg, + mi->size.w + m->sel_border.l + m->sel_border.r, + mi->size.h + m->sel_border.t + m->sel_border.b); + ebits_show(mi->bg); + } + } + } + m->redo_sel = 0; + } + + if ((m->current.x != m->previous.x) || + (m->current.y != m->previous.y)) + location_changed = 1; + if ((m->current.w != m->previous.w) || + (m->current.h != m->previous.h)) + size_changed = 1; + + if ((location_changed) && (size_changed)) + { + e_window_move_resize(m->win.main, m->current.x, m->current.y, m->current.w, m->current.h); + e_menu_obscure_outside_screen(m); + } + else if (location_changed) + { + e_window_move(m->win.main, m->current.x, m->current.y); + e_menu_obscure_outside_screen(m); + } + else if (size_changed) + { + e_window_resize(m->win.main, m->current.w, m->current.h); + } + if (size_changed) + { + e_window_resize(m->win.evas, m->current.w, m->current.h); + evas_set_output_size(m->evas, m->current.w, m->current.h); + evas_set_output_viewport(m->evas, 0, 0, m->current.w, m->current.h); + if (m->bg) ebits_resize(m->bg, m->current.w, m->current.h); + } +} + +void +e_menu_update_finish(E_Menu *m) +{ + if (!m->changed) return; + m->previous = m->current; + m->changed = 0; +} + +void +e_menu_update_shows(E_Menu *m) +{ + if (!m->changed) return; + if (m->current.visible != m->previous.visible) + { + if (m->current.visible) + { + e_window_raise(m->win.main); + e_menu_event_win_show(); + e_window_show(m->win.main); + open_menus = evas_list_append(open_menus, m); + } + } +} + +void +e_menu_update_hides(E_Menu *m) +{ + if (!m->changed) return; + if (m->current.visible != m->previous.visible) + { + if (!m->current.visible) + { + if (m->selected) + { + E_Menu_Item *mi; + + mi = m->selected; + mi->selected = 0; + e_menu_set_sel(m, mi); + if (mi) + { + if (mi->bg) + { + ebits_move(mi->bg, mi->x, mi->y); + ebits_resize(mi->bg, + mi->size.w + m->sel_border.l + m->sel_border.r, + mi->size.h + m->sel_border.t + m->sel_border.b); + ebits_show(mi->bg); + } + } + m->redo_sel = 1; + m->changed = 1; + m->selected = NULL; + } + open_menus = evas_list_remove(open_menus, m); + e_window_hide(m->win.main); + if (!open_menus) e_menu_event_win_hide(); + } + } } void e_menu_update(E_Menu *m) { + e_menu_update_base(m); + e_menu_update_shows(m); + e_menu_update_hides(m); + e_menu_update_finish(m); }