diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 0af81c2e5..fe40747ca 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -582,6 +582,7 @@ _e_client_del(E_Client *ec) E_FREE_FUNC(ec->border_remember_dialog, e_object_del); E_FREE_FUNC(ec->border_border_dialog, e_object_del); E_FREE_FUNC(ec->border_prop_dialog, e_object_del); + E_FREE_FUNC(ec->color_editor, evas_object_del); e_int_client_menu_del(ec); E_FREE_FUNC(ec->raise_timer, ecore_timer_del); diff --git a/src/bin/e_client.h b/src/bin/e_client.h index 2cb20ad32..d0b4c3953 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -649,6 +649,7 @@ struct E_Client Eina_List *stick_desks; E_Menu *border_menu; + Evas_Object *color_editor; E_Config_Dialog *border_locks_dialog; E_Config_Dialog *border_remember_dialog; E_Config_Dialog *border_border_dialog; diff --git a/src/bin/e_int_client_menu.c b/src/bin/e_int_client_menu.c index eb8f6b6bf..09a68be07 100644 --- a/src/bin/e_int_client_menu.c +++ b/src/bin/e_int_client_menu.c @@ -610,6 +610,32 @@ _e_client_menu_cb_icon_edit(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi E e_desktop_client_edit(ec); } +static void +_e_client_menu_cb_colors_edit_del(void *data, ...) +{ + E_Client *ec = data; + + E_FREE_FUNC(ec->color_editor, evas_object_del); + e_comp_shape_queue(); +} + +static void +_e_client_menu_cb_colors_edit(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED) +{ + Evas_Object *o; + E_Client *ec = data; + + ec->color_editor = o = elm_color_class_editor_add(e_comp->elm, e_client_util_win_get(data)); + if (!o) return; + e_comp_shape_queue(); + evas_object_geometry_set(o, ec->client.x, ec->client.y, ec->client.w, ec->client.h); + evas_object_layer_set(o, E_LAYER_POPUP); + evas_object_show(o); + evas_object_smart_callback_add(o, "application_closed", (Evas_Smart_Cb)_e_client_menu_cb_colors_edit_del, ec); + evas_object_smart_callback_add(o, "dismissed", (Evas_Smart_Cb)_e_client_menu_cb_colors_edit_del, ec); + evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, (Evas_Object_Event_Cb)_e_client_menu_cb_colors_edit_del, ec); +} + static void _e_client_menu_cb_application_pre(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi) { @@ -660,6 +686,12 @@ _e_client_menu_cb_application_pre(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item e_menu_item_callback_set(submi, _e_client_menu_cb_kbdshrtct_add, ec); e_util_menu_item_theme_icon_set(submi, "preferences-desktop-keyboard"); } + + if (ec->color_editor) return; + submi = e_menu_item_new(subm); + e_menu_item_label_set(submi, _("Edit Color Scheme")); + e_menu_item_callback_set(submi, _e_client_menu_cb_colors_edit, ec); + e_util_menu_item_theme_icon_set(submi, "preferences-desktop-color"); } static void