default border from theme. Has fallback if border isn't present in new theme.
Removed old e_int_border_border files as this is all merged now into
e_int_config_borders.
SVN revision: 26596
e_ilist.h \
e_tlist.h \
e_livethumb.h \
-e_int_border_border.h \
e_widget_ilist.h \
e_widget_tlist.h \
e_widget_config_list.h \
e_int_config_transitions.h \
e_fwin.h \
e_widget_aspect.h \
-e_widget_desk_preview.h
+e_widget_desk_preview.h \
+e_int_config_borders.h
enlightenment_src = \
e_user.c \
e_ilist.c \
e_tlist.c \
e_livethumb.c \
-e_int_border_border.c \
e_widget_ilist.c \
e_widget_tlist.c \
e_widget_config_list.c \
e_fwin.c \
e_widget_aspect.c \
e_widget_desk_preview.c \
+e_int_config_borders.c \
$(ENLIGHTENMENTHEADERS)
enlightenment_SOURCES = \
else if ((bd->client.netwm.state.skip_taskbar) ||
(bd->client.netwm.state.skip_pager))
bordername = "skipped";
- else
- bordername = "default";
+ else
+ bordername = e_config->theme_default_border_style;
if ((!bd->client.border.name) || (strcmp(bd->client.border.name, bordername)))
{
bd->client.border.name);
ok = e_theme_edje_object_set(o, "base/theme/borders", buf);
if ((!ok) && (strcmp(bd->client.border.name, "borderless")))
- ok = e_theme_edje_object_set(o, "base/theme/borders",
- "e/widgets/border/default/border");
+ {
+ ok = e_theme_edje_object_set(o, "base/theme/borders",
+ "e/widgets/border/default/border");
+ if (ok)
+ {
+ /* Reset default border style to default */
+ if (e_config->theme_default_border_style)
+ evas_stringshare_del(e_config->theme_default_border_style);
+ e_config->theme_default_border_style = evas_stringshare_add("default");
+ e_config_save_queue();
+ }
+ }
+
if (ok)
{
const char *shape_option;
e_configure_standard_item_add(eco, "enlightenment/themes", _("Theme"), e_int_config_theme);
e_configure_standard_item_add(eco, "enlightenment/colors", _("Colors"), e_int_config_color_classes);
e_configure_standard_item_add(eco, "enlightenment/fonts", _("Fonts"), e_int_config_fonts);
+ e_configure_standard_item_add(eco, "enlightenment/windows", _("Borders"), e_int_config_borders);
e_configure_standard_item_add(eco, "enlightenment/icon_themes", _("Icon Theme"), e_int_config_icon_themes);
e_configure_standard_item_add(eco, "enlightenment/mouse", _("Mouse Cursor"), e_int_config_cursor);
e_configure_standard_item_add(eco, "enlightenment/windows", _("Window Display"), e_int_config_window_display);
#include "e_int_border_menu.h"
#include "e_ilist.h"
#include "e_livethumb.h"
-#include "e_int_border_border.h"
#include "e_widget_ilist.h"
#include "e_widget_config_list.h"
#include "e_slider.h"
#include "e_fwin.h"
#include "e_widget_aspect.h"
#include "e_widget_desk_preview.h"
+#include "e_int_config_borders.h"
+++ /dev/null
-/*
- * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
- */
-#include "e.h"
-
-/* PROTOTYPES - same all the time */
-
-static void *_create_data(E_Config_Dialog *cfd);
-static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
-static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
-static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
-
-/* Actual config data we will be playing with whil the dialog is active */
-struct _E_Config_Dialog_Data
-{
- E_Border *border;
- char *bordername;
- int remember_border;
-};
-
-/* a nice easy setup function that does the dirty work */
-EAPI void
-e_int_border_border(E_Border *bd)
-{
- E_Config_Dialog *cfd;
- E_Config_Dialog_View *v;
-
- v = E_NEW(E_Config_Dialog_View, 1);
- if (v)
- {
- /* methods */
- v->create_cfdata = _create_data;
- v->free_cfdata = _free_data;
- v->basic.apply_cfdata = _basic_apply_data;
- v->basic.create_widgets = _basic_create_widgets;
- v->override_auto_apply = 1;
-
- /* create config diaolg for bd object/data */
- cfd = e_config_dialog_new(bd->zone->container,
- _("Window Border Selection"),
- "E", "_border_sel_dialog",
- NULL, 0, v, bd);
- bd->border_border_dialog = cfd;
- }
-}
-
-/**--CREATE--**/
-static void
-_fill_data(E_Config_Dialog_Data *cfdata)
-{
- if ((cfdata->border->remember) &&
- (cfdata->border->remember->apply & E_REMEMBER_APPLY_BORDER))
- cfdata->remember_border = 1;
- cfdata->bordername = strdup(cfdata->border->client.border.name);
-}
-
-static void *
-_create_data(E_Config_Dialog *cfd)
-{
- /* Create cfdata - cfdata is a temporary block of config data that this
- * dialog will be dealing with while configuring. it will be applied to
- * the running systems/config in the apply methods
- */
- E_Config_Dialog_Data *cfdata;
-
- cfdata = E_NEW(E_Config_Dialog_Data, 1);
- cfdata->border = cfd->data;
- _fill_data(cfdata);
- return cfdata;
-}
-
-static void
-_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
-{
- /* Free the cfdata */
- cfdata->border->border_border_dialog = NULL;
- E_FREE(cfdata->bordername);
- free(cfdata);
-}
-
-/**--APPLY--**/
-static int
-_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
-{
- /* FIXME: need to check if the remember stuff will actually work or notx
- * (see e_int_border_remember.c where it checks and warns) */
- if (cfdata->remember_border)
- {
- if (!cfdata->border->remember)
- {
- cfdata->border->remember = e_remember_new();
- if (cfdata->border->remember)
- {
- e_remember_use(cfdata->border->remember);
- e_remember_update(cfdata->border->remember, cfdata->border);
- cfdata->border->remember->match |= E_REMEMBER_MATCH_NAME;
- cfdata->border->remember->match |= E_REMEMBER_MATCH_CLASS;
- cfdata->border->remember->match |= E_REMEMBER_MATCH_ROLE;
- cfdata->border->remember->match |= E_REMEMBER_MATCH_TYPE;
- cfdata->border->remember->match |= E_REMEMBER_MATCH_TRANSIENT;
- cfdata->border->remember->apply |= E_REMEMBER_APPLY_BORDER;
- }
- }
- }
- else
- {
- if (cfdata->border->remember)
- {
- cfdata->border->remember->apply &= ~E_REMEMBER_APPLY_BORDER;
- if (cfdata->border->remember->apply == 0)
- {
- e_remember_unuse(cfdata->border->remember);
- e_remember_del(cfdata->border->remember);
- cfdata->border->remember = NULL;
- }
- }
- }
- if ((!cfdata->border->lock_border) && (!cfdata->border->shaded))
- {
- if (cfdata->border->bordername) evas_stringshare_del(cfdata->border->bordername);
- cfdata->border->bordername = evas_stringshare_add(cfdata->bordername);
- cfdata->border->client.border.changed = 1;
- cfdata->border->changed = 1;
- }
- e_config_save_queue();
- return 1; /* Apply was OK */
-}
-
-/**--GUI--**/
-static Evas_Object *
-_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
-{
- /* generate the core widget layout for a basic dialog */
- Evas_Object *o, *ob, *oi, *oj, *orect;
- Evas_Coord wmw, wmh;
- Evas_List *borders, *l;
- int sel, n;
-
- o = e_widget_list_add(evas, 0, 0);
-
- oi = e_widget_ilist_add(evas, 80, 48, &(cfdata->bordername));
-
- sel = 0;
- borders = e_theme_border_list();
-
- orect = evas_object_rectangle_add(evas);
- evas_object_color_set(orect, 0, 0, 0, 128);
- e_widget_ilist_append(oi, orect, "borderless", NULL, NULL, "borderless");
-
- for (n = 1, l = borders; l; l = l->next, n++)
- {
- char buf[4096];
-
- ob = e_livethumb_add(evas);
- e_livethumb_vsize_set(ob, 160, 96);
- oj = edje_object_add(e_livethumb_evas_get(ob));
- snprintf(buf, sizeof(buf), "e/widgets/border/%s/border", (char *)l->data);
- e_theme_edje_object_set(oj, "base/theme/borders", buf);
- e_livethumb_thumb_set(ob, oj);
- orect = evas_object_rectangle_add(e_livethumb_evas_get(ob));
- evas_object_color_set(orect, 0, 0, 0, 128);
- evas_object_show(orect);
- edje_object_part_swallow(oj, "e.swallow.client", orect);
- e_widget_ilist_append(oi, ob, (char *)l->data, NULL, NULL, l->data);
- if (!strcmp(cfdata->border->client.border.name, (char *)l->data))
- sel = n;
- }
- e_widget_min_size_get(oi, &wmw, &wmh);
- e_widget_min_size_set(oi, wmw, 250);
-
- e_widget_ilist_go(oi);
- e_widget_ilist_selected_set(oi, sel);
-
- e_widget_list_object_append(o, oi, 1, 1, 0.5);
-
- ob = e_widget_check_add(evas, _("Remember this Border for this window next time it appears"), &(cfdata->remember_border));
- e_widget_list_object_append(o, ob, 0, 0, 1.0);
- return o;
-}
+++ /dev/null
-/*
- * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
- */
-#ifdef E_TYPEDEFS
-#else
-#ifndef E_INT_BORDER_BORDER_H
-#define E_INT_BORDER_BORDER_H
-
-EAPI void e_int_border_border(E_Border *bd);
-
-#endif
-#endif
E_Border *bd;
bd = data;
if (bd->border_border_dialog) return;
- e_int_border_border(bd);
+ e_int_config_borders_border(bd);
}
static void
--- /dev/null
+#include "e.h"
+
+static E_Config_Dialog_View *_config_view_new();
+
+static void *_create_data(E_Config_Dialog *cfd);
+static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
+static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
+static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
+static void _fill_data(E_Config_Dialog_Data *cfdata);
+static void _basic_apply_border(E_Config_Dialog_Data *cfdata);
+
+struct _E_Config_Dialog_Data
+{
+ E_Border *border;
+ E_Container *container;
+ char *bordername;
+ int remember_border;
+};
+
+EAPI E_Config_Dialog *
+e_int_config_borders(E_Container *con)
+{
+ E_Config_Dialog *cfd;
+ E_Config_Dialog_View *v;
+
+ v = _config_view_new();
+ if (!v) return NULL;
+ cfd = e_config_dialog_new(con, _("Default Border Style"),
+ "E", "_config_border_style_dialog",
+ NULL, 0, v, con);
+ return cfd;
+}
+
+EAPI E_Config_Dialog *
+e_int_config_borders_border(E_Border *bd)
+{
+ E_Config_Dialog *cfd;
+ E_Config_Dialog_View *v;
+
+ v = _config_view_new();
+ if (!v) return NULL;
+ cfd = e_config_dialog_new(bd->zone->container,
+ _("Window Border Selection"),
+ "E", "_config_border_style_dialog",
+ NULL, 0, v, bd);
+ bd->border_border_dialog = cfd;
+ return cfd;
+}
+
+static E_Config_Dialog_View *
+_config_view_new()
+{
+ E_Config_Dialog_View *v;
+
+ v = E_NEW(E_Config_Dialog_View, 1);
+ if (!v) return NULL;
+ v->create_cfdata = _create_data;
+ v->free_cfdata = _free_data;
+ v->basic.create_widgets = _basic_create_widgets;
+ v->basic.apply_cfdata = _basic_apply_data;
+ v->override_auto_apply = 1;
+ return v;
+}
+
+static void *
+_create_data(E_Config_Dialog *cfd)
+{
+ E_Config_Dialog_Data *cfdata;
+
+ cfdata = E_NEW(E_Config_Dialog_Data, 1);
+ cfdata->container = NULL;
+ cfdata->border = NULL;
+ if (E_OBJECT(cfd->data)->type == E_CONTAINER_TYPE)
+ cfdata->container = cfd->data;
+ else
+ cfdata->border = cfd->data;
+
+ _fill_data(cfdata);
+ return cfdata;
+}
+
+static void
+_fill_data(E_Config_Dialog_Data *cfdata)
+{
+ if (cfdata->border)
+ {
+ if ((cfdata->border->remember) &&
+ (cfdata->border->remember->apply & E_REMEMBER_APPLY_BORDER))
+ {
+ cfdata->remember_border = 1;
+ }
+ cfdata->bordername = strdup(cfdata->border->client.border.name);
+ }
+ else
+ cfdata->bordername = strdup(e_config->theme_default_border_style);
+}
+
+static void
+_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
+{
+ if (cfdata->border)
+ cfdata->border->border_border_dialog = NULL;
+
+ E_FREE(cfdata->bordername);
+ free(cfdata);
+}
+
+static int
+_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
+{
+ if (cfdata->border)
+ _basic_apply_border(cfdata);
+ else if (cfdata->container)
+ {
+ if (e_config->theme_default_border_style)
+ evas_stringshare_del(e_config->theme_default_border_style);
+ e_config->theme_default_border_style = evas_stringshare_add(cfdata->bordername);
+ /* FIXME: Should this trigger an E Restart to reset all borders ? */
+ }
+ e_config_save_queue();
+ return 1;
+}
+
+static void
+_basic_apply_border(E_Config_Dialog_Data *cfdata)
+{
+ if (cfdata->remember_border)
+ {
+ if (!cfdata->border->remember)
+ {
+ cfdata->border->remember = e_remember_new();
+ if (cfdata->border->remember)
+ {
+ e_remember_use(cfdata->border->remember);
+ e_remember_update(cfdata->border->remember, cfdata->border);
+ cfdata->border->remember->match |= E_REMEMBER_MATCH_NAME;
+ cfdata->border->remember->match |= E_REMEMBER_MATCH_CLASS;
+ cfdata->border->remember->match |= E_REMEMBER_MATCH_ROLE;
+ cfdata->border->remember->match |= E_REMEMBER_MATCH_TYPE;
+ cfdata->border->remember->match |= E_REMEMBER_MATCH_TRANSIENT;
+ cfdata->border->remember->apply |= E_REMEMBER_APPLY_BORDER;
+ }
+ }
+ }
+ else
+ {
+ if (cfdata->border->remember)
+ {
+ cfdata->border->remember->apply &= ~E_REMEMBER_APPLY_BORDER;
+ if (cfdata->border->remember->apply == 0)
+ {
+ e_remember_unuse(cfdata->border->remember);
+ e_remember_del(cfdata->border->remember);
+ cfdata->border->remember = NULL;
+ }
+ }
+ }
+ if ((!cfdata->border->lock_border) && (!cfdata->border->shaded))
+ {
+ if (cfdata->border->bordername) evas_stringshare_del(cfdata->border->bordername);
+ cfdata->border->bordername = evas_stringshare_add(cfdata->bordername);
+ cfdata->border->client.border.changed = 1;
+ cfdata->border->changed = 1;
+ }
+}
+
+static Evas_Object *
+_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
+{
+ Evas_Object *o, *ol, *ob, *oj, *orect;
+ Evas_Coord w, h;
+ Evas_List *borders, *l;
+ int n, sel = 0;
+ char *tmp;
+
+ if (cfdata->border)
+ tmp = strdup(cfdata->border->client.border.name);
+ else
+ tmp = strdup(e_config->theme_default_border_style);
+
+ o = e_widget_list_add(evas, 0, 0);
+ ol = e_widget_ilist_add(evas, 80, 48, &(cfdata->bordername));
+ borders = e_theme_border_list();
+ orect = evas_object_rectangle_add(evas);
+ evas_object_color_set(orect, 0, 0, 0, 128);
+ e_widget_ilist_append(ol, orect, "borderless", NULL, NULL, "borderless");
+
+ for (n = 1, l = borders; l; l = l->next, n++)
+ {
+ char buf[4096];
+
+ ob = e_livethumb_add(evas);
+ e_livethumb_vsize_set(ob, 160, 96);
+ oj = edje_object_add(e_livethumb_evas_get(ob));
+ snprintf(buf, sizeof(buf), "e/widgets/border/%s/border", (char *)l->data);
+ e_theme_edje_object_set(oj, "base/theme/borders", buf);
+ e_livethumb_thumb_set(ob, oj);
+ orect = evas_object_rectangle_add(e_livethumb_evas_get(ob));
+ evas_object_color_set(orect, 0, 0, 0, 128);
+ evas_object_show(orect);
+ edje_object_part_swallow(oj, "e.swallow.client", orect);
+ e_widget_ilist_append(ol, ob, (char *)l->data, NULL, NULL, l->data);
+ if (!strcmp(tmp, (char *)l->data))
+ sel = n;
+ }
+
+ e_widget_min_size_get(ol, &w, &h);
+ e_widget_min_size_set(ol, w, 250);
+
+ e_widget_ilist_go(ol);
+ e_widget_ilist_selected_set(ol, sel);
+
+ e_widget_list_object_append(o, ol, 1, 1, 0.5);
+ if (cfdata->border)
+ {
+ ob = e_widget_check_add(evas, _("Remember this Border for this window next time it appears"), &(cfdata->remember_border));
+ e_widget_list_object_append(o, ob, 0, 0, 1.0);
+ }
+ E_FREE(tmp);
+ return o;
+}
--- /dev/null
+#ifdef E_TYPEDEFS
+#else
+#ifndef E_INT_CONFIG_BORDERS_H
+#define E_INT_CONFIG_BORDERS_H
+
+EAPI E_Config_Dialog *e_int_config_borders(E_Container *con);
+EAPI E_Config_Dialog *e_int_config_borders_border(E_Border *border);
+
+#endif
+#endif