From: Enlightenment S. <no-...@en...> - 2009-09-10 21:02:23
|
Log: return icon.list size if icon.icon size is not set Author: jeffdameth Date: 2009-09-10 14:02:09 -0700 (Thu, 10 Sep 2009) New Revision: 42392 Modified: trunk/e/src/bin/e_fm.c trunk/e/src/bin/e_widget_flist.c Modified: trunk/e/src/bin/e_fm.c =================================================================== --- trunk/e/src/bin/e_fm.c 2009-09-10 20:57:22 UTC (rev 42391) +++ trunk/e/src/bin/e_fm.c 2009-09-10 21:02:09 UTC (rev 42392) @@ -550,7 +550,9 @@ { if (sd->icon_size > -1) return sd->icon_size * e_scale; - return sd->config->icon.icon.w; + if (sd->config->icon.icon.w) + return sd->config->icon.icon.w; + return sd->config->icon.list.w; } static inline Evas_Coord @@ -558,7 +560,9 @@ { if (sd->icon_size > -1) return sd->icon_size * e_scale; - return sd->config->icon.icon.h; + if (sd->config->icon.icon.h) + return sd->config->icon.icon.h; + return sd->config->icon.list.h; } static int Modified: trunk/e/src/bin/e_widget_flist.c =================================================================== --- trunk/e/src/bin/e_widget_flist.c 2009-09-10 20:57:22 UTC (rev 42391) +++ trunk/e/src/bin/e_widget_flist.c 2009-09-10 21:02:09 UTC (rev 42392) @@ -48,8 +48,6 @@ wd->fmc.view.no_subdir_jump = 0; wd->fmc.icon.list.w = 48; wd->fmc.icon.list.h = 48; - wd->fmc.icon.icon.w = 48; - wd->fmc.icon.icon.h = 48; wd->fmc.icon.fixed.w = 1; wd->fmc.icon.fixed.h = 1; wd->fmc.icon.extension.show = 0; |
From: Enlightenment S. <no-...@en...> - 2009-09-12 02:44:55
|
Log: set border remember match entrys only on creation added text entries for advanced border remember dialog(not editable for now) Author: jeffdameth Date: 2009-09-11 19:44:41 -0700 (Fri, 11 Sep 2009) New Revision: 42428 Modified: trunk/e/src/bin/e_int_border_remember.c trunk/e/src/bin/e_remember.c Modified: trunk/e/src/bin/e_int_border_remember.c =================================================================== --- trunk/e/src/bin/e_int_border_remember.c 2009-09-11 23:51:47 UTC (rev 42427) +++ trunk/e/src/bin/e_int_border_remember.c 2009-09-12 02:44:41 UTC (rev 42428) @@ -24,6 +24,11 @@ int mode; int warned; /*- ADVANCED -*/ + char *name; + char *class; + char *title; + char *role; + char *command; struct { int match_name; int match_class; @@ -57,7 +62,7 @@ { E_Config_Dialog *cfd; E_Config_Dialog_View *v; - + v = E_NEW(E_Config_Dialog_View, 1); if (v) { @@ -69,7 +74,7 @@ v->advanced.apply_cfdata = _advanced_apply_data; v->advanced.create_widgets = _advanced_create_widgets; v->override_auto_apply = 1; - + /* create config dialog for bd object/data */ cfd = e_config_dialog_new(bd->zone->container, _("Window Remember"), @@ -83,35 +88,13 @@ static void _fill_data(E_Config_Dialog_Data *cfdata) { - if (cfdata->border->remember) - { - if (cfdata->border->remember->apply_first_only) cfdata->remember.apply_first_only = 1; - if (cfdata->border->remember->match & E_REMEMBER_MATCH_NAME) cfdata->remember.match_name = 1; - if (cfdata->border->remember->match & E_REMEMBER_MATCH_CLASS) cfdata->remember.match_class = 1; - if (cfdata->border->remember->match & E_REMEMBER_MATCH_TITLE) cfdata->remember.match_title = 1; - if (cfdata->border->remember->match & E_REMEMBER_MATCH_ROLE) cfdata->remember.match_role = 1; - if (cfdata->border->remember->match & E_REMEMBER_MATCH_TYPE) cfdata->remember.match_type = 1; - if (cfdata->border->remember->match & E_REMEMBER_MATCH_TRANSIENT) cfdata->remember.match_transient = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_POS) cfdata->remember.apply_pos = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_SIZE) cfdata->remember.apply_size = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_LAYER) cfdata->remember.apply_layer = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_LOCKS) cfdata->remember.apply_locks = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_BORDER) cfdata->remember.apply_border = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_STICKY) cfdata->remember.apply_sticky = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_DESKTOP) cfdata->remember.apply_desktop = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_SHADE) cfdata->remember.apply_shade = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_FULLSCREEN) cfdata->remember.apply_fullscreen = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_ZONE) cfdata->remember.apply_zone = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_SKIP_WINLIST) cfdata->remember.apply_skip_winlist = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_SKIP_PAGER) cfdata->remember.apply_skip_pager = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_SKIP_TASKBAR) cfdata->remember.apply_skip_taskbar = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_RUN) cfdata->remember.apply_run = 1; - if (cfdata->border->remember->apply & E_REMEMBER_APPLY_ICON_PREF) cfdata->remember.apply_icon_pref = 1; - if (cfdata->border->remember->apply & E_REMEMBER_SET_FOCUS_ON_START) cfdata->remember.set_focus_on_start = 1; + E_Border *bd; + E_Remember *rem; - } - if (!cfdata->border->remember) cfdata->mode = MODE_NOTHING; - else if ((cfdata->remember.apply_pos) && (cfdata->remember.apply_size) && + bd = cfdata->border; + + if (!bd->remember) cfdata->mode = MODE_NOTHING; + else if ((cfdata->remember.apply_pos) && (cfdata->remember.apply_size) && (cfdata->remember.apply_locks) && (cfdata->remember.apply_layer) && (cfdata->remember.apply_border) && (cfdata->remember.apply_sticky) && (cfdata->remember.apply_desktop) && (cfdata->remember.apply_shade) && @@ -119,16 +102,99 @@ (cfdata->remember.apply_skip_pager) && (cfdata->remember.apply_fullscreen) && (cfdata->remember.apply_skip_taskbar)) cfdata->mode = MODE_ALL; - else if ((cfdata->remember.apply_pos) && (cfdata->remember.apply_size) && + else if ((cfdata->remember.apply_pos) && (cfdata->remember.apply_size) && (cfdata->remember.apply_locks)) cfdata->mode = MODE_GEOMETRY_LOCKS; - else if ((cfdata->remember.apply_pos) && (cfdata->remember.apply_size)) + else if ((cfdata->remember.apply_pos) && (cfdata->remember.apply_size)) cfdata->mode = MODE_GEOMETRY; else if ((cfdata->remember.apply_locks)) cfdata->mode = MODE_LOCKS; else cfdata->mode = MODE_NOTHING; + + if (bd->client.icccm.name && bd->client.icccm.name[0]) + cfdata->name = strdup(bd->client.icccm.name); + if (bd->client.icccm.class && bd->client.icccm.class[0]) + cfdata->class = strdup(bd->client.icccm.class); + if (bd->client.netwm.name && bd->client.netwm.name[0]) + cfdata->title = strdup(bd->client.netwm.name); + else if (bd->client.icccm.title && bd->client.icccm.title[0]) + cfdata->title = strdup(bd->client.icccm.title); + if (bd->client.icccm.window_role && bd->client.icccm.window_role[0]) + cfdata->role = strdup(bd->client.icccm.window_role); + + if ((bd->client.icccm.command.argc > 0) && + (bd->client.icccm.command.argv)) + { + char buf[4096]; + int i, j, k; + + buf[0] = 0; + k = 0; + for (i = 0; i < bd->client.icccm.command.argc; i++) + { + if (i > 0) + { + buf[k] = ' '; + k++; + } + for (j = 0; bd->client.icccm.command.argv[i][j]; j++) + { + if (k >= (sizeof(buf) - 10)) + { + buf[k] = 0; + goto done; + } + if ((bd->client.icccm.command.argv[i][j] == ' ') || + (bd->client.icccm.command.argv[i][j] == '\t') || + (bd->client.icccm.command.argv[i][j] == '\\') || + (bd->client.icccm.command.argv[i][j] == '\"') || + (bd->client.icccm.command.argv[i][j] == '\'') || + (bd->client.icccm.command.argv[i][j] == '$') || + (bd->client.icccm.command.argv[i][j] == '%')) + { + buf[k] = '\\'; + k++; + } + buf[k] = bd->client.icccm.command.argv[i][j]; + k++; + } + } + buf[k] = 0; + done: + cfdata->command = strdup(buf); + } + + rem = bd->remember; + + if (rem) + { + if (rem->apply_first_only) cfdata->remember.apply_first_only = 1; + if (rem->match & E_REMEMBER_MATCH_NAME) cfdata->remember.match_name = 1; + if (rem->match & E_REMEMBER_MATCH_CLASS) cfdata->remember.match_class = 1; + if (rem->match & E_REMEMBER_MATCH_TITLE) cfdata->remember.match_title = 1; + if (rem->match & E_REMEMBER_MATCH_ROLE) cfdata->remember.match_role = 1; + if (rem->match & E_REMEMBER_MATCH_TYPE) cfdata->remember.match_type = 1; + if (rem->match & E_REMEMBER_MATCH_TRANSIENT) cfdata->remember.match_transient = 1; + if (rem->apply & E_REMEMBER_APPLY_POS) cfdata->remember.apply_pos = 1; + if (rem->apply & E_REMEMBER_APPLY_SIZE) cfdata->remember.apply_size = 1; + if (rem->apply & E_REMEMBER_APPLY_LAYER) cfdata->remember.apply_layer = 1; + if (rem->apply & E_REMEMBER_APPLY_LOCKS) cfdata->remember.apply_locks = 1; + if (rem->apply & E_REMEMBER_APPLY_BORDER) cfdata->remember.apply_border = 1; + if (rem->apply & E_REMEMBER_APPLY_STICKY) cfdata->remember.apply_sticky = 1; + if (rem->apply & E_REMEMBER_APPLY_DESKTOP) cfdata->remember.apply_desktop = 1; + if (rem->apply & E_REMEMBER_APPLY_SHADE) cfdata->remember.apply_shade = 1; + if (rem->apply & E_REMEMBER_APPLY_FULLSCREEN) cfdata->remember.apply_fullscreen = 1; + if (rem->apply & E_REMEMBER_APPLY_ZONE) cfdata->remember.apply_zone = 1; + if (rem->apply & E_REMEMBER_APPLY_SKIP_WINLIST) cfdata->remember.apply_skip_winlist = 1; + if (rem->apply & E_REMEMBER_APPLY_SKIP_PAGER) cfdata->remember.apply_skip_pager = 1; + if (rem->apply & E_REMEMBER_APPLY_SKIP_TASKBAR) cfdata->remember.apply_skip_taskbar = 1; + if (rem->apply & E_REMEMBER_APPLY_RUN) cfdata->remember.apply_run = 1; + if (rem->apply & E_REMEMBER_APPLY_ICON_PREF) cfdata->remember.apply_icon_pref = 1; + if (rem->apply & E_REMEMBER_SET_FOCUS_ON_START) cfdata->remember.set_focus_on_start = 1; + } } + static void * _create_data(E_Config_Dialog *cfd) { @@ -137,7 +203,7 @@ * 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); @@ -148,7 +214,13 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { /* Free the cfdata */ - cfdata->border->border_remember_dialog = NULL; + if (cfdata->name) free(cfdata->name); + if (cfdata->class) free(cfdata->class); + if (cfdata->title) free(cfdata->title); + if (cfdata->role) free(cfdata->role); + if (cfdata->command) free(cfdata->command); + if (cfdata->border) + cfdata->border->border_remember_dialog = NULL; free(cfdata); } @@ -160,14 +232,14 @@ E_Border *bd2; int n = 0; const char *title; - + title = e_border_name_get(bd); EINA_LIST_FOREACH(e_border_client_list(), l, bd2) { int required_matches; int matches; const char *title2; - + matches = 0; required_matches = 0; if (matchflags & E_REMEMBER_MATCH_NAME) required_matches++; @@ -205,17 +277,41 @@ return n; } +static void +_remember_update(E_Remember *rem, E_Config_Dialog_Data *cfdata) +{ + if (rem->name) eina_stringshare_del(rem->name); + if (rem->class) eina_stringshare_del(rem->class); + if (rem->title) eina_stringshare_del(rem->title); + if (rem->role) eina_stringshare_del(rem->role); + if (rem->prop.command) eina_stringshare_del(rem->prop.command); + rem->name = NULL; + rem->class = NULL; + rem->title = NULL; + rem->role = NULL; + rem->prop.command = NULL; + if (cfdata->name && cfdata->name[0]) + rem->name = eina_stringshare_add(cfdata->name); + if (cfdata->class && cfdata->class[0]) + rem->class = eina_stringshare_add(cfdata->class); + if (cfdata->title && cfdata->title[0]) + rem->title = eina_stringshare_add(cfdata->title); + if (cfdata->role && cfdata->role[0]) + rem->role = eina_stringshare_add(cfdata->role); + if (cfdata->command && cfdata->command[0]) + rem->prop.command = eina_stringshare_add(cfdata->command); +} + static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { /* Actually take our cfdata settings and apply them in real life */ - + E_Remember *rem; + if (cfdata->mode == MODE_NOTHING) { if (cfdata->border->remember) { - E_Remember *rem; - rem = cfdata->border->remember; cfdata->border->remember = NULL; e_remember_unuse(rem); @@ -227,7 +323,7 @@ if (!cfdata->warned) { int matches = 0; - + if ((cfdata->border->client.icccm.name) && (cfdata->border->client.icccm.class) && (cfdata->border->client.icccm.name[0] != 0) && @@ -238,7 +334,7 @@ if (matches > 1) { E_Dialog *dia; - + dia = e_dialog_new(cfd->con, "E", "_border_remember_error_multi_dialog"); e_dialog_title_set(dia, _("Window properties are not a unique match")); e_dialog_text_set @@ -264,33 +360,41 @@ return 0; } } - if (!cfdata->border->remember) + + rem = cfdata->border->remember; + + if (!rem) { - cfdata->border->remember = e_remember_new(); - if (cfdata->border->remember) - e_remember_use(cfdata->border->remember); + rem = e_remember_new(); + if (rem) + e_remember_use(rem); } - if (cfdata->border->remember) + if (rem) { - cfdata->border->remember->match = e_remember_default_match(cfdata->border); + rem->match = e_remember_default_match(cfdata->border); if (cfdata->mode == MODE_GEOMETRY) - cfdata->border->remember->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE; + rem->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE; else if (cfdata->mode == MODE_LOCKS) - cfdata->border->remember->apply = E_REMEMBER_APPLY_LOCKS; + rem->apply = E_REMEMBER_APPLY_LOCKS; else if (cfdata->mode == MODE_GEOMETRY_LOCKS) - cfdata->border->remember->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_LOCKS; + rem->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_LOCKS; else if (cfdata->mode == MODE_ALL) - cfdata->border->remember->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_LAYER | - E_REMEMBER_APPLY_LOCKS | E_REMEMBER_APPLY_BORDER | E_REMEMBER_APPLY_STICKY | - E_REMEMBER_APPLY_DESKTOP | E_REMEMBER_APPLY_SHADE | E_REMEMBER_APPLY_ZONE | + rem->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_LAYER | + E_REMEMBER_APPLY_LOCKS | E_REMEMBER_APPLY_BORDER | E_REMEMBER_APPLY_STICKY | + E_REMEMBER_APPLY_DESKTOP | E_REMEMBER_APPLY_SHADE | E_REMEMBER_APPLY_ZONE | E_REMEMBER_APPLY_SKIP_WINLIST | E_REMEMBER_APPLY_SKIP_PAGER | E_REMEMBER_APPLY_SKIP_TASKBAR | E_REMEMBER_APPLY_FULLSCREEN | E_REMEMBER_APPLY_ICON_PREF; - cfdata->border->remember->apply_first_only = 0; - e_remember_update(cfdata->border->remember, cfdata->border); + rem->apply_first_only = 0; + + _remember_update(rem, cfdata); + + e_remember_update(rem, cfdata->border); } - + + cfdata->border->remember = rem; + e_config_save_queue(); return 1; /* Apply was OK */ } @@ -299,8 +403,9 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { /* Actually take our cfdata settings and apply them in real life */ - - if (!((cfdata->remember.apply_pos) || (cfdata->remember.apply_size) || + E_Remember *rem; + + if (!((cfdata->remember.apply_pos) || (cfdata->remember.apply_size) || (cfdata->remember.apply_locks) || (cfdata->remember.apply_layer) || (cfdata->remember.apply_border) || (cfdata->remember.apply_sticky) || (cfdata->remember.apply_desktop) || (cfdata->remember.apply_shade) || @@ -318,7 +423,7 @@ e_config_save_queue(); return 1; } - + if (cfdata->remember.match_name) cfdata->remember.match_class = 1; else cfdata->remember.match_class = 0; @@ -327,7 +432,7 @@ (cfdata->remember.match_type) || (cfdata->remember.match_transient))) { E_Dialog *dia; - + dia = e_dialog_new(cfd->con, "E", "_border_remember_error_noprop_dialog"); e_dialog_title_set(dia, _("No match properties set")); e_dialog_text_set @@ -346,7 +451,7 @@ if (!cfdata->warned) { int matchflags = 0; - + if (cfdata->remember.match_name) matchflags |= E_REMEMBER_MATCH_NAME; if (cfdata->remember.match_class) matchflags |= E_REMEMBER_MATCH_CLASS; if (cfdata->remember.match_title) matchflags |= E_REMEMBER_MATCH_TITLE; @@ -357,7 +462,7 @@ (_check_matches(cfdata->border, matchflags) > 1)) { E_Dialog *dia; - + dia = e_dialog_new(cfd->con, "E", "_border_remember_error_no_remember_dialog"); e_dialog_title_set(dia, _("No match properties set")); e_dialog_text_set @@ -387,44 +492,54 @@ return 0; } } + rem = cfdata->border->remember; - if (!cfdata->border->remember) + if (!rem) { - cfdata->border->remember = e_remember_new(); - if (cfdata->border->remember) - e_remember_use(cfdata->border->remember); + rem = e_remember_new(); + if (rem) + e_remember_use(rem); } - if (cfdata->border->remember) + if (rem) { - cfdata->border->remember->apply = 0; - cfdata->border->remember->match = 0; - if (cfdata->remember.match_name) cfdata->border->remember->match |= E_REMEMBER_MATCH_NAME; - if (cfdata->remember.match_class) cfdata->border->remember->match |= E_REMEMBER_MATCH_CLASS; - if (cfdata->remember.match_title) cfdata->border->remember->match |= E_REMEMBER_MATCH_TITLE; - if (cfdata->remember.match_role) cfdata->border->remember->match |= E_REMEMBER_MATCH_ROLE; - if (cfdata->remember.match_type) cfdata->border->remember->match |= E_REMEMBER_MATCH_TYPE; - if (cfdata->remember.match_transient) cfdata->border->remember->match |= E_REMEMBER_MATCH_TRANSIENT; - if (cfdata->remember.apply_pos) cfdata->border->remember->apply |= E_REMEMBER_APPLY_POS; - if (cfdata->remember.apply_size) cfdata->border->remember->apply |= E_REMEMBER_APPLY_SIZE; - if (cfdata->remember.apply_layer) cfdata->border->remember->apply |= E_REMEMBER_APPLY_LAYER; - if (cfdata->remember.apply_locks) cfdata->border->remember->apply |= E_REMEMBER_APPLY_LOCKS; - if (cfdata->remember.apply_border) cfdata->border->remember->apply |= E_REMEMBER_APPLY_BORDER; - if (cfdata->remember.apply_sticky) cfdata->border->remember->apply |= E_REMEMBER_APPLY_STICKY; - if (cfdata->remember.apply_desktop) cfdata->border->remember->apply |= E_REMEMBER_APPLY_DESKTOP; - if (cfdata->remember.apply_shade) cfdata->border->remember->apply |= E_REMEMBER_APPLY_SHADE; - if (cfdata->remember.apply_fullscreen) cfdata->border->remember->apply |= E_REMEMBER_APPLY_FULLSCREEN; - if (cfdata->remember.apply_zone) cfdata->border->remember->apply |= E_REMEMBER_APPLY_ZONE; - if (cfdata->remember.apply_skip_winlist) cfdata->border->remember->apply |= E_REMEMBER_APPLY_SKIP_WINLIST; - if (cfdata->remember.apply_skip_pager) cfdata->border->remember->apply |= E_REMEMBER_APPLY_SKIP_PAGER; - if (cfdata->remember.apply_skip_taskbar) cfdata->border->remember->apply |= E_REMEMBER_APPLY_SKIP_TASKBAR; - if (cfdata->remember.apply_run) cfdata->border->remember->apply |= E_REMEMBER_APPLY_RUN; - if (cfdata->remember.apply_icon_pref) cfdata->border->remember->apply |= E_REMEMBER_APPLY_ICON_PREF; - if (cfdata->remember.set_focus_on_start) cfdata->border->remember->apply |= E_REMEMBER_SET_FOCUS_ON_START; + rem->apply = 0; + rem->match = 0; + if (cfdata->remember.match_name) rem->match |= E_REMEMBER_MATCH_NAME; + if (cfdata->remember.match_class) rem->match |= E_REMEMBER_MATCH_CLASS; + if (cfdata->remember.match_title) rem->match |= E_REMEMBER_MATCH_TITLE; + if (cfdata->remember.match_role) rem->match |= E_REMEMBER_MATCH_ROLE; + if (cfdata->remember.match_type) rem->match |= E_REMEMBER_MATCH_TYPE; + if (cfdata->remember.match_transient) rem->match |= E_REMEMBER_MATCH_TRANSIENT; + if (cfdata->remember.apply_pos) rem->apply |= E_REMEMBER_APPLY_POS; + if (cfdata->remember.apply_size) rem->apply |= E_REMEMBER_APPLY_SIZE; + if (cfdata->remember.apply_layer) rem->apply |= E_REMEMBER_APPLY_LAYER; + if (cfdata->remember.apply_locks) rem->apply |= E_REMEMBER_APPLY_LOCKS; + if (cfdata->remember.apply_border) rem->apply |= E_REMEMBER_APPLY_BORDER; + if (cfdata->remember.apply_sticky) rem->apply |= E_REMEMBER_APPLY_STICKY; + if (cfdata->remember.apply_desktop) rem->apply |= E_REMEMBER_APPLY_DESKTOP; + if (cfdata->remember.apply_shade) rem->apply |= E_REMEMBER_APPLY_SHADE; + if (cfdata->remember.apply_fullscreen) rem->apply |= E_REMEMBER_APPLY_FULLSCREEN; + if (cfdata->remember.apply_zone) rem->apply |= E_REMEMBER_APPLY_ZONE; + if (cfdata->remember.apply_skip_winlist) rem->apply |= E_REMEMBER_APPLY_SKIP_WINLIST; + if (cfdata->remember.apply_skip_pager) rem->apply |= E_REMEMBER_APPLY_SKIP_PAGER; + if (cfdata->remember.apply_skip_taskbar) rem->apply |= E_REMEMBER_APPLY_SKIP_TASKBAR; + if (cfdata->remember.apply_run) rem->apply |= E_REMEMBER_APPLY_RUN; + if (cfdata->remember.apply_icon_pref) rem->apply |= E_REMEMBER_APPLY_ICON_PREF; + if (cfdata->remember.set_focus_on_start) rem->apply |= E_REMEMBER_SET_FOCUS_ON_START; - cfdata->border->remember->apply_first_only = cfdata->remember.apply_first_only; - e_remember_update(cfdata->border->remember, cfdata->border); + rem->apply_first_only = cfdata->remember.apply_first_only; + + _remember_update(rem, cfdata); } - + + if (rem && cfdata->border) + { + e_remember_update(rem, cfdata->border); + cfdata->border->remember = rem; + } + else if (rem) + e_remember_match_update(rem); + e_config_save_queue(); return 1; /* Apply was OK */ } @@ -436,7 +551,7 @@ /* generate the core widget layout for a basic dialog */ Evas_Object *o, *ob; E_Radio_Group *rg; - + o = e_widget_list_add(evas, 0, 0); rg = e_widget_radio_group_new(&(cfdata->mode)); ob = e_widget_radio_add(evas, _("Nothing"), MODE_NOTHING, rg); @@ -458,36 +573,52 @@ /* generate the core widget layout for an advanced dialog */ Evas_Object *o, *ob, *of; - o = e_widget_list_add(evas, 0, 0); - + o = e_widget_table_add(evas, 0); + of = e_widget_framelist_add(evas, _("Remember using"), 0); - if ((cfdata->border->client.icccm.name) && - (cfdata->border->client.icccm.class) && - (cfdata->border->client.icccm.name[0] != 0) && - (cfdata->border->client.icccm.class[0] != 0)) + if (cfdata->name) { - ob = e_widget_check_add(evas, _("Window name and class"), &(cfdata->remember.match_name)); + ob = e_widget_check_add(evas, _("Window name"), &(cfdata->remember.match_name)); e_widget_framelist_object_append(of, ob); + ob = e_widget_entry_add(evas, &cfdata->name, NULL, NULL, NULL); + e_widget_entry_readonly_set(ob, 1); + e_widget_framelist_object_append(of, ob); } else { cfdata->remember.match_name = 0; + } + if (cfdata->class) + { + ob = e_widget_check_add(evas, _("Window class"), &(cfdata->remember.match_class)); + e_widget_framelist_object_append(of, ob); + ob = e_widget_entry_add(evas, &cfdata->class, NULL, NULL, NULL); + e_widget_entry_readonly_set(ob, 1); + e_widget_framelist_object_append(of, ob); + } + else + { cfdata->remember.match_class = 0; } - if ((e_border_name_get(cfdata->border))[0] != 0) + if (cfdata->title) { ob = e_widget_check_add(evas, _("Title"), &(cfdata->remember.match_title)); e_widget_framelist_object_append(of, ob); + ob = e_widget_entry_add(evas, &cfdata->title, NULL, NULL, NULL); + e_widget_entry_readonly_set(ob, 1); + e_widget_framelist_object_append(of, ob); } else { cfdata->remember.match_title = 0; } - if ((cfdata->border->client.icccm.window_role) && - (cfdata->border->client.icccm.window_role[0] != 0)) + if (cfdata->role) { ob = e_widget_check_add(evas, _("Window Role"), &(cfdata->remember.match_role)); e_widget_framelist_object_append(of, ob); + ob = e_widget_entry_add(evas, &cfdata->role, NULL, NULL, NULL); + e_widget_entry_readonly_set(ob, 1); + e_widget_framelist_object_append(of, ob); } else { @@ -504,7 +635,7 @@ } ob = e_widget_check_add(evas, _("Transience"), &(cfdata->remember.match_transient)); e_widget_framelist_object_append(of, ob); - e_widget_list_object_append(o, of, 1, 1, 0.5); + e_widget_table_object_append(o, of, 0, 0, 1, 1, 1, 1, 1, 1); of = e_widget_frametable_add(evas, _("Properties to remember"), 0); ob = e_widget_check_add(evas, _("Position"), &(cfdata->remember.apply_pos)); @@ -535,19 +666,19 @@ e_widget_frametable_object_append(of, ob, 1, 5, 1, 1, 1, 1, 1, 1); ob = e_widget_check_add(evas, _("Skip Taskbar"), &(cfdata->remember.apply_skip_taskbar)); e_widget_frametable_object_append(of, ob, 1, 6, 1, 1, 1, 1, 1, 1); - e_widget_list_object_append(o, of, 1, 1, 0.5); - + e_widget_table_object_append(o, of, 1, 0, 1, 1, 1, 1, 1, 1); + ob = e_widget_check_add(evas, _("Match only one window"), &(cfdata->remember.apply_first_only)); - e_widget_list_object_append(o, ob, 1, 1, 0.5); + e_widget_table_object_append(o, ob, 0, 1, 1, 1, 1, 1, 1, 1); - if (cfdata->border->client.icccm.command.argv) + if (cfdata->command) { ob = e_widget_check_add(evas, _("Start this program on login"), &(cfdata->remember.apply_run)); - e_widget_list_object_append(o, ob, 1, 1, 0.5); + e_widget_table_object_append(o, ob, 1, 2, 1, 1, 1, 1, 1, 1); } ob = e_widget_check_add(evas, _("Always focus on start"), &(cfdata->remember.set_focus_on_start)); - e_widget_list_object_append(o, ob, 1, 1, 0.5); - + e_widget_table_object_append(o, ob, 1, 1, 1, 1, 1, 1, 1, 1); + return o; } Modified: trunk/e/src/bin/e_remember.c =================================================================== --- trunk/e/src/bin/e_remember.c 2009-09-11 23:51:47 UTC (rev 42427) +++ trunk/e/src/bin/e_remember.c 2009-09-12 02:44:41 UTC (rev 42428) @@ -203,30 +203,10 @@ { if (!rem) return; if (bd->new_client) return; - if (rem->name) eina_stringshare_del(rem->name); - if (rem->class) eina_stringshare_del(rem->class); - if (rem->title) eina_stringshare_del(rem->title); - if (rem->role) eina_stringshare_del(rem->role); + if (rem->prop.border) eina_stringshare_del(rem->prop.border); - if (rem->prop.command) eina_stringshare_del(rem->prop.command); - rem->name = NULL; - rem->class = NULL; - rem->title = NULL; - rem->role = NULL; rem->prop.border = NULL; - rem->prop.command = NULL; - - if (bd->client.icccm.name) - rem->name = eina_stringshare_add(bd->client.icccm.name); - if (bd->client.icccm.class) - rem->class = eina_stringshare_add(bd->client.icccm.class); - if (bd->client.netwm.name) - rem->title = eina_stringshare_add(bd->client.netwm.name); - else if (bd->client.icccm.title) - rem->title = eina_stringshare_add(bd->client.icccm.title); - if (bd->client.icccm.window_role) - rem->role = eina_stringshare_add(bd->client.icccm.window_role); - + e_remember_match_update(rem); rem->type = bd->client.netwm.type; @@ -306,48 +286,6 @@ rem->prop.zone = bd->zone->num; rem->prop.head = bd->zone->container->manager->num; - if ((bd->client.icccm.command.argc > 0) && - (bd->client.icccm.command.argv)) - { - char buf[4096]; - int i, j, k; - - buf[0] = 0; - k = 0; - for (i = 0; i < bd->client.icccm.command.argc; i++) - { - if (i > 0) - { - buf[k] = ' '; - k++; - } - for (j = 0; bd->client.icccm.command.argv[i][j]; j++) - { - if (k >= (sizeof(buf) - 10)) - { - buf[k] = 0; - goto done; - } - if ((bd->client.icccm.command.argv[i][j] == ' ') || - (bd->client.icccm.command.argv[i][j] == '\t') || - (bd->client.icccm.command.argv[i][j] == '\\') || - (bd->client.icccm.command.argv[i][j] == '\"') || - (bd->client.icccm.command.argv[i][j] == '\'') || - (bd->client.icccm.command.argv[i][j] == '$') || - (bd->client.icccm.command.argv[i][j] == '%')) - { - buf[k] = '\\'; - k++; - } - buf[k] = bd->client.icccm.command.argv[i][j]; - k++; - } - } - buf[k] = 0; - done: - rem->prop.command = eina_stringshare_add(buf); - } - e_config_save_queue(); } @@ -425,16 +363,16 @@ * required, and if it is, check whether there's a match. If * it fails, then go to the next remember */ if (rem->match & E_REMEMBER_MATCH_NAME && - e_util_strcmp(rem->name, bd->client.icccm.name) && - !e_util_both_str_empty(rem->name, bd->client.icccm.name)) + e_util_strcmp(rem->name, bd->client.icccm.name) && + !e_util_both_str_empty(rem->name, bd->client.icccm.name)) continue; if (rem->match & E_REMEMBER_MATCH_CLASS && - e_util_strcmp(rem->class, bd->client.icccm.class) && - !e_util_both_str_empty(rem->class, bd->client.icccm.class)) + e_util_strcmp(rem->class, bd->client.icccm.class) && + !e_util_both_str_empty(rem->class, bd->client.icccm.class)) continue; if (rem->match & E_REMEMBER_MATCH_TITLE && - e_util_strcmp(rem->title, title) && - !e_util_both_str_empty(rem->title, title)) + e_util_strcmp(rem->title, title) && + !e_util_both_str_empty(rem->title, title)) continue; if (rem->match & E_REMEMBER_MATCH_ROLE && e_util_strcmp(rem->role, bd->client.icccm.window_role) && |
From: Enlightenment S. <no-...@en...> - 2009-09-12 03:04:05
|
Log: cleanups Author: jeffdameth Date: 2009-09-11 20:03:53 -0700 (Fri, 11 Sep 2009) New Revision: 42429 Modified: trunk/e/src/bin/e_int_border_remember.c Modified: trunk/e/src/bin/e_int_border_remember.c =================================================================== --- trunk/e/src/bin/e_int_border_remember.c 2009-09-12 02:44:41 UTC (rev 42428) +++ trunk/e/src/bin/e_int_border_remember.c 2009-09-12 03:03:53 UTC (rev 42429) @@ -92,6 +92,7 @@ E_Remember *rem; bd = cfdata->border; + rem = bd->remember; if (!bd->remember) cfdata->mode = MODE_NOTHING; else if ((cfdata->remember.apply_pos) && (cfdata->remember.apply_size) && @@ -164,8 +165,6 @@ cfdata->command = strdup(buf); } - rem = bd->remember; - if (rem) { if (rem->apply_first_only) cfdata->remember.apply_first_only = 1; @@ -403,7 +402,8 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { /* Actually take our cfdata settings and apply them in real life */ - E_Remember *rem; + E_Border *bd = cfdata->border; + E_Remember *rem = bd->remember; if (!((cfdata->remember.apply_pos) || (cfdata->remember.apply_size) || (cfdata->remember.apply_locks) || (cfdata->remember.apply_layer) || @@ -414,10 +414,10 @@ (cfdata->remember.apply_run) || (cfdata->remember.apply_icon_pref) || (cfdata->remember.set_focus_on_start) || (cfdata->remember.apply_fullscreen))) { - if (cfdata->border->remember) + if (rem) { - e_remember_unuse(cfdata->border->remember); - e_remember_del(cfdata->border->remember); + e_remember_unuse(rem); + e_remember_del(rem); cfdata->border->remember = NULL; } e_config_save_queue(); @@ -427,9 +427,9 @@ if (cfdata->remember.match_name) cfdata->remember.match_class = 1; else cfdata->remember.match_class = 0; - if (!((cfdata->remember.match_name) || (cfdata->remember.match_class) || + if (!((cfdata->remember.match_name) || (cfdata->remember.match_class) || (cfdata->remember.match_title) || (cfdata->remember.match_role) || - (cfdata->remember.match_type) || (cfdata->remember.match_transient))) + (cfdata->remember.match_type) || (cfdata->remember.match_transient))) { E_Dialog *dia; @@ -452,11 +452,11 @@ { int matchflags = 0; - if (cfdata->remember.match_name) matchflags |= E_REMEMBER_MATCH_NAME; + if (cfdata->remember.match_name) matchflags |= E_REMEMBER_MATCH_NAME; if (cfdata->remember.match_class) matchflags |= E_REMEMBER_MATCH_CLASS; if (cfdata->remember.match_title) matchflags |= E_REMEMBER_MATCH_TITLE; - if (cfdata->remember.match_role) matchflags |= E_REMEMBER_MATCH_ROLE; - if (cfdata->remember.match_type) matchflags |= E_REMEMBER_MATCH_TYPE; + if (cfdata->remember.match_role) matchflags |= E_REMEMBER_MATCH_ROLE; + if (cfdata->remember.match_type) matchflags |= E_REMEMBER_MATCH_TYPE; if (cfdata->remember.match_transient) matchflags |= E_REMEMBER_MATCH_TRANSIENT; if ((!cfdata->remember.apply_first_only) && (_check_matches(cfdata->border, matchflags) > 1)) @@ -492,7 +492,6 @@ return 0; } } - rem = cfdata->border->remember; if (!rem) { @@ -500,45 +499,42 @@ if (rem) e_remember_use(rem); } + if (rem) { rem->apply = 0; rem->match = 0; - if (cfdata->remember.match_name) rem->match |= E_REMEMBER_MATCH_NAME; - if (cfdata->remember.match_class) rem->match |= E_REMEMBER_MATCH_CLASS; - if (cfdata->remember.match_title) rem->match |= E_REMEMBER_MATCH_TITLE; - if (cfdata->remember.match_role) rem->match |= E_REMEMBER_MATCH_ROLE; - if (cfdata->remember.match_type) rem->match |= E_REMEMBER_MATCH_TYPE; - if (cfdata->remember.match_transient) rem->match |= E_REMEMBER_MATCH_TRANSIENT; - if (cfdata->remember.apply_pos) rem->apply |= E_REMEMBER_APPLY_POS; - if (cfdata->remember.apply_size) rem->apply |= E_REMEMBER_APPLY_SIZE; - if (cfdata->remember.apply_layer) rem->apply |= E_REMEMBER_APPLY_LAYER; - if (cfdata->remember.apply_locks) rem->apply |= E_REMEMBER_APPLY_LOCKS; - if (cfdata->remember.apply_border) rem->apply |= E_REMEMBER_APPLY_BORDER; - if (cfdata->remember.apply_sticky) rem->apply |= E_REMEMBER_APPLY_STICKY; - if (cfdata->remember.apply_desktop) rem->apply |= E_REMEMBER_APPLY_DESKTOP; - if (cfdata->remember.apply_shade) rem->apply |= E_REMEMBER_APPLY_SHADE; - if (cfdata->remember.apply_fullscreen) rem->apply |= E_REMEMBER_APPLY_FULLSCREEN; - if (cfdata->remember.apply_zone) rem->apply |= E_REMEMBER_APPLY_ZONE; + if (cfdata->remember.match_name) rem->match |= E_REMEMBER_MATCH_NAME; + if (cfdata->remember.match_class) rem->match |= E_REMEMBER_MATCH_CLASS; + if (cfdata->remember.match_title) rem->match |= E_REMEMBER_MATCH_TITLE; + if (cfdata->remember.match_role) rem->match |= E_REMEMBER_MATCH_ROLE; + if (cfdata->remember.match_type) rem->match |= E_REMEMBER_MATCH_TYPE; + if (cfdata->remember.match_transient) rem->match |= E_REMEMBER_MATCH_TRANSIENT; + if (cfdata->remember.apply_pos) rem->apply |= E_REMEMBER_APPLY_POS; + if (cfdata->remember.apply_size) rem->apply |= E_REMEMBER_APPLY_SIZE; + if (cfdata->remember.apply_layer) rem->apply |= E_REMEMBER_APPLY_LAYER; + if (cfdata->remember.apply_locks) rem->apply |= E_REMEMBER_APPLY_LOCKS; + if (cfdata->remember.apply_border) rem->apply |= E_REMEMBER_APPLY_BORDER; + if (cfdata->remember.apply_sticky) rem->apply |= E_REMEMBER_APPLY_STICKY; + if (cfdata->remember.apply_desktop) rem->apply |= E_REMEMBER_APPLY_DESKTOP; + if (cfdata->remember.apply_shade) rem->apply |= E_REMEMBER_APPLY_SHADE; + if (cfdata->remember.apply_fullscreen) rem->apply |= E_REMEMBER_APPLY_FULLSCREEN; + if (cfdata->remember.apply_zone) rem->apply |= E_REMEMBER_APPLY_ZONE; if (cfdata->remember.apply_skip_winlist) rem->apply |= E_REMEMBER_APPLY_SKIP_WINLIST; - if (cfdata->remember.apply_skip_pager) rem->apply |= E_REMEMBER_APPLY_SKIP_PAGER; + if (cfdata->remember.apply_skip_pager) rem->apply |= E_REMEMBER_APPLY_SKIP_PAGER; if (cfdata->remember.apply_skip_taskbar) rem->apply |= E_REMEMBER_APPLY_SKIP_TASKBAR; - if (cfdata->remember.apply_run) rem->apply |= E_REMEMBER_APPLY_RUN; - if (cfdata->remember.apply_icon_pref) rem->apply |= E_REMEMBER_APPLY_ICON_PREF; + if (cfdata->remember.apply_run) rem->apply |= E_REMEMBER_APPLY_RUN; + if (cfdata->remember.apply_icon_pref) rem->apply |= E_REMEMBER_APPLY_ICON_PREF; if (cfdata->remember.set_focus_on_start) rem->apply |= E_REMEMBER_SET_FOCUS_ON_START; rem->apply_first_only = cfdata->remember.apply_first_only; _remember_update(rem, cfdata); - } - if (rem && cfdata->border) - { - e_remember_update(rem, cfdata->border); cfdata->border->remember = rem; + + e_remember_update(rem, cfdata->border); } - else if (rem) - e_remember_match_update(rem); e_config_save_queue(); return 1; /* Apply was OK */ |
From: Enlightenment S. <no-...@en...> - 2009-09-12 03:44:04
|
Log: add option to keep border settings as they are when remember is set Author: jeffdameth Date: 2009-09-11 20:43:51 -0700 (Fri, 11 Sep 2009) New Revision: 42430 Modified: trunk/e/src/bin/e_config.c trunk/e/src/bin/e_int_border_remember.c trunk/e/src/bin/e_remember.c trunk/e/src/bin/e_remember.h Modified: trunk/e/src/bin/e_config.c =================================================================== --- trunk/e/src/bin/e_config.c 2009-09-12 03:03:53 UTC (rev 42429) +++ trunk/e/src/bin/e_config.c 2009-09-12 03:43:51 UTC (rev 42430) @@ -328,6 +328,7 @@ #define D _e_config_remember_edd E_CONFIG_VAL(D, T, match, INT); E_CONFIG_VAL(D, T, apply_first_only, UCHAR); + E_CONFIG_VAL(D, T, keep_settings, UCHAR); E_CONFIG_VAL(D, T, name, STR); E_CONFIG_VAL(D, T, class, STR); E_CONFIG_VAL(D, T, title, STR); @@ -381,7 +382,8 @@ E_CONFIG_VAL(D, T, prop.head, INT); E_CONFIG_VAL(D, T, prop.command, STR); E_CONFIG_VAL(D, T, prop.icon_preference, UCHAR); - + E_CONFIG_VAL(D, T, prop.desktop_file, STR); + _e_config_color_class_edd = E_CONFIG_DD_NEW("E_Color_Class", E_Color_Class); #undef T #undef D Modified: trunk/e/src/bin/e_int_border_remember.c =================================================================== --- trunk/e/src/bin/e_int_border_remember.c 2009-09-12 03:03:53 UTC (rev 42429) +++ trunk/e/src/bin/e_int_border_remember.c 2009-09-12 03:43:51 UTC (rev 42430) @@ -53,6 +53,7 @@ int apply_run; int apply_icon_pref; int set_focus_on_start; + int keep_settings; } remember; }; @@ -168,6 +169,7 @@ if (rem) { if (rem->apply_first_only) cfdata->remember.apply_first_only = 1; + if (rem->keep_settings) cfdata->remember.keep_settings = 1; if (rem->match & E_REMEMBER_MATCH_NAME) cfdata->remember.match_name = 1; if (rem->match & E_REMEMBER_MATCH_CLASS) cfdata->remember.match_class = 1; if (rem->match & E_REMEMBER_MATCH_TITLE) cfdata->remember.match_title = 1; @@ -501,9 +503,10 @@ } if (rem) - { + { rem->apply = 0; rem->match = 0; + rem->apply_first_only = cfdata->remember.apply_first_only; if (cfdata->remember.match_name) rem->match |= E_REMEMBER_MATCH_NAME; if (cfdata->remember.match_class) rem->match |= E_REMEMBER_MATCH_CLASS; if (cfdata->remember.match_title) rem->match |= E_REMEMBER_MATCH_TITLE; @@ -527,13 +530,12 @@ if (cfdata->remember.apply_icon_pref) rem->apply |= E_REMEMBER_APPLY_ICON_PREF; if (cfdata->remember.set_focus_on_start) rem->apply |= E_REMEMBER_SET_FOCUS_ON_START; - rem->apply_first_only = cfdata->remember.apply_first_only; - _remember_update(rem, cfdata); - cfdata->border->remember = rem; - + + rem->keep_settings = 0; e_remember_update(rem, cfdata->border); + rem->keep_settings = cfdata->remember.keep_settings; } e_config_save_queue(); @@ -667,14 +669,17 @@ ob = e_widget_check_add(evas, _("Match only one window"), &(cfdata->remember.apply_first_only)); e_widget_table_object_append(o, ob, 0, 1, 1, 1, 1, 1, 1, 1); + ob = e_widget_check_add(evas, _("Always focus on start"), &(cfdata->remember.set_focus_on_start)); + e_widget_table_object_append(o, ob, 1, 1, 1, 1, 1, 1, 1, 1); + + ob = e_widget_check_add(evas, _("Keep current properties"), &(cfdata->remember.keep_settings)); + e_widget_table_object_append(o, ob, 1, 2, 1, 1, 1, 1, 1, 1); + if (cfdata->command) { ob = e_widget_check_add(evas, _("Start this program on login"), &(cfdata->remember.apply_run)); - e_widget_table_object_append(o, ob, 1, 2, 1, 1, 1, 1, 1, 1); + e_widget_table_object_append(o, ob, 1, 3, 1, 1, 1, 1, 1, 1); } - ob = e_widget_check_add(evas, _("Always focus on start"), &(cfdata->remember.set_focus_on_start)); - e_widget_table_object_append(o, ob, 1, 1, 1, 1, 1, 1, 1, 1); - return o; } Modified: trunk/e/src/bin/e_remember.c =================================================================== --- trunk/e/src/bin/e_remember.c 2009-09-12 03:03:53 UTC (rev 42429) +++ trunk/e/src/bin/e_remember.c 2009-09-12 03:43:51 UTC (rev 42430) @@ -204,6 +204,9 @@ if (!rem) return; if (bd->new_client) return; + if (bd->remember && bd->remember->keep_settings) + return; + if (rem->prop.border) eina_stringshare_del(rem->prop.border); rem->prop.border = NULL; Modified: trunk/e/src/bin/e_remember.h =================================================================== --- trunk/e/src/bin/e_remember.h 2009-09-12 03:03:53 UTC (rev 42429) +++ trunk/e/src/bin/e_remember.h 2009-09-12 03:43:51 UTC (rev 42430) @@ -38,6 +38,7 @@ unsigned char delete_me; int match; unsigned char apply_first_only; + unsigned char keep_settings; int used_count; const char *name; const char *class; @@ -54,7 +55,7 @@ int pos_w, pos_h; int w, h; int layer; - + unsigned char lock_user_location; unsigned char lock_client_location; unsigned char lock_user_size; @@ -78,9 +79,9 @@ unsigned char lock_focus_in; unsigned char lock_focus_out; unsigned char lock_life; - + const char *border; - + unsigned char sticky; unsigned char shaded; unsigned char fullscreen; @@ -93,6 +94,7 @@ int zone; int head; const char *command; + const char *desktop_file; } prop; }; |
From: Enlightenment S. <no-...@en...> - 2009-09-12 07:04:44
|
Log: - allow glob matching in window remember -> advanced dialog has now editable entries - option added to remember desktop file for e window match. means no more ugly openoffice provided icons (= even if i dont use it .. - e_border: added fallback for transient windows to use .desktop from main window - fixed bug in e_remember to not delete all remembers when last item of the conf_remember list is deleted Author: jeffdameth Date: 2009-09-12 00:04:32 -0700 (Sat, 12 Sep 2009) New Revision: 42432 Modified: trunk/e/src/bin/e_border.c trunk/e/src/bin/e_int_border_remember.c trunk/e/src/bin/e_remember.c Modified: trunk/e/src/bin/e_border.c =================================================================== --- trunk/e/src/bin/e_border.c 2009-09-12 03:49:50 UTC (rev 42431) +++ trunk/e/src/bin/e_border.c 2009-09-12 07:04:32 UTC (rev 42432) @@ -7369,13 +7369,19 @@ evas_object_del(bd->icon_object); bd->icon_object = NULL; } + if (bd->remember && bd->remember->prop.desktop_file) + { + const char *desktop = bd->remember->prop.desktop_file; + + bd->desktop = efreet_desktop_new(desktop); + if (!bd->desktop) + bd->desktop = efreet_util_desktop_name_find(desktop); + } if (!bd->desktop) { if ((bd->client.icccm.name) && (bd->client.icccm.class)) bd->desktop = efreet_util_desktop_wm_class_find(bd->client.icccm.name, bd->client.icccm.class); - /* already refd by desktop_wm_class_find */ - /* if (bd->desktop) efreet_desktop_ref(bd->desktop); */ } if (!bd->desktop) { @@ -7389,7 +7395,15 @@ run from a shell */ bd->desktop = efreet_util_desktop_exec_find(bd->client.icccm.name); } - + if (!bd->desktop && bd->client.icccm.transient_for) + { + E_Border *bd2 = e_border_find_by_client_window(bd->client.icccm.transient_for); + if (bd2 && bd2->desktop) + { + efreet_desktop_ref(bd2->desktop); + bd->desktop = bd2->desktop; + } + } if (bd->desktop) { ecore_x_window_prop_string_set(bd->client.win, E_ATOM_DESKTOP_FILE, Modified: trunk/e/src/bin/e_int_border_remember.c =================================================================== --- trunk/e/src/bin/e_int_border_remember.c 2009-09-12 03:49:50 UTC (rev 42431) +++ trunk/e/src/bin/e_int_border_remember.c 2009-09-12 07:04:32 UTC (rev 42432) @@ -29,6 +29,7 @@ char *title; char *role; char *command; + char *desktop; struct { int match_name; int match_class; @@ -52,6 +53,7 @@ int apply_skip_taskbar; int apply_run; int apply_icon_pref; + int apply_desktop_file; int set_focus_on_start; int keep_settings; } remember; @@ -113,16 +115,35 @@ cfdata->mode = MODE_LOCKS; else cfdata->mode = MODE_NOTHING; - if (bd->client.icccm.name && bd->client.icccm.name[0]) + if (bd->remember) + { + if (bd->remember->name) + cfdata->name = strdup(bd->remember->name); + if (bd->remember->class) + cfdata->class = strdup(bd->remember->class); + if (bd->remember->title) + cfdata->title = strdup(bd->remember->title); + if (bd->remember->prop.desktop_file) + cfdata->desktop = strdup(bd->remember->prop.desktop_file); + if (cfdata->desktop) + cfdata->remember.apply_desktop_file = 1; + } + + if (!cfdata->name && bd->client.icccm.name && bd->client.icccm.name[0]) cfdata->name = strdup(bd->client.icccm.name); - if (bd->client.icccm.class && bd->client.icccm.class[0]) + if (!cfdata->class && bd->client.icccm.class && bd->client.icccm.class[0]) cfdata->class = strdup(bd->client.icccm.class); - if (bd->client.netwm.name && bd->client.netwm.name[0]) - cfdata->title = strdup(bd->client.netwm.name); - else if (bd->client.icccm.title && bd->client.icccm.title[0]) - cfdata->title = strdup(bd->client.icccm.title); if (bd->client.icccm.window_role && bd->client.icccm.window_role[0]) cfdata->role = strdup(bd->client.icccm.window_role); + if (!cfdata->title) + { + if(bd->client.netwm.name && bd->client.netwm.name[0]) + cfdata->title = strdup(bd->client.netwm.name); + else if (bd->client.icccm.title && bd->client.icccm.title[0]) + cfdata->title = strdup(bd->client.icccm.title); + } + if (!cfdata->desktop && bd->desktop) + cfdata->desktop = strdup(bd->desktop->name); if ((bd->client.icccm.command.argc > 0) && (bd->client.icccm.command.argv)) @@ -220,60 +241,89 @@ if (cfdata->title) free(cfdata->title); if (cfdata->role) free(cfdata->role); if (cfdata->command) free(cfdata->command); - if (cfdata->border) - cfdata->border->border_remember_dialog = NULL; + if (cfdata->desktop) free(cfdata->desktop); + + cfdata->border->border_remember_dialog = NULL; free(cfdata); } /**--APPLY--**/ static int -_check_matches(E_Border *bd, int matchflags) +_check_matches(E_Config_Dialog_Data *cfdata, int update) { Eina_List *l; - E_Border *bd2; + E_Border *bd; + const char *title; + int matchflags = 0; + int required_matches = 0; int n = 0; - const char *title; - title = e_border_name_get(bd); - EINA_LIST_FOREACH(e_border_client_list(), l, bd2) + if (cfdata->remember.match_name) { - int required_matches; - int matches; - const char *title2; + matchflags |= E_REMEMBER_MATCH_NAME; + required_matches++; + } + if (cfdata->remember.match_class) + { + matchflags |= E_REMEMBER_MATCH_CLASS; + required_matches++; + } + if (cfdata->remember.match_title) + { + matchflags |= E_REMEMBER_MATCH_TITLE; + required_matches++; + } + if (cfdata->remember.match_role) + { + matchflags |= E_REMEMBER_MATCH_ROLE; + required_matches++; + } + if (cfdata->remember.match_type) + { + matchflags |= E_REMEMBER_MATCH_TYPE; + required_matches++; + } - matches = 0; - required_matches = 0; - if (matchflags & E_REMEMBER_MATCH_NAME) required_matches++; - if (matchflags & E_REMEMBER_MATCH_CLASS) required_matches++; - if (matchflags & E_REMEMBER_MATCH_TITLE) required_matches++; - if (matchflags & E_REMEMBER_MATCH_ROLE) required_matches++; - if (matchflags & E_REMEMBER_MATCH_TYPE) required_matches++; - if (matchflags & E_REMEMBER_MATCH_TRANSIENT) required_matches++; - title2 = e_border_name_get(bd2); + if (cfdata->remember.match_transient) + { + matchflags |= E_REMEMBER_MATCH_TRANSIENT; + required_matches++; + } + + EINA_LIST_FOREACH(e_border_client_list(), l, bd) + { + int matches = 0; + + title = e_border_name_get(bd); if ((matchflags & E_REMEMBER_MATCH_NAME) && - ((!e_util_strcmp(bd->client.icccm.name, bd2->client.icccm.name)) || - (e_util_both_str_empty(bd->client.icccm.name, bd2->client.icccm.name)))) + (e_util_glob_match(bd->client.icccm.name, cfdata->name))) matches++; if ((matchflags & E_REMEMBER_MATCH_CLASS) && - ((!e_util_strcmp(bd->client.icccm.class, bd2->client.icccm.class)) || - (e_util_both_str_empty(bd->client.icccm.class, bd2->client.icccm.class)))) + (e_util_glob_match(bd->client.icccm.class, cfdata->class))) matches++; if ((matchflags & E_REMEMBER_MATCH_TITLE) && - ((!e_util_strcmp(title, title2)) || - (e_util_both_str_empty(title, title2)))) - matches++; + (e_util_glob_match(title, cfdata->title))) + matches++; if ((matchflags & E_REMEMBER_MATCH_ROLE) && - ((!e_util_strcmp(bd->client.icccm.window_role, bd2->client.icccm.window_role)) || - (e_util_both_str_empty(bd->client.icccm.window_role, bd2->client.icccm.window_role)))) + ((!e_util_strcmp(cfdata->role, bd->client.icccm.window_role)) || + (e_util_both_str_empty(cfdata->role, bd->client.icccm.window_role)))) matches++; if ((matchflags & E_REMEMBER_MATCH_TYPE) && - (bd->client.netwm.type == bd2->client.netwm.type)) + (cfdata->border->client.netwm.type == bd->client.netwm.type)) matches++; if ((matchflags & E_REMEMBER_MATCH_TRANSIENT) && - (((bd->client.icccm.transient_for) && (bd2->client.icccm.transient_for != 0)) || - ((!bd->client.icccm.transient_for) && (bd2->client.icccm.transient_for == 0)))) + ((cfdata->remember.match_transient && bd->client.icccm.transient_for != 0) || + (!cfdata->remember.match_transient && (bd->client.icccm.transient_for == 0)))) matches++; + if (matches >= required_matches) n++; + + if (update) + { + bd->changed = 1; + bd->changes.icon = 1; + } + else if (n > 1) break; } return n; } @@ -286,11 +336,13 @@ if (rem->title) eina_stringshare_del(rem->title); if (rem->role) eina_stringshare_del(rem->role); if (rem->prop.command) eina_stringshare_del(rem->prop.command); + if (rem->prop.desktop_file) eina_stringshare_del(rem->prop.desktop_file); rem->name = NULL; rem->class = NULL; rem->title = NULL; rem->role = NULL; rem->prop.command = NULL; + rem->prop.desktop_file = NULL; if (cfdata->name && cfdata->name[0]) rem->name = eina_stringshare_add(cfdata->name); if (cfdata->class && cfdata->class[0]) @@ -301,6 +353,10 @@ rem->role = eina_stringshare_add(cfdata->role); if (cfdata->command && cfdata->command[0]) rem->prop.command = eina_stringshare_add(cfdata->command); + + if (cfdata->remember.apply_desktop_file && cfdata->desktop) + rem->prop.desktop_file = eina_stringshare_add(cfdata->desktop); + } static int @@ -324,14 +380,20 @@ if (!cfdata->warned) { int matches = 0; + cfdata->remember.match_role = 1; + cfdata->remember.match_type = 1; + cfdata->remember.match_transient = 1; - if ((cfdata->border->client.icccm.name) && - (cfdata->border->client.icccm.class) && - (cfdata->border->client.icccm.name[0] != 0) && - (cfdata->border->client.icccm.class[0] != 0)) - matches = _check_matches(cfdata->border, E_REMEMBER_MATCH_NAME | E_REMEMBER_MATCH_CLASS | E_REMEMBER_MATCH_ROLE | E_REMEMBER_MATCH_TYPE | E_REMEMBER_MATCH_TRANSIENT); + if ((cfdata->name) && (cfdata->class)) + { + cfdata->remember.match_name = 1; + cfdata->remember.match_class = 1; + } else - matches = _check_matches(cfdata->border, E_REMEMBER_MATCH_TITLE | E_REMEMBER_MATCH_ROLE | E_REMEMBER_MATCH_TYPE | E_REMEMBER_MATCH_TRANSIENT); + cfdata->remember.match_title = 1; + + matches = _check_matches(cfdata, 0); + if (matches > 1) { E_Dialog *dia; @@ -388,9 +450,9 @@ E_REMEMBER_APPLY_SKIP_WINLIST | E_REMEMBER_APPLY_SKIP_PAGER | E_REMEMBER_APPLY_SKIP_TASKBAR | E_REMEMBER_APPLY_FULLSCREEN | E_REMEMBER_APPLY_ICON_PREF; rem->apply_first_only = 0; - + cfdata->remember.apply_desktop_file = 0; _remember_update(rem, cfdata); - + _check_matches(cfdata, 1); e_remember_update(rem, cfdata->border); } @@ -414,7 +476,8 @@ (cfdata->remember.apply_zone) || (cfdata->remember.apply_skip_winlist) || (cfdata->remember.apply_skip_pager) || (cfdata->remember.apply_skip_taskbar) || (cfdata->remember.apply_run) || (cfdata->remember.apply_icon_pref) || - (cfdata->remember.set_focus_on_start) || (cfdata->remember.apply_fullscreen))) + (cfdata->remember.set_focus_on_start) || (cfdata->remember.apply_fullscreen) || + (cfdata->remember.apply_desktop_file))) { if (rem) { @@ -426,9 +489,6 @@ return 1; } - if (cfdata->remember.match_name) cfdata->remember.match_class = 1; - else cfdata->remember.match_class = 0; - if (!((cfdata->remember.match_name) || (cfdata->remember.match_class) || (cfdata->remember.match_title) || (cfdata->remember.match_role) || (cfdata->remember.match_type) || (cfdata->remember.match_transient))) @@ -452,16 +512,8 @@ } if (!cfdata->warned) { - int matchflags = 0; - - if (cfdata->remember.match_name) matchflags |= E_REMEMBER_MATCH_NAME; - if (cfdata->remember.match_class) matchflags |= E_REMEMBER_MATCH_CLASS; - if (cfdata->remember.match_title) matchflags |= E_REMEMBER_MATCH_TITLE; - if (cfdata->remember.match_role) matchflags |= E_REMEMBER_MATCH_ROLE; - if (cfdata->remember.match_type) matchflags |= E_REMEMBER_MATCH_TYPE; - if (cfdata->remember.match_transient) matchflags |= E_REMEMBER_MATCH_TRANSIENT; if ((!cfdata->remember.apply_first_only) && - (_check_matches(cfdata->border, matchflags) > 1)) + (_check_matches(cfdata, 0) > 1)) { E_Dialog *dia; @@ -503,7 +555,7 @@ } if (rem) - { + { rem->apply = 0; rem->match = 0; rem->apply_first_only = cfdata->remember.apply_first_only; @@ -532,7 +584,7 @@ _remember_update(rem, cfdata); cfdata->border->remember = rem; - + _check_matches(cfdata, 1); rem->keep_settings = 0; e_remember_update(rem, cfdata->border); rem->keep_settings = cfdata->remember.keep_settings; @@ -579,7 +631,6 @@ ob = e_widget_check_add(evas, _("Window name"), &(cfdata->remember.match_name)); e_widget_framelist_object_append(of, ob); ob = e_widget_entry_add(evas, &cfdata->name, NULL, NULL, NULL); - e_widget_entry_readonly_set(ob, 1); e_widget_framelist_object_append(of, ob); } else @@ -591,7 +642,6 @@ ob = e_widget_check_add(evas, _("Window class"), &(cfdata->remember.match_class)); e_widget_framelist_object_append(of, ob); ob = e_widget_entry_add(evas, &cfdata->class, NULL, NULL, NULL); - e_widget_entry_readonly_set(ob, 1); e_widget_framelist_object_append(of, ob); } else @@ -603,7 +653,6 @@ ob = e_widget_check_add(evas, _("Title"), &(cfdata->remember.match_title)); e_widget_framelist_object_append(of, ob); ob = e_widget_entry_add(evas, &cfdata->title, NULL, NULL, NULL); - e_widget_entry_readonly_set(ob, 1); e_widget_framelist_object_append(of, ob); } else @@ -615,7 +664,6 @@ ob = e_widget_check_add(evas, _("Window Role"), &(cfdata->remember.match_role)); e_widget_framelist_object_append(of, ob); ob = e_widget_entry_add(evas, &cfdata->role, NULL, NULL, NULL); - e_widget_entry_readonly_set(ob, 1); e_widget_framelist_object_append(of, ob); } else @@ -664,22 +712,28 @@ e_widget_frametable_object_append(of, ob, 1, 5, 1, 1, 1, 1, 1, 1); ob = e_widget_check_add(evas, _("Skip Taskbar"), &(cfdata->remember.apply_skip_taskbar)); e_widget_frametable_object_append(of, ob, 1, 6, 1, 1, 1, 1, 1, 1); - e_widget_table_object_append(o, of, 1, 0, 1, 1, 1, 1, 1, 1); + ob = e_widget_check_add(evas, _("Application file or name (.desktop)"), &(cfdata->remember.apply_desktop_file)); + e_widget_frametable_object_append(of, ob, 0, 7, 2, 1, 1, 1, 1, 1); + ob = e_widget_entry_add(evas, &cfdata->desktop, NULL, NULL, NULL); + e_widget_frametable_object_append(of, ob, 0, 8, 2, 1, 1, 1, 1, 1); + e_widget_table_object_append(o, of, 1, 0, 1, 2, 1, 1, 1, 1); + of = e_widget_frametable_add(evas, _("Options"), 0); ob = e_widget_check_add(evas, _("Match only one window"), &(cfdata->remember.apply_first_only)); - e_widget_table_object_append(o, ob, 0, 1, 1, 1, 1, 1, 1, 1); + e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 1, 1, 1); ob = e_widget_check_add(evas, _("Always focus on start"), &(cfdata->remember.set_focus_on_start)); - e_widget_table_object_append(o, ob, 1, 1, 1, 1, 1, 1, 1, 1); + e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 1, 1, 1, 1); ob = e_widget_check_add(evas, _("Keep current properties"), &(cfdata->remember.keep_settings)); - e_widget_table_object_append(o, ob, 1, 2, 1, 1, 1, 1, 1, 1); - + e_widget_frametable_object_append(of, ob, 0, 2, 1, 1, 1, 1, 1, 1); + if (cfdata->command) { ob = e_widget_check_add(evas, _("Start this program on login"), &(cfdata->remember.apply_run)); - e_widget_table_object_append(o, ob, 1, 3, 1, 1, 1, 1, 1, 1); + e_widget_frametable_object_append(of, ob, 0, 3, 1, 1, 1, 1, 1, 1); } + e_widget_table_object_append(o, of, 0, 1, 1, 1, 1, 1, 1, 1); return o; } Modified: trunk/e/src/bin/e_remember.c =================================================================== --- trunk/e/src/bin/e_remember.c 2009-09-12 03:49:50 UTC (rev 42431) +++ trunk/e/src/bin/e_remember.c 2009-09-12 07:04:32 UTC (rev 42432) @@ -93,7 +93,8 @@ EAPI void e_remember_unuse(E_Remember *rem) { - rem->used_count--; + if (rem->used_count > 0) + rem->used_count--; if ((rem->used_count == 0) && (rem->delete_me)) _e_remember_free(rem); } @@ -118,7 +119,6 @@ } return; } - _e_remember_free(rem); } EAPI E_Remember * @@ -366,16 +366,13 @@ * required, and if it is, check whether there's a match. If * it fails, then go to the next remember */ if (rem->match & E_REMEMBER_MATCH_NAME && - e_util_strcmp(rem->name, bd->client.icccm.name) && - !e_util_both_str_empty(rem->name, bd->client.icccm.name)) + !e_util_glob_match(bd->client.icccm.name, rem->name)) continue; if (rem->match & E_REMEMBER_MATCH_CLASS && - e_util_strcmp(rem->class, bd->client.icccm.class) && - !e_util_both_str_empty(rem->class, bd->client.icccm.class)) + !e_util_glob_match(bd->client.icccm.class, rem->class)) continue; if (rem->match & E_REMEMBER_MATCH_TITLE && - e_util_strcmp(rem->title, title) && - !e_util_both_str_empty(rem->title, title)) + !e_util_glob_match(title, rem->title)) continue; if (rem->match & E_REMEMBER_MATCH_ROLE && e_util_strcmp(rem->role, bd->client.icccm.window_role) && |
From: Enlightenment S. <no-...@en...> - 2009-09-12 09:18:51
|
Log: move applying of remember properties for new windows from e_border to e_remember Author: jeffdameth Date: 2009-09-12 02:18:41 -0700 (Sat, 12 Sep 2009) New Revision: 42433 Modified: trunk/e/src/bin/e_border.c trunk/e/src/bin/e_int_border_remember.c trunk/e/src/bin/e_remember.c Modified: trunk/e/src/bin/e_border.c =================================================================== --- trunk/e/src/bin/e_border.c 2009-09-12 07:04:32 UTC (rev 42432) +++ trunk/e/src/bin/e_border.c 2009-09-12 09:18:41 UTC (rev 42433) @@ -5615,7 +5615,6 @@ { int change_urgent = 0; int rem_change = 0; - int zx, zy, zw, zh; if (e_object_is_del(E_OBJECT(bd))) { @@ -5624,8 +5623,7 @@ } _e_border_hook_call(E_BORDER_HOOK_EVAL_PRE_FETCH, bd); - if (bd->zone) - e_zone_useful_geometry_get(bd->zone, &zx, &zy, &zw, &zh); + /* fetch any info queued to be fetched */ if (bd->client.icccm.fetch.client_leader) { @@ -6154,7 +6152,6 @@ if (bd->new_client) { - E_Remember *rem = NULL; E_Event_Border_Add *ev; ev = calloc(1, sizeof(E_Event_Border_Add)); @@ -6165,244 +6162,9 @@ if ((!bd->lock_border) || (!bd->client.border.name)) bd->client.border.changed = 1; - if (!bd->remember) - { - rem = e_remember_find_usable(bd); - if (rem) - { - bd->remember = rem; - e_remember_use(rem); - } - } - if (bd->remember) - { - rem = bd->remember; - - if (rem->apply & E_REMEMBER_APPLY_ZONE) - { - E_Zone *zone; - - zone = e_container_zone_number_get(bd->zone->container, rem->prop.zone); - if (zone) - e_border_zone_set(bd, zone); - e_zone_useful_geometry_get(zone, &zx, &zy, &zw, &zh); - } - if (rem->apply & E_REMEMBER_APPLY_DESKTOP) - { - E_Desk *desk; - - desk = e_desk_at_xy_get(bd->zone, rem->prop.desk_x, rem->prop.desk_y); - if (desk) - { - e_border_desk_set(bd, desk); - if (e_config->desk_auto_switch) - e_desk_show(desk); - } - } - if (rem->apply & E_REMEMBER_APPLY_SIZE) - { - bd->client.w = rem->prop.w; - bd->client.h = rem->prop.h; - /* we can trust internal windows */ - if (bd->internal) - { - if (bd->zone->w != rem->prop.res_x) - { - if (bd->client.w > (bd->zone->w - 64)) - bd->client.w = bd->zone->w - 64; - } - if (bd->zone->h != rem->prop.res_y) - { - if (bd->client.h > (bd->zone->h - 64)) - bd->client.h = bd->zone->h - 64; - } - if (bd->client.icccm.min_w > bd->client.w) - bd->client.w = bd->client.icccm.min_w; - if (bd->client.icccm.max_w < bd->client.w) - bd->client.w = bd->client.icccm.max_w; - if (bd->client.icccm.min_h > bd->client.h) - bd->client.h = bd->client.icccm.min_h; - if (bd->client.icccm.max_h < bd->client.h) - bd->client.h = bd->client.icccm.max_h; - } - bd->w = bd->client.w + bd->client_inset.l + bd->client_inset.r; - bd->h = bd->client.h + bd->client_inset.t + bd->client_inset.b; - bd->changes.size = 1; - bd->changes.shape = 1; - } - if ((rem->apply & E_REMEMBER_APPLY_POS) && (!bd->re_manage)) - { - bd->x = rem->prop.pos_x; - bd->y = rem->prop.pos_y; - if (bd->zone->w != rem->prop.res_x) - { - int px; - - px = bd->x + (bd->w / 2); - if (px < ((rem->prop.res_x * 1) / 3)) - { - if (bd->zone->w >= (rem->prop.res_x / 3)) - bd->x = rem->prop.pos_x; - else - bd->x = ((rem->prop.pos_x - 0) * bd->zone->w) / - (rem->prop.res_x / 3); - } - else if (px < ((rem->prop.res_x * 2) / 3)) - { - if (bd->zone->w >= (rem->prop.res_x / 3)) - bd->x = (bd->zone->w / 2) + - (px - (rem->prop.res_x / 2)) - - (bd->w / 2); - else - bd->x = (bd->zone->w / 2) + - (((px - (rem->prop.res_x / 2)) * bd->zone->w) / - (rem->prop.res_x / 3)) - - (bd->w / 2); - } - else - { - if (bd->zone->w >= (rem->prop.res_x / 3)) - bd->x = bd->zone->w + - rem->prop.pos_x - rem->prop.res_x + - (rem->prop.w - bd->client.w); - else - bd->x = bd->zone->w + - (((rem->prop.pos_x - rem->prop.res_x) * bd->zone->w) / - (rem->prop.res_x / 3)) + - (rem->prop.w - bd->client.w); - } - if ((rem->prop.pos_x >= 0) && (bd->x < 0)) - bd->x = 0; - else if (((rem->prop.pos_x + rem->prop.w) < rem->prop.res_x) && - ((bd->x + bd->w) > bd->zone->w)) - bd->x = bd->zone->w - bd->w; - } - if (bd->zone->h != rem->prop.res_y) - { - int py; - - py = bd->y + (bd->h / 2); - if (py < ((rem->prop.res_y * 1) / 3)) - { - if (bd->zone->h >= (rem->prop.res_y / 3)) - bd->y = rem->prop.pos_y; - else - bd->y = ((rem->prop.pos_y - 0) * bd->zone->h) / - (rem->prop.res_y / 3); - } - else if (py < ((rem->prop.res_y * 2) / 3)) - { - if (bd->zone->h >= (rem->prop.res_y / 3)) - bd->y = (bd->zone->h / 2) + - (py - (rem->prop.res_y / 2)) - - (bd->h / 2); - else - bd->y = (bd->zone->h / 2) + - (((py - (rem->prop.res_y / 2)) * bd->zone->h) / - (rem->prop.res_y / 3)) - - (bd->h / 2); - } - else - { - if (bd->zone->h >= (rem->prop.res_y / 3)) - bd->y = bd->zone->h + - rem->prop.pos_y - rem->prop.res_y + - (rem->prop.h - bd->client.h); - else - bd->y = bd->zone->h + - (((rem->prop.pos_y - rem->prop.res_y) * bd->zone->h) / - (rem->prop.res_y / 3)) + - (rem->prop.h - bd->client.h); - } - if ((rem->prop.pos_y >= 0) && (bd->y < 0)) - bd->y = 0; - else if (((rem->prop.pos_y + rem->prop.h) < rem->prop.res_y) && - ((bd->y + bd->h) > bd->zone->h)) - bd->y = bd->zone->h - bd->h; - } -// if (bd->zone->w != rem->prop.res_x) -// bd->x = (rem->prop.pos_x * bd->zone->w) / rem->prop.res_x; -// if (bd->zone->h != rem->prop.res_y) -// bd->y = (rem->prop.pos_y * bd->zone->h) / rem->prop.res_y; - bd->x += bd->zone->x; - bd->y += bd->zone->y; - bd->placed = 1; - bd->changes.pos = 1; - } - if (rem->apply & E_REMEMBER_APPLY_LAYER) - { - bd->layer = rem->prop.layer; - if (bd->layer == 100) - e_hints_window_stacking_set(bd, E_STACKING_NONE); - else if (bd->layer == 150) - e_hints_window_stacking_set(bd, E_STACKING_ABOVE); - e_container_border_raise(bd); - } - if (rem->apply & E_REMEMBER_APPLY_BORDER) - { - if (rem->prop.border) - { - if (bd->bordername) eina_stringshare_del(bd->bordername); - if (rem->prop.border) bd->bordername = eina_stringshare_add(rem->prop.border); - else bd->bordername = NULL; - bd->client.border.changed = 1; - } - } - if (rem->apply & E_REMEMBER_APPLY_FULLSCREEN) - { - if (rem->prop.fullscreen) - e_border_fullscreen(bd, e_config->fullscreen_policy); - } - if (rem->apply & E_REMEMBER_APPLY_STICKY) - { - if (rem->prop.sticky) e_border_stick(bd); - } - if (rem->apply & E_REMEMBER_APPLY_SHADE) - { - if (rem->prop.shaded >= 100) - e_border_shade(bd, rem->prop.shaded - 100); - else if (rem->prop.shaded >= 50) - e_border_unshade(bd, rem->prop.shaded - 50); - } - if (rem->apply & E_REMEMBER_APPLY_LOCKS) - { - bd->lock_user_location = rem->prop.lock_user_location; - bd->lock_client_location = rem->prop.lock_client_location; - bd->lock_user_size = rem->prop.lock_user_size; - bd->lock_client_size = rem->prop.lock_client_size; - bd->lock_user_stacking = rem->prop.lock_user_stacking; - bd->lock_client_stacking = rem->prop.lock_client_stacking; - bd->lock_user_iconify = rem->prop.lock_user_iconify; - bd->lock_client_iconify = rem->prop.lock_client_iconify; - bd->lock_user_desk = rem->prop.lock_user_desk; - bd->lock_client_desk = rem->prop.lock_client_desk; - bd->lock_user_sticky = rem->prop.lock_user_sticky; - bd->lock_client_sticky = rem->prop.lock_client_sticky; - bd->lock_user_shade = rem->prop.lock_user_shade; - bd->lock_client_shade = rem->prop.lock_client_shade; - bd->lock_user_maximize = rem->prop.lock_user_maximize; - bd->lock_client_maximize = rem->prop.lock_client_maximize; - bd->lock_user_fullscreen = rem->prop.lock_user_fullscreen; - bd->lock_client_fullscreen = rem->prop.lock_client_fullscreen; - bd->lock_border = rem->prop.lock_border; - bd->lock_close = rem->prop.lock_close; - bd->lock_focus_in = rem->prop.lock_focus_in; - bd->lock_focus_out = rem->prop.lock_focus_out; - bd->lock_life = rem->prop.lock_life; - } - if (rem->apply & E_REMEMBER_APPLY_SKIP_WINLIST) - bd->user_skip_winlist = rem->prop.skip_winlist; - if (rem->apply & E_REMEMBER_APPLY_SKIP_PAGER) - bd->client.netwm.state.skip_pager = rem->prop.skip_pager; - if (rem->apply & E_REMEMBER_APPLY_SKIP_TASKBAR) - bd->client.netwm.state.skip_taskbar = rem->prop.skip_taskbar; - if (rem->apply & E_REMEMBER_APPLY_ICON_PREF) - bd->icon_preference = rem->prop.icon_preference; - if (rem->apply & E_REMEMBER_SET_FOCUS_ON_START) - bd->want_focus = 1; - } } + /* PRE_POST_FETCH calls e_remember apply for new client */ _e_border_hook_call(E_BORDER_HOOK_EVAL_PRE_POST_FETCH, bd); _e_border_hook_call(E_BORDER_HOOK_EVAL_POST_FETCH, bd); _e_border_hook_call(E_BORDER_HOOK_EVAL_PRE_BORDER_ASSIGN, bd); @@ -6771,13 +6533,11 @@ free(pnd); } - /* Recreate state */ + /* Recreate state */ e_hints_window_init(bd); - - if ((bd->client.e.state.centered) && + if ((bd->client.e.state.centered) && ((!bd->remember) || - ((bd->remember) && - (!(bd->remember->apply & E_REMEMBER_APPLY_POS))))) + ((bd->remember) && (!(bd->remember->apply & E_REMEMBER_APPLY_POS))))) { bd->x = zx + (zw - bd->w) / 2; bd->y = zy + (zh - bd->h) / 2; @@ -6785,23 +6545,6 @@ bd->placed = 1; } - if ((bd->internal) && (!bd->remember) && - (e_config->remember_internal_windows) && - (!bd->internal_no_remember)) - { - E_Remember *rem; - - rem = e_remember_new(); - if (rem) - { - rem->match = E_REMEMBER_MATCH_NAME | E_REMEMBER_MATCH_CLASS | E_REMEMBER_MATCH_ROLE | E_REMEMBER_MATCH_TYPE | E_REMEMBER_MATCH_TRANSIENT; - rem->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_BORDER; - bd->remember = rem; - e_remember_use(rem); - e_remember_update(rem, bd); - } - } - if (bd->internal_ecore_evas) ecore_evas_managed_move(bd->internal_ecore_evas, bd->x + bd->fx.x + bd->client_inset.l, @@ -6838,7 +6581,7 @@ if ((zone) && (zone != bd->zone)) { e_border_zone_set(bd, zone); - e_zone_useful_geometry_get(zone, &zx, &zy, &zw, &zh); + /* e_zone_useful_geometry_get(zone, &zx, &zy, &zw, &zh); */ } } } Modified: trunk/e/src/bin/e_int_border_remember.c =================================================================== --- trunk/e/src/bin/e_int_border_remember.c 2009-09-12 07:04:32 UTC (rev 42432) +++ trunk/e/src/bin/e_int_border_remember.c 2009-09-12 09:18:41 UTC (rev 42433) @@ -679,6 +679,8 @@ { cfdata->remember.match_type = 0; } + ob = e_widget_label_add(evas, _("wildcard matches are allowed")); + e_widget_framelist_object_append(of, ob); ob = e_widget_check_add(evas, _("Transience"), &(cfdata->remember.match_transient)); e_widget_framelist_object_append(of, ob); e_widget_table_object_append(o, of, 0, 0, 1, 1, 1, 1, 1, 1); Modified: trunk/e/src/bin/e_remember.c =================================================================== --- trunk/e/src/bin/e_remember.c 2009-09-12 07:04:32 UTC (rev 42432) +++ trunk/e/src/bin/e_remember.c 2009-09-12 09:18:41 UTC (rev 42433) @@ -10,6 +10,9 @@ static void _e_remember_free(E_Remember *rem); static int _e_remember_sort_list(const void * d1, const void * d2); static E_Remember *_e_remember_find(E_Border *bd, int check_usable); +static void _e_remember_cb_hook_pre_post_fetch(void *data, E_Border *bd); +static void _e_remember_cb_hook_eval_post_new_border(void *data, E_Border *bd); +static Eina_List *hooks = NULL; /* FIXME: match netwm window type */ @@ -22,6 +25,7 @@ Eina_List *l = NULL; E_Remember *rem; int not_updated = 0; + E_Border_Hook *h; if (mode == E_STARTUP_START) { @@ -32,6 +36,13 @@ } } + h = e_border_hook_add(E_BORDER_HOOK_EVAL_PRE_POST_FETCH, + _e_remember_cb_hook_pre_post_fetch, NULL); + if (h) hooks = eina_list_append(hooks, h); + h = e_border_hook_add(E_BORDER_HOOK_EVAL_POST_NEW_BORDER, + _e_remember_cb_hook_eval_post_new_border, NULL); + if (h) hooks = eina_list_append(hooks, h); + #if 1 EINA_LIST_FOREACH(e_config->remembers, l, rem) { @@ -54,7 +65,7 @@ } if (not_updated) - e_config->remembers = eina_list_sort(e_config->remembers, -1, + e_config->remembers = eina_list_sort(e_config->remembers, -1, _e_remember_sort_list); #endif return 1; @@ -63,6 +74,11 @@ EAPI int e_remember_shutdown(void) { + E_Border_Hook *h; + + EINA_LIST_FREE(hooks, h) + e_border_hook_del(h); + return 1; } @@ -158,7 +174,7 @@ * need to remove from list and insert back into the appropriate * loction. */ Eina_List *l = NULL; - E_Remember *r; + E_Remember *r; rem->max_score = max_count; e_config->remembers = eina_list_remove(e_config->remembers, rem); @@ -188,7 +204,7 @@ if ((e_border_name_get(bd))[0] != 0) match |= E_REMEMBER_MATCH_TITLE; - if ((bd->client.icccm.window_role) && + if ((bd->client.icccm.window_role) && (bd->client.icccm.window_role[0] != 0)) match |= E_REMEMBER_MATCH_ROLE; @@ -206,10 +222,10 @@ if (bd->remember && bd->remember->keep_settings) return; - + if (rem->prop.border) eina_stringshare_del(rem->prop.border); rem->prop.border = NULL; - + e_remember_match_update(rem); rem->type = bd->client.netwm.type; @@ -406,7 +422,7 @@ free(rem); } -static int +static int _e_remember_sort_list(const void * d1, const void * d2) { const E_Remember *r1, *r2; @@ -418,3 +434,293 @@ else return 1; } + +static void +_e_remember_cb_hook_pre_post_fetch(void *data, E_Border *bd) +{ + E_Remember *rem = NULL; + + if (!bd->new_client) return; + + if (!bd->remember) + { + rem = e_remember_find_usable(bd); + if (rem) + { + bd->remember = rem; + e_remember_use(rem); + } + } + if (bd->remember) + { + rem = bd->remember; + + if (rem->apply & E_REMEMBER_APPLY_ZONE) + { + E_Zone *zone; + + zone = e_container_zone_number_get(bd->zone->container, rem->prop.zone); + if (zone) + e_border_zone_set(bd, zone); + } + if (rem->apply & E_REMEMBER_APPLY_DESKTOP) + { + E_Desk *desk; + + desk = e_desk_at_xy_get(bd->zone, rem->prop.desk_x, rem->prop.desk_y); + if (desk) + { + e_border_desk_set(bd, desk); + if (e_config->desk_auto_switch) + e_desk_show(desk); + } + } + if (rem->apply & E_REMEMBER_APPLY_SIZE) + { + bd->client.w = rem->prop.w; + bd->client.h = rem->prop.h; + /* we can trust internal windows */ + if (bd->internal) + { + if (bd->zone->w != rem->prop.res_x) + { + if (bd->client.w > (bd->zone->w - 64)) + bd->client.w = bd->zone->w - 64; + } + if (bd->zone->h != rem->prop.res_y) + { + if (bd->client.h > (bd->zone->h - 64)) + bd->client.h = bd->zone->h - 64; + } + if (bd->client.icccm.min_w > bd->client.w) + bd->client.w = bd->client.icccm.min_w; + if (bd->client.icccm.max_w < bd->client.w) + bd->client.w = bd->client.icccm.max_w; + if (bd->client.icccm.min_h > bd->client.h) + bd->client.h = bd->client.icccm.min_h; + if (bd->client.icccm.max_h < bd->client.h) + bd->client.h = bd->client.icccm.max_h; + } + bd->w = bd->client.w + bd->client_inset.l + bd->client_inset.r; + bd->h = bd->client.h + bd->client_inset.t + bd->client_inset.b; + bd->changes.size = 1; + bd->changes.shape = 1; + } + if ((rem->apply & E_REMEMBER_APPLY_POS) && (!bd->re_manage)) + { + bd->x = rem->prop.pos_x; + bd->y = rem->prop.pos_y; + if (bd->zone->w != rem->prop.res_x) + { + int px; + + px = bd->x + (bd->w / 2); + if (px < ((rem->prop.res_x * 1) / 3)) + { + if (bd->zone->w >= (rem->prop.res_x / 3)) + bd->x = rem->prop.pos_x; + else + bd->x = ((rem->prop.pos_x - 0) * bd->zone->w) / + (rem->prop.res_x / 3); + } + else if (px < ((rem->prop.res_x * 2) / 3)) + { + if (bd->zone->w >= (rem->prop.res_x / 3)) + bd->x = (bd->zone->w / 2) + + (px - (rem->prop.res_x / 2)) - + (bd->w / 2); + else + bd->x = (bd->zone->w / 2) + + (((px - (rem->prop.res_x / 2)) * bd->zone->w) / + (rem->prop.res_x / 3)) - + (bd->w / 2); + } + else + { + if (bd->zone->w >= (rem->prop.res_x / 3)) + bd->x = bd->zone->w + + rem->prop.pos_x - rem->prop.res_x + + (rem->prop.w - bd->client.w); + else + bd->x = bd->zone->w + + (((rem->prop.pos_x - rem->prop.res_x) * bd->zone->w) / + (rem->prop.res_x / 3)) + + (rem->prop.w - bd->client.w); + } + if ((rem->prop.pos_x >= 0) && (bd->x < 0)) + bd->x = 0; + else if (((rem->prop.pos_x + rem->prop.w) < rem->prop.res_x) && + ((bd->x + bd->w) > bd->zone->w)) + bd->x = bd->zone->w - bd->w; + } + if (bd->zone->h != rem->prop.res_y) + { + int py; + + py = bd->y + (bd->h / 2); + if (py < ((rem->prop.res_y * 1) / 3)) + { + if (bd->zone->h >= (rem->prop.res_y / 3)) + bd->y = rem->prop.pos_y; + else + bd->y = ((rem->prop.pos_y - 0) * bd->zone->h) / + (rem->prop.res_y / 3); + } + else if (py < ((rem->prop.res_y * 2) / 3)) + { + if (bd->zone->h >= (rem->prop.res_y / 3)) + bd->y = (bd->zone->h / 2) + + (py - (rem->prop.res_y / 2)) - + (bd->h / 2); + else + bd->y = (bd->zone->h / 2) + + (((py - (rem->prop.res_y / 2)) * bd->zone->h) / + (rem->prop.res_y / 3)) - + (bd->h / 2); + } + else + { + if (bd->zone->h >= (rem->prop.res_y / 3)) + bd->y = bd->zone->h + + rem->prop.pos_y - rem->prop.res_y + + (rem->prop.h - bd->client.h); + else + bd->y = bd->zone->h + + (((rem->prop.pos_y - rem->prop.res_y) * bd->zone->h) / + (rem->prop.res_y / 3)) + + (rem->prop.h - bd->client.h); + } + if ((rem->prop.pos_y >= 0) && (bd->y < 0)) + bd->y = 0; + else if (((rem->prop.pos_y + rem->prop.h) < rem->prop.res_y) && + ((bd->y + bd->h) > bd->zone->h)) + bd->y = bd->zone->h - bd->h; + } + // if (bd->zone->w != rem->prop.res_x) + // bd->x = (rem->prop.pos_x * bd->zone->w) / rem->prop.res_x; + // if (bd->zone->h != rem->prop.res_y) + // bd->y = (rem->prop.pos_y * bd->zone->h) / rem->prop.res_y; + bd->x += bd->zone->x; + bd->y += bd->zone->y; + bd->placed = 1; + bd->changes.pos = 1; + } + if (rem->apply & E_REMEMBER_APPLY_LAYER) + { + bd->layer = rem->prop.layer; + if (bd->layer == 100) + e_hints_window_stacking_set(bd, E_STACKING_NONE); + else if (bd->layer == 150) + e_hints_window_stacking_set(bd, E_STACKING_ABOVE); + e_container_border_raise(bd); + } + if (rem->apply & E_REMEMBER_APPLY_BORDER) + { + if (rem->prop.border) + { + if (bd->bordername) eina_stringshare_del(bd->bordername); + if (rem->prop.border) bd->bordername = eina_stringshare_add(rem->prop.border); + else bd->bordername = NULL; + bd->client.border.changed = 1; + } + } + if (rem->apply & E_REMEMBER_APPLY_FULLSCREEN) + { + if (rem->prop.fullscreen) + e_border_fullscreen(bd, e_config->fullscreen_policy); + } + if (rem->apply & E_REMEMBER_APPLY_STICKY) + { + if (rem->prop.sticky) e_border_stick(bd); + } + if (rem->apply & E_REMEMBER_APPLY_SHADE) + { + if (rem->prop.shaded >= 100) + e_border_shade(bd, rem->prop.shaded - 100); + else if (rem->prop.shaded >= 50) + e_border_unshade(bd, rem->prop.shaded - 50); + } + if (rem->apply & E_REMEMBER_APPLY_LOCKS) + { + bd->lock_user_location = rem->prop.lock_user_location; + bd->lock_client_location = rem->prop.lock_client_location; + bd->lock_user_size = rem->prop.lock_user_size; + bd->lock_client_size = rem->prop.lock_client_size; + bd->lock_user_stacking = rem->prop.lock_user_stacking; + bd->lock_client_stacking = rem->prop.lock_client_stacking; + bd->lock_user_iconify = rem->prop.lock_user_iconify; + bd->lock_client_iconify = rem->prop.lock_client_iconify; + bd->lock_user_desk = rem->prop.lock_user_desk; + bd->lock_client_desk = rem->prop.lock_client_desk; + bd->lock_user_sticky = rem->prop.lock_user_sticky; + bd->lock_client_sticky = rem->prop.lock_client_sticky; + bd->lock_user_shade = rem->prop.lock_user_shade; + bd->lock_client_shade = rem->prop.lock_client_shade; + bd->lock_user_maximize = rem->prop.lock_user_maximize; + bd->lock_client_maximize = rem->prop.lock_client_maximize; + bd->lock_user_fullscreen = rem->prop.lock_user_fullscreen; + bd->lock_client_fullscreen = rem->prop.lock_client_fullscreen; + bd->lock_border = rem->prop.lock_border; + bd->lock_close = rem->prop.lock_close; + bd->lock_focus_in = rem->prop.lock_focus_in; + bd->lock_focus_out = rem->prop.lock_focus_out; + bd->lock_life = rem->prop.lock_life; + } + if (rem->apply & E_REMEMBER_APPLY_SKIP_WINLIST) + bd->user_skip_winlist = rem->prop.skip_winlist; + if (rem->apply & E_REMEMBER_APPLY_SKIP_PAGER) + bd->client.netwm.state.skip_pager = rem->prop.skip_pager; + if (rem->apply & E_REMEMBER_APPLY_SKIP_TASKBAR) + bd->client.netwm.state.skip_taskbar = rem->prop.skip_taskbar; + if (rem->apply & E_REMEMBER_APPLY_ICON_PREF) + bd->icon_preference = rem->prop.icon_preference; + if (rem->apply & E_REMEMBER_SET_FOCUS_ON_START) + bd->want_focus = 1; + } +} + + +static void +_e_remember_cb_hook_eval_post_new_border(void *data, E_Border *bd) +{ + if (!bd->new_client) return; + + if ((bd->internal) && (!bd->remember) && + (e_config->remember_internal_windows) && + (!bd->internal_no_remember)) + { + E_Remember *rem; + + rem = e_remember_new(); + if (rem) + { + bd->remember = rem; + rem->match = 0; + + if (bd->client.icccm.name) + { + rem->name = eina_stringshare_add(bd->client.icccm.name); + rem->match |= E_REMEMBER_MATCH_NAME; + } + if (bd->client.icccm.class) + { + rem->class = eina_stringshare_add(bd->client.icccm.class); + rem->match |= E_REMEMBER_MATCH_CLASS; + } + if (bd->client.icccm.window_role) + { + rem->role = eina_stringshare_add(bd->client.icccm.window_role); + rem->match |= E_REMEMBER_MATCH_ROLE; + } + if (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_UNKNOWN) + { + rem->match |= E_REMEMBER_MATCH_TYPE; + } + + rem->match |= E_REMEMBER_MATCH_TRANSIENT; + rem->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_BORDER; + e_remember_use(rem); + e_remember_update(rem, bd); + } + } +} |
From: Enlightenment S. <no-...@en...> - 2009-09-12 11:23:11
|
Log: e_fm: find theme defined mime icons Author: jeffdameth Date: 2009-09-12 04:22:58 -0700 (Sat, 12 Sep 2009) New Revision: 42436 Modified: trunk/e/src/bin/e_fm.c Modified: trunk/e/src/bin/e_fm.c =================================================================== --- trunk/e/src/bin/e_fm.c 2009-09-12 11:08:07 UTC (rev 42435) +++ trunk/e/src/bin/e_fm.c 2009-09-12 11:22:58 UTC (rev 42436) @@ -2067,7 +2067,7 @@ char buf[1024]; const char *file; - if (snprintf(buf, sizeof(buf), "e/icons/mimetypes/%s", ic->info.mime) >= sizeof(buf)) + if (snprintf(buf, sizeof(buf), "e/icons/fileman/mime/%s", ic->info.mime) >= sizeof(buf)) return NULL; file = e_theme_edje_file_get("base/theme/icons", buf); |
From: Enlightenment S. <no-...@en...> - 2009-09-12 12:42:28
|
Log: remember transient state - do not update Author: jeffdameth Date: 2009-09-12 05:42:13 -0700 (Sat, 12 Sep 2009) New Revision: 42439 Modified: trunk/e/src/bin/e_int_border_remember.c trunk/e/src/bin/e_remember.c Modified: trunk/e/src/bin/e_int_border_remember.c =================================================================== --- trunk/e/src/bin/e_int_border_remember.c 2009-09-12 12:28:11 UTC (rev 42438) +++ trunk/e/src/bin/e_int_border_remember.c 2009-09-12 12:42:13 UTC (rev 42439) @@ -584,6 +584,11 @@ if (cfdata->remember.apply_icon_pref) rem->apply |= E_REMEMBER_APPLY_ICON_PREF; if (cfdata->remember.set_focus_on_start) rem->apply |= E_REMEMBER_SET_FOCUS_ON_START; + if (bd->client.icccm.transient_for != 0) + rem->transient = 1; + else + rem->transient = 0; + _remember_update(rem, cfdata); _check_matches(cfdata, 1); rem->keep_settings = 0; Modified: trunk/e/src/bin/e_remember.c =================================================================== --- trunk/e/src/bin/e_remember.c 2009-09-12 12:28:11 UTC (rev 42438) +++ trunk/e/src/bin/e_remember.c 2009-09-12 12:42:13 UTC (rev 42439) @@ -232,6 +232,11 @@ rem->role = eina_stringshare_add(role); } + if (bd->client.icccm.transient_for != 0) + rem->transient = 1; + else + rem->transient = 0; + rem->match = match; return match; @@ -259,11 +264,6 @@ rem->type = bd->client.netwm.type; - if (bd->client.icccm.transient_for != 0) - rem->transient = 1; - else - rem->transient = 0; - if (bd->fullscreen) { rem->prop.fullscreen = bd->fullscreen; |
From: Enlightenment S. <no-...@en...> - 2009-09-12 13:18:12
|
Log: simplify code. only refactoring Author: jeffdameth Date: 2009-09-12 06:18:02 -0700 (Sat, 12 Sep 2009) New Revision: 42440 Modified: trunk/e/src/bin/e_border.c Modified: trunk/e/src/bin/e_border.c =================================================================== --- trunk/e/src/bin/e_border.c 2009-09-12 12:42:13 UTC (rev 42439) +++ trunk/e/src/bin/e_border.c 2009-09-12 13:18:02 UTC (rev 42440) @@ -6654,6 +6654,8 @@ } else { + int x = 0, y = 0; + evas_obscured_clear(bd->bg_evas); evas_obscured_rectangle_add(bd->bg_evas, bd->client_inset.l, bd->client_inset.t, @@ -6682,50 +6684,17 @@ if (bd->shading) { if (bd->shade.dir == E_DIRECTION_UP) - { - if (bd->internal_ecore_evas) - ecore_evas_move_resize(bd->internal_ecore_evas, 0, - bd->h - (bd->client_inset.t + bd->client_inset.b) - - bd->client.h, - bd->client.w, bd->client.h); - else - ecore_x_window_move_resize(bd->client.win, 0, - bd->h - (bd->client_inset.t + bd->client_inset.b) - - bd->client.h, - bd->client.w, bd->client.h); - } + y = bd->h - (bd->client_inset.t + bd->client_inset.b) - bd->client.h; else if (bd->shade.dir == E_DIRECTION_LEFT) - { - if (bd->internal_ecore_evas) - ecore_evas_move_resize(bd->internal_ecore_evas, - bd->w - (bd->client_inset.l + bd->client_inset.r) - - bd->client.h, - 0, bd->client.w, bd->client.h); - else - ecore_x_window_move_resize(bd->client.win, - bd->w - (bd->client_inset.l + bd->client_inset.r) - - bd->client.h, - 0, bd->client.w, bd->client.h); - } - else - { - if (bd->internal_ecore_evas) - ecore_evas_move_resize(bd->internal_ecore_evas, 0, 0, - bd->client.w, bd->client.h); - else - ecore_x_window_move_resize(bd->client.win, 0, 0, - bd->client.w, bd->client.h); - } + x = bd->w - (bd->client_inset.l + bd->client_inset.r) - bd->client.h; } + if (bd->internal_ecore_evas) + ecore_evas_move_resize(bd->internal_ecore_evas, + x, y, bd->client.w, bd->client.h); else - { - if (bd->internal_ecore_evas) - ecore_evas_move_resize(bd->internal_ecore_evas, 0, 0, - bd->client.w, bd->client.h); - else - ecore_x_window_move_resize(bd->client.win, 0, 0, - bd->client.w, bd->client.h); - } + ecore_x_window_move_resize(bd->client.win, + x, y, bd->client.w, bd->client.h); + ecore_evas_move_resize(bd->bg_ecore_evas, 0, 0, bd->w, bd->h); evas_object_resize(bd->bg_object, bd->w, bd->h); e_container_shape_resize(bd->shape, bd->w, bd->h); @@ -6799,6 +6768,8 @@ } else { + int x = 0, y = 0; + evas_obscured_clear(bd->bg_evas); evas_obscured_rectangle_add(bd->bg_evas, bd->client_inset.l, bd->client_inset.t, @@ -6823,50 +6794,17 @@ if (bd->shading) { if (bd->shade.dir == E_DIRECTION_UP) - { - if (bd->internal_ecore_evas) - ecore_evas_move_resize(bd->internal_ecore_evas, 0, - bd->h - (bd->client_inset.t + bd->client_inset.b) - - bd->client.h, - bd->client.w, bd->client.h); - else - ecore_x_window_move_resize(bd->client.win, 0, - bd->h - (bd->client_inset.t + bd->client_inset.b) - - bd->client.h, - bd->client.w, bd->client.h); - } + y = bd->h - (bd->client_inset.t + bd->client_inset.b) - bd->client.h; else if (bd->shade.dir == E_DIRECTION_LEFT) - { - if (bd->internal_ecore_evas) - ecore_evas_move_resize(bd->internal_ecore_evas, - bd->w - (bd->client_inset.l + bd->client_inset.r) - - bd->client.h, - 0, bd->client.w, bd->client.h); - else - ecore_x_window_move_resize(bd->client.win, - bd->w - (bd->client_inset.l + bd->client_inset.r) - - bd->client.h, - 0, bd->client.w, bd->client.h); - } - else - { - if (bd->internal_ecore_evas) - ecore_evas_move_resize(bd->internal_ecore_evas, 0, 0, - bd->client.w, bd->client.h); - else - ecore_x_window_move_resize(bd->client.win, 0, 0, - bd->client.w, bd->client.h); - } + x = bd->w - (bd->client_inset.l + bd->client_inset.r) - bd->client.h; } + if (bd->internal_ecore_evas) + ecore_evas_move_resize(bd->internal_ecore_evas, + x, y, bd->client.w, bd->client.h); else - { - if (bd->internal_ecore_evas) - ecore_evas_move_resize(bd->internal_ecore_evas, 0, 0, - bd->client.w, bd->client.h); - else - ecore_x_window_move_resize(bd->client.win, 0, 0, - bd->client.w, bd->client.h); - } + ecore_x_window_move_resize(bd->client.win, + x, y, bd->client.w, bd->client.h); + ecore_evas_move_resize(bd->bg_ecore_evas, 0, 0, bd->w, bd->h); evas_object_resize(bd->bg_object, bd->w, bd->h); e_container_shape_resize(bd->shape, bd->w, bd->h); |
From: Enlightenment S. <no-...@en...> - 2009-09-12 14:15:10
|
Log: factor duplicated ecore_evas_managed_move and ecore_x_icccm_move_resize_send out to _e_border_client_move_resize_send(E_Border) Author: jeffdameth Date: 2009-09-12 06:53:43 -0700 (Sat, 12 Sep 2009) New Revision: 42441 Modified: trunk/e/src/bin/e_border.c Modified: trunk/e/src/bin/e_border.c =================================================================== --- trunk/e/src/bin/e_border.c 2009-09-12 13:18:02 UTC (rev 42440) +++ trunk/e/src/bin/e_border.c 2009-09-12 13:53:43 UTC (rev 42441) @@ -107,6 +107,8 @@ static void _e_border_hook_call(E_Border_Hook_Point hookpoint, void *bd); +static void _e_border_client_move_resize_send(E_Border *bd); + /* local subsystem globals */ static Eina_List *handlers = NULL; static Eina_List *borders = NULL; @@ -807,6 +809,22 @@ } static void +_e_border_client_move_resize_send(E_Border *bd) +{ + if (bd->internal_ecore_evas) + ecore_evas_managed_move(bd->internal_ecore_evas, + bd->x + bd->fx.x + bd->client_inset.l, + bd->y + bd->fx.y + bd->client_inset.t); + + ecore_x_icccm_move_resize_send(bd->client.win, + bd->x + bd->fx.x + bd->client_inset.l, + bd->y + bd->fx.y + bd->client_inset.t, + bd->client.w, + bd->client.h); +} + + +static void _e_border_move_internal(E_Border *bd, int x, int y, Eina_Bool without_border) { E_Event_Border_Move *ev; @@ -851,15 +869,7 @@ ecore_x_netwm_sync_request_send(bd->client.win, bd->client.netwm.sync.serial++); } #endif - if (bd->internal_ecore_evas) - ecore_evas_managed_move(bd->internal_ecore_evas, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t); - ecore_x_icccm_move_resize_send(bd->client.win, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t, - bd->client.w, - bd->client.h); + _e_border_client_move_resize_send(bd); _e_border_move_update(bd); ev = calloc(1, sizeof(E_Event_Border_Move)); ev->border = bd; @@ -944,15 +954,8 @@ bd->fx.y = y; bd->changed = 1; bd->changes.pos = 1; - if (bd->internal_ecore_evas) - ecore_evas_managed_move(bd->internal_ecore_evas, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t); - ecore_x_icccm_move_resize_send(bd->client.win, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t, - bd->client.w, - bd->client.h); + + _e_border_client_move_resize_send(bd); if (bd->moving) _e_border_move_update(bd); } @@ -1007,15 +1010,8 @@ bd->client.netwm.sync.wait++; ecore_x_netwm_sync_request_send(bd->client.win, bd->client.netwm.sync.serial++); } - if (bd->internal_ecore_evas) - ecore_evas_managed_move(bd->internal_ecore_evas, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t); - ecore_x_icccm_move_resize_send(bd->client.win, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t, - bd->client.w, - bd->client.h); + + _e_border_client_move_resize_send(bd); _e_border_resize_update(bd); ev = calloc(1, sizeof(E_Event_Border_Resize)); ev->border = bd; @@ -1126,15 +1122,8 @@ bd->client.netwm.sync.wait++; ecore_x_netwm_sync_request_send(bd->client.win, bd->client.netwm.sync.serial++); } - if (bd->internal_ecore_evas) - ecore_evas_managed_move(bd->internal_ecore_evas, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t); - ecore_x_icccm_move_resize_send(bd->client.win, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t, - bd->client.w, - bd->client.h); + + _e_border_client_move_resize_send(bd); _e_border_resize_update(bd); mev = calloc(1, sizeof(E_Event_Border_Move)); mev->border = bd; @@ -3477,15 +3466,7 @@ bd->need_shape_merge = 1; bd->need_shape_export = 1; } - if (bd->internal_ecore_evas) - ecore_evas_managed_move(bd->internal_ecore_evas, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t); - ecore_x_icccm_move_resize_send(bd->client.win, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t, - bd->client.w, - bd->client.h); + _e_border_client_move_resize_send(bd); } EAPI Eina_List * @@ -4307,11 +4288,8 @@ } } } - ecore_x_icccm_move_resize_send(bd->client.win, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t, - bd->client.w, - bd->client.h); + + _e_border_client_move_resize_send(bd); return 1; } @@ -4358,11 +4336,8 @@ else e_border_resize(bd, w, h); } - ecore_x_icccm_move_resize_send(bd->client.win, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t, - bd->client.w, - bd->client.h); + + _e_border_client_move_resize_send(bd); return 1; } @@ -6529,15 +6504,8 @@ bd->placed = 1; } - if (bd->internal_ecore_evas) - ecore_evas_managed_move(bd->internal_ecore_evas, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t); - ecore_x_icccm_move_resize_send(bd->client.win, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t, - bd->client.w, - bd->client.h); + _e_border_client_move_resize_send(bd); + /* if the explicit geometry request asks for the app to be * in another zone - well move it there */ { @@ -6702,15 +6670,9 @@ bd->x + bd->fx.x, bd->y + bd->fx.y); } - if (bd->internal_ecore_evas) - ecore_evas_managed_move(bd->internal_ecore_evas, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t); - ecore_x_icccm_move_resize_send(bd->client.win, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t, - bd->client.w, - bd->client.h); + + _e_border_client_move_resize_send(bd); + bd->changes.pos = 0; bd->changes.size = 0; rem_change = 1; @@ -6729,15 +6691,9 @@ ecore_x_window_move(bd->win, bd->x + bd->fx.x, bd->y + bd->fx.y); } e_container_shape_move(bd->shape, bd->x + bd->fx.x, bd->y + bd->fx.y); - if (bd->internal_ecore_evas) - ecore_evas_managed_move(bd->internal_ecore_evas, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t); - ecore_x_icccm_move_resize_send(bd->client.win, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t, - bd->client.w, - bd->client.h); + + _e_border_client_move_resize_send(bd); + bd->changes.pos = 0; rem_change = 1; } @@ -6809,15 +6765,9 @@ evas_object_resize(bd->bg_object, bd->w, bd->h); e_container_shape_resize(bd->shape, bd->w, bd->h); } - if (bd->internal_ecore_evas) - ecore_evas_managed_move(bd->internal_ecore_evas, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t); - ecore_x_icccm_move_resize_send(bd->client.win, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t, - bd->client.w, - bd->client.h); + + _e_border_client_move_resize_send(bd); + bd->changes.size = 0; rem_change = 1; } @@ -6984,14 +6934,8 @@ bd->y = y - (bd->client_inset.t >> 1); bd->changed = 1; bd->changes.pos = 1; - if (bd->internal_ecore_evas) - ecore_evas_managed_move(bd->internal_ecore_evas, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t); - ecore_x_icccm_move_resize_send(bd->client.win, - bd->x + bd->fx.x + bd->client_inset.l, - bd->y + bd->fx.y + bd->client_inset.t, - bd->client.w, bd->client.h); + + _e_border_client_move_resize_send(bd); } } } |
From: Enlightenment S. <no-...@en...> - 2009-09-12 15:24:39
|
Log: refactor bd->changes.size evaluation Author: jeffdameth Date: 2009-09-12 08:24:28 -0700 (Sat, 12 Sep 2009) New Revision: 42442 Modified: trunk/e/src/bin/e_border.c Modified: trunk/e/src/bin/e_border.c =================================================================== --- trunk/e/src/bin/e_border.c 2009-09-12 13:53:43 UTC (rev 42441) +++ trunk/e/src/bin/e_border.c 2009-09-12 15:24:28 UTC (rev 42442) @@ -6588,89 +6588,67 @@ rem_change = 1; } - if ((bd->changes.pos) && (bd->changes.size)) + if (bd->changes.size) { + int x = 0, y = 0, xx = 0, yy = 0; + if ((bd->shaded) && (!bd->shading)) { evas_obscured_clear(bd->bg_evas); -// if (0) -// { -// if (bd->post_job) ecore_idle_enterer_del(bd->post_job); -// bd->post_job = ecore_idle_enterer_add(_e_border_post_move_resize_job, -// bd); -// bd->post_move = 1; -// bd->post_resize = 1; -// } -// else - { - ecore_x_window_move_resize(bd->win, - bd->x + bd->fx.x, - bd->y + bd->fx.y, - bd->w, bd->h); - } - ecore_x_window_move_resize(bd->event_win, 0, 0, bd->w, bd->h); - if (bd->internal_ecore_evas) - ecore_evas_move_resize(bd->internal_ecore_evas, 0, 0, bd->client.w, bd->client.h); - else - ecore_x_window_move_resize(bd->client.win, 0, 0, bd->client.w, bd->client.h); - ecore_evas_move_resize(bd->bg_ecore_evas, 0, 0, bd->w, bd->h); - evas_object_resize(bd->bg_object, bd->w, bd->h); - e_container_shape_resize(bd->shape, bd->w, bd->h); - e_container_shape_move(bd->shape, - bd->x + bd->fx.x, - bd->y + bd->fx.y); } else { - int x = 0, y = 0; + xx = bd->w - (bd->client_inset.l + bd->client_inset.r); + yy = bd->h - (bd->client_inset.t + bd->client_inset.b); evas_obscured_clear(bd->bg_evas); evas_obscured_rectangle_add(bd->bg_evas, - bd->client_inset.l, bd->client_inset.t, - bd->w - (bd->client_inset.l + bd->client_inset.r), - bd->h - (bd->client_inset.t + bd->client_inset.b)); -// if (0) -// { -// if (bd->post_job) ecore_idle_enterer_del(bd->post_job); -// bd->post_job = ecore_idle_enterer_add(_e_border_post_move_resize_job, -// bd); -// bd->post_move = 1; -// bd->post_resize = 1; -// } -// else - { - ecore_x_window_move_resize(bd->win, - bd->x + bd->fx.x, - bd->y + bd->fx.y, - bd->w, bd->h); - } - ecore_x_window_move_resize(bd->event_win, 0, 0, bd->w, bd->h); - ecore_x_window_move_resize(bd->client.shell_win, - bd->client_inset.l, bd->client_inset.t, - bd->w - (bd->client_inset.l + bd->client_inset.r), - bd->h - (bd->client_inset.t + bd->client_inset.b)); + bd->client_inset.l, bd->client_inset.t, xx, yy); + if (bd->shading) { if (bd->shade.dir == E_DIRECTION_UP) - y = bd->h - (bd->client_inset.t + bd->client_inset.b) - bd->client.h; + { + y = yy - bd->client.h; + } else if (bd->shade.dir == E_DIRECTION_LEFT) - x = bd->w - (bd->client_inset.l + bd->client_inset.r) - bd->client.h; + { + x = xx - bd->client.w; + } } - if (bd->internal_ecore_evas) - ecore_evas_move_resize(bd->internal_ecore_evas, - x, y, bd->client.w, bd->client.h); - else - ecore_x_window_move_resize(bd->client.win, - x, y, bd->client.w, bd->client.h); + } - ecore_evas_move_resize(bd->bg_ecore_evas, 0, 0, bd->w, bd->h); - evas_object_resize(bd->bg_object, bd->w, bd->h); - e_container_shape_resize(bd->shape, bd->w, bd->h); - e_container_shape_move(bd->shape, - bd->x + bd->fx.x, - bd->y + bd->fx.y); + if (!bd->changes.pos) + { + if (bd->post_job) ecore_idle_enterer_del(bd->post_job); + bd->post_job = ecore_idle_enterer_add(_e_border_post_move_resize_job, bd); + bd->post_resize = 1; } + else + { + ecore_x_window_move_resize(bd->win, + bd->x + bd->fx.x, + bd->y + bd->fx.y, + bd->w, bd->h); + } + ecore_x_window_move_resize(bd->event_win, 0, 0, bd->w, bd->h); + + if ((!bd->shaded) || (bd->shading)) + ecore_x_window_move_resize(bd->client.shell_win, + bd->client_inset.l, bd->client_inset.t, xx, yy); + + if (bd->internal_ecore_evas) + ecore_evas_move_resize(bd->internal_ecore_evas, x, y, bd->client.w, bd->client.h); + else + ecore_x_window_move_resize(bd->client.win, x, y, bd->client.w, bd->client.h); + + ecore_evas_move_resize(bd->bg_ecore_evas, 0, 0, bd->w, bd->h); + evas_object_resize(bd->bg_object, bd->w, bd->h); + e_container_shape_resize(bd->shape, bd->w, bd->h); + if (bd->changes.pos) + e_container_shape_move(bd->shape, bd->x + bd->fx.x, bd->y + bd->fx.y); + _e_border_client_move_resize_send(bd); bd->changes.pos = 0; @@ -6697,81 +6675,7 @@ bd->changes.pos = 0; rem_change = 1; } - else if (bd->changes.size) - { - if (bd->shaded && !bd->shading) - { - evas_obscured_clear(bd->bg_evas); - ecore_x_window_move_resize(bd->event_win, 0, 0, bd->w, bd->h); - if (1) - { - if (bd->post_job) ecore_idle_enterer_del(bd->post_job); - bd->post_job = ecore_idle_enterer_add(_e_border_post_move_resize_job, - bd); - bd->post_resize = 1; - } - else - { - ecore_x_window_resize(bd->win, bd->w, bd->h); - } - if (bd->internal_ecore_evas) - ecore_evas_move_resize(bd->internal_ecore_evas, 0, 0, bd->client.w, bd->client.h); - else - ecore_x_window_move_resize(bd->client.win, 0, 0, bd->client.w, bd->client.h); - ecore_evas_move_resize(bd->bg_ecore_evas, 0, 0, bd->w, bd->h); - evas_object_resize(bd->bg_object, bd->w, bd->h); - e_container_shape_resize(bd->shape, bd->w, bd->h); - } - else - { - int x = 0, y = 0; - - evas_obscured_clear(bd->bg_evas); - evas_obscured_rectangle_add(bd->bg_evas, - bd->client_inset.l, bd->client_inset.t, - bd->w - (bd->client_inset.l + bd->client_inset.r), - bd->h - (bd->client_inset.t + bd->client_inset.b)); - ecore_x_window_move_resize(bd->event_win, 0, 0, bd->w, bd->h); - if (1) - { - if (bd->post_job) ecore_idle_enterer_del(bd->post_job); - bd->post_job = ecore_idle_enterer_add(_e_border_post_move_resize_job, - bd); - bd->post_resize = 1; - } - else - { - ecore_x_window_resize(bd->win, bd->w, bd->h); - } - ecore_x_window_move_resize(bd->client.shell_win, - bd->client_inset.l, bd->client_inset.t, - bd->w - (bd->client_inset.l + bd->client_inset.r), - bd->h - (bd->client_inset.t + bd->client_inset.b)); - if (bd->shading) - { - if (bd->shade.dir == E_DIRECTION_UP) - y = bd->h - (bd->client_inset.t + bd->client_inset.b) - bd->client.h; - else if (bd->shade.dir == E_DIRECTION_LEFT) - x = bd->w - (bd->client_inset.l + bd->client_inset.r) - bd->client.h; - } - if (bd->internal_ecore_evas) - ecore_evas_move_resize(bd->internal_ecore_evas, - x, y, bd->client.w, bd->client.h); - else - ecore_x_window_move_resize(bd->client.win, - x, y, bd->client.w, bd->client.h); - ecore_evas_move_resize(bd->bg_ecore_evas, 0, 0, bd->w, bd->h); - evas_object_resize(bd->bg_object, bd->w, bd->h); - e_container_shape_resize(bd->shape, bd->w, bd->h); - } - - _e_border_client_move_resize_send(bd); - - bd->changes.size = 0; - rem_change = 1; - } - if (bd->changes.reset_gravity) { GRAV_SET(bd, ECORE_X_GRAVITY_NW); |
From: Enlightenment S. <no-...@en...> - 2009-09-12 15:51:58
|
Log: refactor _e_border_cb_window_move_resize_reques. this screamed for a switch. Author: jeffdameth Date: 2009-09-12 08:51:44 -0700 (Sat, 12 Sep 2009) New Revision: 42443 Modified: trunk/e/src/bin/e_border.c Modified: trunk/e/src/bin/e_border.c =================================================================== --- trunk/e/src/bin/e_border.c 2009-09-12 15:24:28 UTC (rev 42442) +++ trunk/e/src/bin/e_border.c 2009-09-12 15:51:44 UTC (rev 42443) @@ -4757,157 +4757,74 @@ if (!bd->lock_user_stacking) e_border_raise(bd); - if (e->direction == RESIZE_TL) - { - if (!_e_border_resize_begin(bd)) - return 1; - bd->resize_mode = RESIZE_TL; - bd->cur_mouse_action = e_action_find("window_resize"); - if (bd->cur_mouse_action) - { - if ((!bd->cur_mouse_action->func.end_mouse) && - (!bd->cur_mouse_action->func.end)) - bd->cur_mouse_action = NULL; - if (bd->cur_mouse_action) - e_object_ref(E_OBJECT(bd->cur_mouse_action)); - } - GRAV_SET(bd, ECORE_X_GRAVITY_SE); - } - else if (e->direction == RESIZE_T) + if (e->direction == MOVE) { - if (!_e_border_resize_begin(bd)) - return 1; - bd->resize_mode = RESIZE_T; - - bd->cur_mouse_action = e_action_find("window_resize"); + bd->cur_mouse_action = e_action_find("window_move"); if (bd->cur_mouse_action) { if ((!bd->cur_mouse_action->func.end_mouse) && (!bd->cur_mouse_action->func.end)) bd->cur_mouse_action = NULL; if (bd->cur_mouse_action) - e_object_ref(E_OBJECT(bd->cur_mouse_action)); + { + e_object_ref(E_OBJECT(bd->cur_mouse_action)); + bd->cur_mouse_action->func.go(E_OBJECT(bd), NULL); + } } - GRAV_SET(bd, ECORE_X_GRAVITY_S); + return 1; } - else if (e->direction == RESIZE_TR) - { - if (!_e_border_resize_begin(bd)) - return 1; - bd->resize_mode = RESIZE_TR; - bd->cur_mouse_action = e_action_find("window_resize"); - if (bd->cur_mouse_action) - { - if ((!bd->cur_mouse_action->func.end_mouse) && - (!bd->cur_mouse_action->func.end)) - bd->cur_mouse_action = NULL; - if (bd->cur_mouse_action) - e_object_ref(E_OBJECT(bd->cur_mouse_action)); - } - GRAV_SET(bd, ECORE_X_GRAVITY_SW); - } - else if (e->direction == RESIZE_R) - { - if (!_e_border_resize_begin(bd)) - return 1; - bd->resize_mode = RESIZE_R; + if (!_e_border_resize_begin(bd)) + return 1; - bd->cur_mouse_action = e_action_find("window_resize"); - if (bd->cur_mouse_action) - { - if ((!bd->cur_mouse_action->func.end_mouse) && - (!bd->cur_mouse_action->func.end)) - bd->cur_mouse_action = NULL; - if (bd->cur_mouse_action) - e_object_ref(E_OBJECT(bd->cur_mouse_action)); - } - GRAV_SET(bd, ECORE_X_GRAVITY_W); - } - else if (e->direction == RESIZE_BR) + switch(e->direction) { - if (!_e_border_resize_begin(bd)) - return 1; - bd->resize_mode = RESIZE_BR; - - bd->cur_mouse_action = e_action_find("window_resize"); - if (bd->cur_mouse_action) - { - if ((!bd->cur_mouse_action->func.end_mouse) && - (!bd->cur_mouse_action->func.end)) - bd->cur_mouse_action = NULL; - if (bd->cur_mouse_action) - e_object_ref(E_OBJECT(bd->cur_mouse_action)); - } - GRAV_SET(bd, ECORE_X_GRAVITY_NW); + case RESIZE_TL: + bd->resize_mode = RESIZE_TL; + GRAV_SET(bd, ECORE_X_GRAVITY_SE); + break; + case RESIZE_T: + bd->resize_mode = RESIZE_T; + GRAV_SET(bd, ECORE_X_GRAVITY_S); + break; + case RESIZE_TR: + bd->resize_mode = RESIZE_TR; + GRAV_SET(bd, ECORE_X_GRAVITY_SW); + break; + case RESIZE_R: + bd->resize_mode = RESIZE_R; + GRAV_SET(bd, ECORE_X_GRAVITY_W); + break; + case RESIZE_BR: + bd->resize_mode = RESIZE_BR; + GRAV_SET(bd, ECORE_X_GRAVITY_NW); + case RESIZE_B: + bd->resize_mode = RESIZE_B; + GRAV_SET(bd, ECORE_X_GRAVITY_N); + break; + case RESIZE_BL: + bd->resize_mode = RESIZE_BL; + GRAV_SET(bd, ECORE_X_GRAVITY_NE); + break; + case RESIZE_L: + bd->resize_mode = RESIZE_L; + GRAV_SET(bd, ECORE_X_GRAVITY_E); + break; + default: + return 1; } - else if (e->direction == RESIZE_B) + + bd->cur_mouse_action = e_action_find("window_resize"); + if (bd->cur_mouse_action) { - if (!_e_border_resize_begin(bd)) - return 1; - bd->resize_mode = RESIZE_B; - - bd->cur_mouse_action = e_action_find("window_resize"); + if ((!bd->cur_mouse_action->func.end_mouse) && + (!bd->cur_mouse_action->func.end)) + bd->cur_mouse_action = NULL; if (bd->cur_mouse_action) - { - if ((!bd->cur_mouse_action->func.end_mouse) && - (!bd->cur_mouse_action->func.end)) - bd->cur_mouse_action = NULL; - if (bd->cur_mouse_action) - e_object_ref(E_OBJECT(bd->cur_mouse_action)); - } - GRAV_SET(bd, ECORE_X_GRAVITY_N); + e_object_ref(E_OBJECT(bd->cur_mouse_action)); } - else if (e->direction == RESIZE_BL) - { - if (!_e_border_resize_begin(bd)) - return 1; - bd->resize_mode = RESIZE_BL; - bd->cur_mouse_action = e_action_find("window_resize"); - if (bd->cur_mouse_action) - { - if ((!bd->cur_mouse_action->func.end_mouse) && - (!bd->cur_mouse_action->func.end)) - bd->cur_mouse_action = NULL; - if (bd->cur_mouse_action) - e_object_ref(E_OBJECT(bd->cur_mouse_action)); - } - GRAV_SET(bd, ECORE_X_GRAVITY_NE); - } - else if (e->direction == RESIZE_L) - { - if (!_e_border_resize_begin(bd)) - return 1; - bd->resize_mode = RESIZE_L; - - bd->cur_mouse_action = e_action_find("window_resize"); - if (bd->cur_mouse_action) - { - if ((!bd->cur_mouse_action->func.end_mouse) && - (!bd->cur_mouse_action->func.end)) - bd->cur_mouse_action = NULL; - if (bd->cur_mouse_action) - e_object_ref(E_OBJECT(bd->cur_mouse_action)); - } - GRAV_SET(bd, ECORE_X_GRAVITY_E); - } - else if (e->direction == MOVE) - { - bd->cur_mouse_action = e_action_find("window_move"); - if (bd->cur_mouse_action) - { - if ((!bd->cur_mouse_action->func.end_mouse) && - (!bd->cur_mouse_action->func.end)) - bd->cur_mouse_action = NULL; - if (bd->cur_mouse_action) - { - e_object_ref(E_OBJECT(bd->cur_mouse_action)); - bd->cur_mouse_action->func.go(E_OBJECT(bd), NULL); - } - } - } return 1; } |
From: Enlightenment S. <no-...@en...> - 2009-09-12 17:26:31
|
Log: delete border remembers.. finally Author: jeffdameth Date: 2009-09-12 10:26:16 -0700 (Sat, 12 Sep 2009) New Revision: 42444 Modified: trunk/e/src/bin/e_remember.c Modified: trunk/e/src/bin/e_remember.c =================================================================== --- trunk/e/src/bin/e_remember.c 2009-09-12 15:51:44 UTC (rev 42443) +++ trunk/e/src/bin/e_remember.c 2009-09-12 17:26:16 UTC (rev 42444) @@ -10,8 +10,8 @@ static void _e_remember_free(E_Remember *rem); static int _e_remember_sort_list(const void * d1, const void * d2); static E_Remember *_e_remember_find(E_Border *bd, int check_usable); -static void _e_remember_cb_hook_pre_post_fetch(void *data, E_Border *bd); -static void _e_remember_cb_hook_eval_post_new_border(void *data, E_Border *bd); +static void _e_remember_cb_hook_pre_post_fetch(void *data, void *bd); +static void _e_remember_cb_hook_eval_post_new_border(void *data, void *bd); static Eina_List *hooks = NULL; /* FIXME: match netwm window type */ @@ -109,22 +109,17 @@ EAPI void e_remember_unuse(E_Remember *rem) { - if (rem->used_count > 0) - rem->used_count--; - if ((rem->used_count == 0) && (rem->delete_me)) - _e_remember_free(rem); + rem->used_count--; } EAPI void e_remember_del(E_Remember *rem) { - if (rem->delete_me) return; if (rem->used_count != 0) { Eina_List *l = NULL; E_Border *bd; - rem->delete_me = 1; EINA_LIST_FOREACH(e_border_client_list(), l, bd) { if (bd->remember == rem) @@ -133,10 +128,8 @@ e_remember_unuse(rem); } } - return; } - else - _e_remember_free(rem); + _e_remember_free(rem); } EAPI E_Remember * @@ -380,7 +373,7 @@ (((rem->transient) && (bd->client.icccm.transient_for != 0)) || ((!rem->transient) && (bd->client.icccm.transient_for == 0)))) matches++; - if ((matches >= required_matches) && (!rem->delete_me)) + if (matches >= required_matches) return rem; } return NULL; @@ -459,8 +452,9 @@ } static void -_e_remember_cb_hook_pre_post_fetch(void *data, E_Border *bd) +_e_remember_cb_hook_pre_post_fetch(void *data, void *border) { + E_Border *bd = border; E_Remember *rem = NULL; if (!bd->new_client) return; @@ -704,8 +698,10 @@ static void -_e_remember_cb_hook_eval_post_new_border(void *data, E_Border *bd) +_e_remember_cb_hook_eval_post_new_border(void *data, void *border) { + E_Border *bd = border; + if (!bd->new_client) return; if ((bd->internal) && (!bd->remember) && |
From: Enlightenment S. <no-...@en...> - 2009-09-14 00:58:23
|
Log: fix warnings Author: jeffdameth Date: 2009-09-13 17:31:07 -0700 (Sun, 13 Sep 2009) New Revision: 42475 Modified: trunk/e/src/bin/e_moveresize.c Modified: trunk/e/src/bin/e_moveresize.c =================================================================== --- trunk/e/src/bin/e_moveresize.c 2009-09-14 00:28:51 UTC (rev 42474) +++ trunk/e/src/bin/e_moveresize.c 2009-09-14 00:31:07 UTC (rev 42475) @@ -3,13 +3,13 @@ */ #include "e.h" -static void _e_resize_begin(void *data, E_Border *bd); -static void _e_resize_update(void *data, E_Border *bd); -static void _e_resize_end(void *data, E_Border *bd); +static void _e_resize_begin(void *data, void *bd); +static void _e_resize_update(void *data, void *bd); +static void _e_resize_end(void *data, void *bd); static void _e_resize_border_extents(E_Border *bd, int *w, int *h); -static void _e_move_begin(void *data, E_Border *bd); -static void _e_move_update(void *data, E_Border *bd); -static void _e_move_end(void *data, E_Border *bd); +static void _e_move_begin(void *data, void *bd); +static void _e_move_update(void *data, void *bd); +static void _e_move_end(void *data, void *bd); static void _e_move_resize_object_coords_set(int x, int y, int w, int h); static E_Popup *_disp_pop = NULL; @@ -49,11 +49,14 @@ EINA_LIST_FREE(hooks, h) e_border_hook_del(h); + + return 1; } static void -_e_resize_begin(void *data, E_Border *bd) +_e_resize_begin(void *data, void *border) { + E_Border *bd = border; Evas_Coord ew, eh; char buf[40]; int w, h; @@ -109,7 +112,7 @@ } static void -_e_resize_end(void *data, E_Border *bd) +_e_resize_end(void *data, void *border) { if (e_config->resize_info_visible) { @@ -129,8 +132,9 @@ } static void -_e_resize_update(void *data, E_Border *bd) +_e_resize_update(void *data, void *border) { + E_Border *bd = border; char buf[40]; int w, h; @@ -182,8 +186,9 @@ } static void -_e_move_begin(void *data, E_Border *bd) +_e_move_begin(void *data, void *border) { + E_Border *bd = border; Evas_Coord ew, eh; char buf[40]; @@ -221,7 +226,7 @@ } static void -_e_move_end(void *data, E_Border *bd) +_e_move_end(void *data, void *border) { if (e_config->move_info_visible) { @@ -241,8 +246,10 @@ } static void -_e_move_update(void *data, E_Border *bd) +_e_move_update(void *data, void *border) { + E_Border *bd = border; + char buf[40]; if (!_disp_pop) return; |
From: Enlightenment S. <no-...@en...> - 2009-09-14 00:58:25
|
Log: fix warnings Author: jeffdameth Date: 2009-09-13 17:32:44 -0700 (Sun, 13 Sep 2009) New Revision: 42476 Modified: trunk/e/src/bin/e_actions.c trunk/e/src/bin/e_entry.c trunk/e/src/bin/e_popup.c Modified: trunk/e/src/bin/e_actions.c =================================================================== --- trunk/e/src/bin/e_actions.c 2009-09-14 00:31:07 UTC (rev 42475) +++ trunk/e/src/bin/e_actions.c 2009-09-14 00:32:44 UTC (rev 42476) @@ -1233,6 +1233,8 @@ wev->curr.x = offset; } break; + default: + break; } current = e_desk_current_get(zone); Modified: trunk/e/src/bin/e_entry.c =================================================================== --- trunk/e/src/bin/e_entry.c 2009-09-14 00:31:07 UTC (rev 42475) +++ trunk/e/src/bin/e_entry.c 2009-09-14 00:32:44 UTC (rev 42476) @@ -1061,7 +1061,7 @@ if (sd->imf_context) { ecore_imf_context_client_window_set(sd->imf_context, - ecore_evas_window_get(ecore_evas_ecore_evas_get(evas))); + (long *)ecore_evas_window_get(ecore_evas_ecore_evas_get(evas))); ecore_imf_context_client_canvas_set(sd->imf_context, evas); ecore_imf_context_retrieve_surrounding_callback_set(sd->imf_context, _e_entry_cb_imf_retrieve_surrounding, Modified: trunk/e/src/bin/e_popup.c =================================================================== --- trunk/e/src/bin/e_popup.c 2009-09-14 00:31:07 UTC (rev 42475) +++ trunk/e/src/bin/e_popup.c 2009-09-14 00:32:44 UTC (rev 42476) @@ -7,8 +7,7 @@ static void _e_popup_free(E_Popup *pop); static int _e_popup_idle_enterer(void *data); static int _e_popup_cb_window_shape(void *data, int ev_type, void *ev); -static E_Popup *_e_popup_find_by_window(Ecore_X_Window win); -/* +/*static E_Popup *_e_popup_find_by_window(Ecore_X_Window win); static int _e_popup_cb_mouse_down(void *data, int type, void *event); static int _e_popup_cb_mouse_up(void *data, int type, void *event); static int _e_popup_cb_mouse_wheel(void *data, int type, void *event); @@ -341,7 +340,7 @@ return 1; } -static E_Popup * +/*static E_Popup * _e_popup_find_by_window(Ecore_X_Window win) { E_Popup *pop; @@ -353,6 +352,7 @@ } return NULL; } +*/ /* static int _e_popup_cb_mouse_down(void *data, int type, void *event) |
From: Enlightenment S. <no-...@en...> - 2009-09-17 05:18:40
|
Log: gadcon: - fix dnd of gadcon clients between gadcons - apply fix from victor for gadcon client movements - make layout algorithm orientation agnostic Author: jeffdameth Date: 2009-09-16 22:18:28 -0700 (Wed, 16 Sep 2009) New Revision: 42539 Modified: trunk/e/src/bin/e_gadcon.c Modified: trunk/e/src/bin/e_gadcon.c =================================================================== --- trunk/e/src/bin/e_gadcon.c 2009-09-17 05:17:12 UTC (rev 42538) +++ trunk/e/src/bin/e_gadcon.c 2009-09-17 05:18:28 UTC (rev 42539) @@ -16,7 +16,7 @@ static void _e_gadcon_cb_client_frame_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_gadcon_cb_client_frame_moveresize(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_gadcon_client_save(E_Gadcon_Client *gcc); -//static void _e_gadcon_client_drag_begin(E_Gadcon_Client *gcc, int x, int y); +static void _e_gadcon_client_drag_begin(E_Gadcon_Client *gcc, int x, int y); static void _e_gadcon_client_inject(E_Gadcon *gc, E_Gadcon_Client *gcc, int x, int y); static void _e_gadcon_cb_min_size_request(void *data, Evas_Object *obj, void *event_info); @@ -42,7 +42,7 @@ static void _e_gadcon_cb_signal_resize_right_start(void *data, Evas_Object *obj, const char *emission, const char *source); static void _e_gadcon_cb_signal_resize_right_stop(void *data, Evas_Object *obj, const char *emission, const char *source); static void _e_gadcon_cb_signal_resize_right_go(void *data, Evas_Object *obj, const char *emission, const char *source); -//static void _e_gadcon_cb_drag_finished(E_Drag *drag, int dropped); +static void _e_gadcon_cb_drag_finished(E_Drag *drag, int dropped); static void _e_gadcon_cb_dnd_enter(void *data, const char *type, void *event); static void _e_gadcon_cb_dnd_move(void *data, const char *type, void *event); static void _e_gadcon_cb_dnd_leave(void *data, const char *type, void *event); @@ -172,20 +172,13 @@ (((__lc)->pos >= (__lc2)->pos) && ((__lc)->pos < ((__lc2)->pos + (__lc2)->size)))) #define E_LAYOUT_ITEM_CONTAINER_SIZE_CHANGE_BY(__lc, __bi, __increase) \ - if (__lc->sd->horizontal) \ { \ if (__increase) \ __lc->size += __bi->w; \ else \ __lc->size -= __bi->w; \ - } \ - else \ - { \ - if (__increase) \ - __lc->size += __bi->h; \ - else \ - __lc->size -= __bi->h; \ } + /********************/ static Eina_Hash *providers = NULL; @@ -1717,15 +1710,16 @@ e_config_save_queue(); } -#if 0 -/* FIXME unused */ static void _e_gadcon_client_drag_begin(E_Gadcon_Client *gcc, int x, int y) { E_Drag *drag; Evas_Object *o = NULL; - Evas_Coord w, h; + Evas_Coord w = 0, h = 0; const char *drag_types[] = { "enlightenment/gadcon_client" }; + + if (drag_gcc || !gcc->gadcon->zone || !gcc->gadcon->zone->container) + return; drag_gcc = gcc; @@ -1739,29 +1733,28 @@ if (!e_drop_inside(gcc->gadcon->drop_handler, x, y)) e_gadcon_client_hide(gcc); - if ((gcc->gadcon->zone) && (gcc->gadcon->zone->container)) + ecore_x_pointer_xy_get(gcc->gadcon->zone->container->win, &x, &y); + + drag = e_drag_new(gcc->gadcon->zone->container, x, y, + drag_types, 1, gcc, -1, NULL, + _e_gadcon_cb_drag_finished); + if (drag) { - drag = e_drag_new(gcc->gadcon->zone->container, gcc->drag.x, gcc->drag.y, - drag_types, 1, gcc, -1, NULL, - _e_gadcon_cb_drag_finished); - if (drag) + o = gcc->client_class->func.icon(gcc->client_class, e_drag_evas_get(drag)); + evas_object_geometry_get(o, NULL, NULL, &w, &h); + if (!o) { - o = gcc->client_class->func.icon(gcc->client_class, drag->evas); - evas_object_geometry_get(o, NULL, NULL, &w, &h); - if (!o) - { - /* FIXME: fallback icon for drag */ - o = evas_object_rectangle_add(drag->evas); - evas_object_color_set(o, 255, 255, 255, 255); - } - e_drag_object_set(drag, o); - e_drag_move(drag, gcc->drag.x - w/2, gcc->drag.y - h/2); - e_drag_resize(drag, w, h); - e_drag_start(drag, gcc->drag.x, gcc->drag.y); + /* FIXME: fallback icon for drag */ + o = evas_object_rectangle_add(e_drag_evas_get(drag)); + evas_object_color_set(o, 255, 255, 255, 100); } + if (w < 10) + w = h = 50; + e_drag_object_set(drag, o); + e_drag_resize(drag, w, h); + e_drag_start(drag, x + w/2, y + h/2); } } -#endif static void _e_gadcon_client_inject(E_Gadcon *gc, E_Gadcon_Client *gcc, int x, int y) @@ -1970,12 +1963,26 @@ static void _e_gadcon_client_move_start(E_Gadcon_Client *gcc) { + int x, y, gcx, gcy, gy ,gx; + evas_object_raise(gcc->o_event); evas_object_stack_below(gcc->o_control, gcc->o_event); gcc->moving = 1; - evas_pointer_canvas_xy_get(gcc->gadcon->evas, &gcc->dx, &gcc->dy); - gcc->drag.x = gcc->dx; - gcc->drag.y = gcc->dy; + ecore_x_pointer_xy_get(gcc->gadcon->zone->container->win, &gcc->dx, &gcc->dy); + e_gadcon_canvas_zone_geometry_get(gcc->gadcon, &gcx, &gcy, NULL, NULL); + evas_object_geometry_get(gcc->gadcon->o_container, &gx, &gy, NULL, NULL); + gcc->dx -= (gcx + gx); + gcc->dy -= (gcy + gy); + + if (gcc->o_frame) + evas_object_geometry_get(gcc->o_frame, &x, &y, NULL, NULL); + else if (gcc->o_base) + evas_object_geometry_get(gcc->o_base, &x, &y, NULL, NULL); + + /* using drag pos to calc offset between pointer and gcc pos */ + gcc->drag.x = (x - gcc->dx); + gcc->drag.y = (y - gcc->dy); + gcc->state_info.resist = 0; } @@ -1993,22 +2000,37 @@ { Evas_Coord x, y, w, h; int cx, cy; + int gx, gy, gw, gh; + int gcx = 0, gcy = 0, gcw, gch; + + if (!gcc->moving) return; - evas_pointer_canvas_xy_get(gcc->gadcon->evas, &cx, &cy); + /* we need to get output not canvas because things like systray + can reparent another window so we get no position here */ + /* maybe we should better grab mouse while move resize is active...*/ + //evas_pointer_canvas_xy_get(gcc->gadcon->evas, &cx, &cy); + ecore_x_pointer_xy_get(gcc->gadcon->zone->container->win, &cx, &cy); + e_gadcon_canvas_zone_geometry_get(gcc->gadcon, &gcx, &gcy, &gcw, &gch); + evas_object_geometry_get(gcc->gadcon->o_container, &gx, &gy, &gw, &gh); + + cx -= (gx + gcx); + cy -= (gy + gcy); + x = cx - gcc->dx; y = cy - gcc->dy; - + gcc->state_info.flags = E_GADCON_LAYOUT_ITEM_LOCK_POSITION | E_GADCON_LAYOUT_ITEM_LOCK_ABSOLUTE; _e_gadcon_client_current_position_sync(gcc); if (e_gadcon_layout_orientation_get(gcc->gadcon->o_container)) - { -/* if (abs(cy - gcc->drag.y) > e_config->drag_resist) + { + if (cy + e_config->drag_resist < 0 || cy - e_config->drag_resist > gh) { _e_gadcon_client_drag_begin(gcc, cx, cy); return; } - else*/ if (x > 0) + + if (x > 0) { if (gcc->state_info.state != E_LAYOUT_ITEM_STATE_POS_INC) gcc->state_info.resist = 0; @@ -2023,12 +2045,13 @@ } else { -/* if (abs(cx - gcc->drag.x) > e_config->drag_resist) + if (cx + e_config->drag_resist < 0 || cx - e_config->drag_resist > gw) { _e_gadcon_client_drag_begin(gcc, cx, cy); return; } - else*/ if (y > 0) + + if (y > 0) { if (gcc->state_info.state != E_LAYOUT_ITEM_STATE_POS_INC) gcc->state_info.resist = 0; @@ -2047,13 +2070,13 @@ else if (gcc->o_base) evas_object_geometry_get(gcc->o_base, NULL, NULL, &w, &h); else return; /* make clang happy */ - + if (e_gadcon_layout_orientation_get(gcc->gadcon->o_container)) { if (gcc->o_frame) - e_gadcon_layout_pack_request_set(gcc->o_frame, gcc->config.pos + x, w); + e_gadcon_layout_pack_request_set(gcc->o_frame, cx + gcc->drag.x, w); else if (gcc->o_base) - e_gadcon_layout_pack_request_set(gcc->o_base, gcc->config.pos + x, w); + e_gadcon_layout_pack_request_set(gcc->o_base, cx + gcc->drag.x, w); gcc->config.size = w; evas_object_geometry_get(gcc->gadcon->o_container, NULL, NULL, &w, &h); @@ -2062,14 +2085,15 @@ else { if (gcc->o_frame) - e_gadcon_layout_pack_request_set(gcc->o_frame, gcc->config.pos + y, h); + e_gadcon_layout_pack_request_set(gcc->o_frame, cy + gcc->drag.y, h); else if (gcc->o_base) - e_gadcon_layout_pack_request_set(gcc->o_base, gcc->config.pos + y, h); + e_gadcon_layout_pack_request_set(gcc->o_base, cy + gcc->drag.y, h); gcc->config.size = h; evas_object_geometry_get(gcc->gadcon->o_container, NULL, NULL, &w, &h); gcc->config.res = h; } + gcc->dx += x; gcc->dy += y; } @@ -2254,8 +2278,6 @@ gcc->dy += y; } -#if 0 -/* FIXME unused */ static void _e_gadcon_cb_drag_finished(E_Drag *drag, int dropped) { @@ -2279,7 +2301,6 @@ new_gcc = NULL; drag_gcc = NULL; } -#endif static void _e_gadcon_cb_dnd_enter(void *data, const char *type, void *event) @@ -2728,7 +2749,7 @@ /* externally accessible functions */ static Evas_Object * e_gadcon_layout_add(Evas *evas) -{ +{ _e_gadcon_layout_smart_init(); return evas_object_smart_add(evas, _e_smart); } @@ -2793,9 +2814,17 @@ if (!obj) return; sd = evas_object_smart_data_get(obj); if (!sd) return; - if (w) *w = sd->minw; - if (h) *h = sd->minh; - + if (sd->horizontal) + { + if (w) *w = sd->minw; + if (h) *h = sd->minh; + } + else + { + if (w) *w = sd->minh; + if (h) *h = sd->minw; + } + /* EINA_LIST_FOREACH(sd->items, l, obj) { @@ -2875,18 +2904,18 @@ * _e_gadcon_layout_smart_gadcons_asked_position_set(E_Smart_Data *sd) */ E_Gadcon_Layout_Item *bi; - int xx; + int pos; if (!obj) return; bi = evas_object_data_get(obj, "e_gadcon_layout_data"); if (!bi) return; - xx = bi->ask.pos + (bi->ask.size / 2); - if (xx < (bi->ask.res / 3)) + pos = bi->ask.pos + (bi->ask.size / 2); + if (pos < (bi->ask.res / 3)) { /* hooked to start */ bi->ask.size = size; } - else if (xx > ((2 * bi->ask.res) / 3)) + else if (pos > ((2 * bi->ask.res) / 3)) { /* hooked to end */ bi->ask.pos = (bi->ask.pos + bi->ask.size) - size; @@ -2911,7 +2940,7 @@ } else { - if (xx < (bi->ask.res / 2)) + if (pos < (bi->ask.res / 2)) { bi->ask.pos = (bi->ask.pos + bi->ask.size) - size; bi->ask.size = size; @@ -2933,10 +2962,8 @@ if (!obj) return; bi = evas_object_data_get(obj, "e_gadcon_layout_data"); if (!bi) return; - if (bi->sd->horizontal) - bi->ask.res = bi->sd->w; - else - bi->ask.res = bi->sd->h; + + bi->ask.res = bi->sd->w; if (pos < 0) pos = 0; if ((bi->ask.res - pos) < size) pos = bi->ask.res - size; bi->ask.size = size; @@ -2993,8 +3020,17 @@ if (!obj) return; bi = evas_object_data_get(obj, "e_gadcon_layout_data"); if (!bi) return; - bi->min.w = w; - bi->min.h = h; + if (bi->sd->horizontal) + { + bi->min.w = w; + bi->min.h = h; + } + else + { + bi->min.w = h; + bi->min.h = w; + } + _e_gadcon_layout_smart_reconfigure(bi->sd); } @@ -3006,8 +3042,17 @@ if (!obj) return; bi = evas_object_data_get(obj, "e_gadcon_layout_data"); if (!bi) return; - bi->aspect.w = w; - bi->aspect.h = h; + if (bi->sd->horizontal) + { + bi->aspect.w = w; + bi->aspect.h = h; + } + else + { + bi->aspect.w = h; + bi->aspect.h = w; + } + _e_gadcon_layout_smart_reconfigure(bi->sd); } @@ -3019,8 +3064,16 @@ if (!obj) return; bi = evas_object_data_get(obj, "e_gadcon_layout_data"); if (!bi) return; - bi->aspect_pad.w = w; - bi->aspect_pad.h = h; + if (bi->sd->horizontal) + { + bi->aspect_pad.w = w; + bi->aspect_pad.h = h; + } + else + { + bi->aspect_pad.w = h; + bi->aspect_pad.h = w; + } } static void @@ -3046,7 +3099,7 @@ E_Gadcon_Layout_Item *bi; if (!obj) return NULL; - bi = calloc(1, sizeof(E_Gadcon_Layout_Item)); + bi = E_NEW(E_Gadcon_Layout_Item, 1); if (!bi) return NULL; bi->sd = sd; bi->obj = obj; @@ -3080,7 +3133,7 @@ evas_object_smart_member_del(obj); evas_object_clip_unset(obj); evas_object_data_del(obj, "e_gadcon_layout_data"); - free(bi); + E_FREE(bi); } static void @@ -3113,45 +3166,28 @@ _e_gadcon_layout_smart_min_cur_size_calc(sd, &min, &mino, &cur); - if (sd->horizontal) + if ((sd->minw != min) || (sd->minh != mino)) { - if ((sd->minw != min) || (sd->minh != mino)) - { - sd->minw = min; - sd->minh = mino; - evas_object_smart_callback_call(sd->obj, "min_size_request", NULL); - } + sd->minw = min; + sd->minh = mino; + evas_object_smart_callback_call(sd->obj, "min_size_request", NULL); } - else - { - if ((sd->minh != min) || (sd->minw != mino)) - { - sd->minh = min; - sd->minw = mino; - evas_object_smart_callback_call(sd->obj, "min_size_request", NULL); - } - } if (sd->req != cur) { - if (((sd->horizontal) && (cur >= sd->minw)) || - ((!sd->horizontal) && (cur >= sd->minh))) + if (cur >= sd->minw) { sd->req = cur; evas_object_smart_callback_call(sd->obj, "size_request", NULL); } else { - if (sd->horizontal) - sd->req = sd->minw; - else - sd->req = sd->minh; + sd->req = sd->minw; } } _e_gadcon_layout_smart_gadcons_width_adjust(sd, min, cur); - if (((sd->horizontal) && (sd->w <= sd->req)) || - ((!sd->horizontal) && (sd->h <= sd->req))) + if (sd->w <= sd->req) { _e_gadcon_layout_smart_gadcon_position_shrinked_mode(sd); set_prev_pos = 0; @@ -3164,11 +3200,9 @@ _e_gadcon_layout_smart_gadcons_position(sd, &list); - EINA_LIST_FOREACH(list, l, lc) - { - LC_FREE(lc); - } - list = eina_list_free(list); + EINA_LIST_FREE(list, lc) + LC_FREE(lc); + set_prev_pos = 1; } @@ -3182,36 +3216,19 @@ if (set_prev_pos) { - if (sd->horizontal) - { - bi->ask.prev_pos = bi->x; - bi->ask.prev_size = bi->w; - } - else - { - bi->ask.prev_pos = bi->y; - bi->ask.prev_size = bi->h; - } + bi->ask.prev_pos = bi->x; + bi->ask.prev_size = bi->w; } - if (sd->horizontal) - { - if ((bi->x == bi->ask.pos) && - (bi->gcc->state_info.flags & E_GADCON_LAYOUT_ITEM_LOCK_POSITION)) - bi->gcc->state_info.flags |= E_GADCON_LAYOUT_ITEM_LOCK_ABSOLUTE; - } - else - { - if ((bi->y == bi->ask.pos) && - (bi->gcc->state_info.flags & E_GADCON_LAYOUT_ITEM_LOCK_POSITION)) - bi->gcc->state_info.flags |= E_GADCON_LAYOUT_ITEM_LOCK_ABSOLUTE; - } + if ((bi->x == bi->ask.pos) && + (bi->gcc->state_info.flags & E_GADCON_LAYOUT_ITEM_LOCK_POSITION)) + bi->gcc->state_info.flags |= E_GADCON_LAYOUT_ITEM_LOCK_ABSOLUTE; + if ((bi->gcc->state_info.flags & E_GADCON_LAYOUT_ITEM_LOCK_POSITION) && (bi->gcc->state_info.flags & E_GADCON_LAYOUT_ITEM_LOCK_ABSOLUTE)) { - if (((sd->horizontal) && (bi->x != bi->ask.pos)) || - ((!sd->horizontal) && (bi->y != bi->ask.pos))) - bi->gcc->state_info.flags &= ~E_GADCON_LAYOUT_ITEM_LOCK_ABSOLUTE; + if (bi->x != bi->ask.pos) + bi->gcc->state_info.flags &= ~E_GADCON_LAYOUT_ITEM_LOCK_ABSOLUTE; } i++; } @@ -3222,20 +3239,21 @@ bi = evas_object_data_get(obj, "e_gadcon_layout_data"); if (!bi) continue; + + bi->h = sd->h; + xx = sd->x + bi->x; + yy = sd->y + ((sd->h - bi->h) / 2); + if (sd->horizontal) { - bi->h = sd->h; - xx = sd->x + bi->x; - yy = sd->y + ((sd->h - bi->h) / 2); + evas_object_move(obj, xx, yy); + evas_object_resize(obj, bi->w, bi->h); } else { - bi->w = sd->w; - xx = sd->x + ((sd->w - bi->w) / 2); - yy = sd->y + bi->y; + evas_object_move(obj, yy, xx); + evas_object_resize(obj, bi->h, bi->w); } - evas_object_move(obj, xx, yy); - evas_object_resize(obj, bi->w, bi->h); } sd->doing_config = 0; if (sd->redo_config) @@ -3243,28 +3261,17 @@ _e_gadcon_layout_smart_reconfigure(sd); sd->redo_config = 0; } - if (sd->horizontal) + + if ((sd->minw != min) || (sd->minh != mino)) { - if ((sd->minw != min) || (sd->minh != mino)) - { - sd->minw = min; - sd->minh = mino; - evas_object_smart_callback_call(sd->obj, "min_size_request", NULL); - } + sd->minw = min; + sd->minh = mino; + evas_object_smart_callback_call(sd->obj, "min_size_request", NULL); } - else - { - if ((sd->minh != min) || (sd->minw != mino)) - { - sd->minw = mino; - sd->minh = min; - evas_object_smart_callback_call(sd->obj, "min_size_request", NULL); - } - } + if (sd->req != cur) { - if (((sd->horizontal) && (cur >= sd->minw)) || - ((!sd->horizontal) && (cur >= sd->minh))) + if (cur >= sd->minw) { sd->req = cur; evas_object_smart_callback_call(sd->obj, "size_request", NULL); @@ -3351,8 +3358,17 @@ Evas_Object *item; Evas_Coord dx, dy; - dx = x - sd->x; - dy = y - sd->y; + if (sd->horizontal) + { + dx = x - sd->x; + dy = y - sd->y; + } + else + { + dx = x - sd->y; + dy = y - sd->x; + } + EINA_LIST_FOREACH(sd->items, l, item) { Evas_Coord ox, oy; @@ -3361,8 +3377,17 @@ evas_object_move(item, ox + dx, oy + dy); } } - sd->x = x; - sd->y = y; + + if (sd->horizontal) + { + sd->x = x; + sd->y = y; + } + else + { + sd->x = y; + sd->y = x; + } } static void @@ -3374,8 +3399,18 @@ sd = evas_object_smart_data_get(obj); if (!sd) return; if ((w == sd->w) && (h == sd->h)) return; - sd->w = w; - sd->h = h; + if (sd->horizontal) + { + sd->w = w; + sd->h = h; + } + else + { + sd->w = h; + sd->h = w; + + } + _e_gadcon_layout_smart_reconfigure(sd); } @@ -3453,57 +3488,28 @@ if ((bi->aspect.w > 0) && (bi->aspect.h > 0)) { - if (sd->horizontal) + bi->ask.size2 = + (((sd->h - bi->aspect_pad.h) * bi->aspect.w) / bi->aspect.h) + bi->aspect_pad.w; + + if (bi->ask.size2 > bi->min.w) { - bi->ask.size2 = (((sd->h - bi->aspect_pad.h) * bi->aspect.w) / bi->aspect.h) - + bi->aspect_pad.w; - if (bi->ask.size2 > bi->min.w) - { - *min += bi->ask.size2; - *cur += bi->ask.size2; - } - else - { - *min += bi->min.w; - *cur += bi->min.w; - } + *min += bi->ask.size2; + *cur += bi->ask.size2; } else { - bi->ask.size2 = (((sd->w - bi->aspect_pad.w) * bi->aspect.h) / bi->aspect.w) - + bi->aspect_pad.h; - if (bi->ask.size2 > bi->min.h) - { - *min += bi->ask.size2; - *cur += bi->ask.size2; - } - else - { - *cur += bi->min.h; - *min += bi->min.h; - } + *min += bi->min.w; + *cur += bi->min.w; } } else { - if (sd->horizontal) - { - *min += bi->min.w; - if (bi->min.h > *mino) *mino = bi->min.h; - if (bi->ask.size < bi->min.w) - *cur += bi->min.w; - else - *cur += bi->ask.size; - } + *min += bi->min.w; + if (bi->min.h > *mino) *mino = bi->min.h; + if (bi->ask.size < bi->min.w) + *cur += bi->min.w; else - { - *min += bi->min.h; - if (bi->min.w > *mino) *mino = bi->min.w; - if (bi->ask.size < bi->min.h) - *cur += bi->min.h; - else - *cur += bi->ask.size; - } + *cur += bi->ask.size; } } } @@ -3515,100 +3521,52 @@ bi = evas_object_data_get(d1, "e_gadcon_layout_data"); bi2 = evas_object_data_get(d2, "e_gadcon_layout_data"); - if (bi->sd->horizontal) - { - if (bi->ask.size2 > bi->min.w) - { - if (bi2->ask.size2 > bi2->min.w) - { - if (bi->ask.size2 < bi2->ask.size2) - return 1; - else - return -1; - } + + if (bi->ask.size2 > bi->min.w) + { + if (bi2->ask.size2 > bi2->min.w) + { + if (bi->ask.size2 < bi2->ask.size2) + return 1; else - { - if (bi->ask.size2 == bi2->ask.size2) - return -1; - else - { - if (bi->ask.size2 < bi2->ask.size2) - return 1; - else - return -1; - } - } + return -1; } else { - if (bi2->ask.size2 > bi2->min.w) - { - if (bi->ask.size2 == bi2->ask.size2) - return 1; - else - { - if (bi->ask.size2 < bi2->ask.size2) - return 1; - else - return -1; - } - } + if (bi->ask.size2 == bi2->ask.size2) + return -1; else { if (bi->ask.size2 < bi2->ask.size2) return 1; - else if (bi->ask.size2 > bi2->ask.size2) + else return -1; } } } else { - if (bi->ask.size2 > bi->min.h) + if (bi2->ask.size2 > bi2->min.w) { - if (bi2->ask.size2 > bi2->min.h) + if (bi->ask.size2 == bi2->ask.size2) + return 1; + else { if (bi->ask.size2 < bi2->ask.size2) return 1; else return -1; } - else - { - if (bi->ask.size2 == bi2->ask.size2) - return -1; - else - { - if (bi->ask.size2 < bi2->ask.size2) - return 1; - else - return -1; - } - } } else - { - if (bi2->ask.size2 > bi2->min.h) - { - if (bi->ask.size2 == bi2->ask.size2) - return 1; - else - { - if (bi->ask.size2 < bi2->ask.size2) - return 1; - else - return -1; - } - } - else - { - if (bi->ask.size2 < bi2->ask.size2) - return 1; - else if (bi->ask.size2 > bi2->ask.size2) - return -1; - } + { + if (bi->ask.size2 < bi2->ask.size2) + return 1; + else if (bi->ask.size2 > bi2->ask.size2) + return -1; } } + return 0; } @@ -3622,33 +3580,17 @@ int need, limit, reduce_total, reduce; int max_size, c; - if (sd->horizontal) + if (sd->w < cur) { - if (sd->w < cur) - { - if (sd->w < min) - max_size = min; - else - max_size = cur; - - need = max_size - sd->w; - } + if (sd->w < min) + max_size = min; else - return; + max_size = cur; + + need = max_size - sd->w; } else - { - if (sd->h < cur) - { - if (sd->h < min) - max_size = min; - else - max_size = cur; - need = max_size - sd->h; - } - else - return; - } + return; sd->items = eina_list_sort(sd->items, eina_list_count(sd->items), _e_gadcon_layout_smart_width_smart_sort_reverse_cb); @@ -3765,8 +3707,8 @@ bi = evas_object_data_get(d1, "e_gadcon_layout_data"); bi2 = evas_object_data_get(d2, "e_gadcon_layout_data"); - if (bi->sd->horizontal) return (bi->x - bi2->x); - return (bi->y - bi2->y); + + return (bi->x - bi2->x); } static int @@ -3819,10 +3761,7 @@ gcc->state_info.prev_pos = gcc->config.pos; gcc->state_info.prev_size = gcc->config.size; - if (e_gadcon_layout_orientation_get(gcc->gadcon->o_container)) - gcc->config.pos = bi->x; - else - gcc->config.pos = bi->y; + gcc->config.pos = bi->x; } static void @@ -3900,45 +3839,26 @@ (bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_SIZE_MIN_END_DEC) || (bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_SIZE_MAX_END_INC)) { - if (sd->horizontal) - { - if (bi->w < bi->min.w) - bi->gcc->config.size = bi->w = bi->min.w; - else - bi->gcc->config.size = bi->w; - } + if (bi->w < bi->min.w) + bi->gcc->config.size = bi->w = bi->min.w; else - { - if (bi->h < bi->min.h) - bi->gcc->config.size = bi->h = bi->min.h; - else - bi->gcc->config.size = bi->h; - } + bi->gcc->config.size = bi->w; + bi->gcc->config.pos = bi->gcc->state_info.prev_pos; - } + } } EINA_LIST_FOREACH(sd->items, l, item) { bi = evas_object_data_get(item, "e_gadcon_layout_data"); - if (sd->horizontal) - { - bi->x = pos; - bi->gcc->config.size = bi->w = bi->ask.size2; - pos = bi->x + bi->w; - } - else - { - bi->y = pos; - bi->gcc->config.size = bi->h = bi->ask.size2; - pos = bi->y + bi->h; - } + + bi->x = pos; + bi->w = bi->ask.size2; + bi->gcc->config.size = bi->w; + pos = bi->x + bi->w; } } -/* - * The function returns a list of E_Gadcon_Layout_Item_Container - */ static void _e_gadcon_layout_smart_gadcons_asked_position_set(E_Smart_Data *sd) { @@ -3946,118 +3866,69 @@ Eina_List *l; Evas_Object *item; +#if 1 EINA_LIST_FOREACH(sd->items, l, item) { bi = evas_object_data_get(item, "e_gadcon_layout_data"); if (!bi) continue; - - if (sd->horizontal) - { - bi->x = bi->ask.pos; - bi->w = bi->ask.size2; - } - else - { - bi->y = bi->ask.pos; - bi->h = bi->ask.size2; - } + + bi->x = bi->ask.pos; + bi->w = bi->ask.size2; } - -#if 0 +#else + int pos; EINA_LIST_FOREACH(sd->items, l, item) { bi = evas_object_data_get(item, "e_gadcon_layout_data"); if (!bi) continue; - if (sd->horizontal) - { - xx = bi->ask.pos + (bi->ask.size / 2); - if (xx < (bi->ask.res / 3)) - { - /* hooked to start */ - bi->x = bi->ask.pos; - bi->w = bi->ask.size2; - bi->hookp = 0; - } - else if (xx > ((2 * bi->ask.res) / 3)) - { - /* hooked to end */ - bi->x = (bi->ask.pos - bi->ask.res) + sd->w; - bi->w = bi->ask.size2; - bi->hookp = bi->ask.res; - } - else - { - /* hooked to middle */ - if ((bi->ask.pos <= (bi->ask.res / 2)) && - ((bi->ask.pos + bi->ask.size2) > (bi->ask.res / 2))) - { - /* straddles middle */ - if (bi->ask.res > 2) - bi->x = (sd->w / 2) + - (((bi->ask.pos + (bi->ask.size2 / 2) - - (bi->ask.res / 2)) * - (bi->ask.res / 2)) / - (bi->ask.res / 2)) - (bi->ask.size2 / 2); - else - bi->x = sd->w / 2; - bi->w = bi->ask.size2; - } - else - { - /* either side of middle */ - bi->x = (bi->ask.pos - (bi->ask.res / 2)) + (sd->w / 2); - bi->w = bi->ask.size2; - } - bi->hookp = bi->ask.res / 2; - } + + pos = bi->ask.pos + (bi->ask.size / 2); + if (pos < (bi->ask.res / 3)) + { + /* hooked to start */ + bi->x = bi->ask.pos; + bi->w = bi->ask.size2; + bi->hookp = 0; } + else if (pos > ((2 * bi->ask.res) / 3)) + { + /* hooked to end */ + bi->x = (bi->ask.pos - bi->ask.res) + sd->w; + bi->w = bi->ask.size2; + bi->hookp = bi->ask.res; + } else - { - yy = bi->ask.pos + (bi->ask.size2 / 2); - if (yy < (bi->ask.res / 3)) + { + /* hooked to middle */ + if ((bi->ask.pos <= (bi->ask.res / 2)) && + ((bi->ask.pos + bi->ask.size2) > (bi->ask.res / 2))) { - /* hooked to start */ - bi->y = bi->ask.pos; - bi->h = bi->ask.size2; - bi->hookp = 0; + /* straddles middle */ + if (bi->ask.res > 2) + bi->x = (sd->w / 2) + + (((bi->ask.pos + (bi->ask.size2 / 2) - + (bi->ask.res / 2)) * + (bi->ask.res / 2)) / + (bi->ask.res / 2)) - (bi->ask.size2 / 2); + else + bi->x = sd->w / 2; + bi->w = bi->ask.size2; } - else if (yy > ((2 * bi->ask.res) / 3)) - { - /* hooked to end */ - bi->y = (bi->ask.pos - bi->ask.res) + sd->h; - bi->h = bi->ask.size2; - bi->hookp = bi->ask.res; - } else { - /* hooked to middle */ - if ((bi->ask.pos <= (bi->ask.res / 2)) && - ((bi->ask.pos + bi->ask.size2) > (bi->ask.res / 2))) - { - /* straddles middle */ - if (bi->ask.res > 2) - bi->y = (sd->h / 2) + - (((bi->ask.pos + (bi->ask.size2 / 2) - - (bi->ask.res / 2)) * - (bi->ask.res / 2)) / - (bi->ask.res / 2)) - (bi->ask.size2 / 2); - else - bi->y = sd->h / 2; - bi->h = bi->ask.size2; - } - else - { - /* either side of middle */ - bi->y = (bi->ask.pos - (bi->ask.res / 2)) + (sd->h / 2); - bi->h = bi->ask.size2; - } - bi->hookp = bi->ask.res / 2; + /* either side of middle */ + bi->x = (bi->ask.pos - (bi->ask.res / 2)) + (sd->w / 2); + bi->w = bi->ask.size2; } + bi->hookp = bi->ask.res / 2; } } #endif } +/* + * The function returns a list of E_Gadcon_Layout_Item_Container + */ static Eina_List * _e_gadcon_layout_smart_gadcons_wrap(E_Smart_Data *sd) { @@ -4066,22 +3937,17 @@ E_Layout_Item_Container *lc; E_Gadcon_Layout_Item *bi; + EINA_LIST_FOREACH(sd->items, l, item) { bi = evas_object_data_get(item, "e_gadcon_layout_data"); lc = E_NEW(E_Layout_Item_Container, 1); lc->state_info.min_seq = lc->state_info.max_seq = bi->gcc->state_info.seq; lc->sd = sd; - if (sd->horizontal) - { - lc->pos = bi->x; - lc->size = bi->w; - } - else - { - lc->pos = bi->y; - lc->size = bi->h; - } + + lc->pos = bi->x; + lc->size = bi->w; + lc->prev_pos = bi->ask.prev_pos; lc->prev_size = bi->ask.prev_size; @@ -4109,12 +3975,8 @@ EINA_LIST_FOREACH(*list, l, lc_moving) { - if ((lc_moving->state == E_LAYOUT_ITEM_CONTAINER_STATE_POS_INC) || - (lc_moving->state == E_LAYOUT_ITEM_CONTAINER_STATE_POS_DEC) || - (lc_moving->state == E_LAYOUT_ITEM_CONTAINER_STATE_SIZE_MIN_END_INC) || - (lc_moving->state == E_LAYOUT_ITEM_CONTAINER_STATE_SIZE_MIN_END_DEC) || - (lc_moving->state == E_LAYOUT_ITEM_CONTAINER_STATE_SIZE_MAX_END_INC) || - (lc_moving->state == E_LAYOUT_ITEM_CONTAINER_STATE_SIZE_MAX_END_DEC)) + if ((lc_moving->state != E_LAYOUT_ITEM_CONTAINER_STATE_NONE) && + (lc_moving->state != E_LAYOUT_ITEM_CONTAINER_STATE_POS_LOCKED)) { lc_back = E_NEW(E_Layout_Item_Container, 1); lc_back->pos = lc_moving->pos; @@ -4128,6 +3990,7 @@ lc_back->items = eina_list_append(lc_back->items, lc); lc_back->state = lc_moving->state; bi_moving = eina_list_data_get(lc_back->items); + break; } lc_moving = NULL; @@ -4207,33 +4070,15 @@ { if (bi->ask.pos <= pos) { - if (sd->horizontal) - { - bi->x = pos; - pos = bi->x + bi->w; - } - else - { - bi->y = pos; - pos = bi->y + bi->h; - } + bi->x = pos; + pos = (bi->x) + (bi->w); } - else if (((sd->horizontal) && (bi->ask.pos < bi->x)) || - ((!sd->horizontal) && (bi->ask.pos < bi->y))) + else if (bi->ask.pos < bi->x) { - if (sd->horizontal) - { - bi->x = bi->ask.pos; - pos = bi->x + bi->w; - } - else - { - bi->y = bi->ask.pos; - pos = bi->y + bi->h; - } + bi->x = bi->ask.pos; + pos = (bi->x) + (bi->w); } - else if (((sd->horizontal) && (bi->ask.pos == bi->x)) || - ((!sd->horizontal) && (bi->ask.pos == bi->y))) + else if (bi->ask.pos == bi->x) { stop = 1; break; @@ -4244,7 +4089,7 @@ } } else if (lc_moving->state == E_LAYOUT_ITEM_CONTAINER_STATE_POS_INC) - { + { _e_gadcon_layout_smart_restore_gadcons_position_before_move(sd, &lc_moving, lc_back, list); EINA_LIST_FOREACH(*list, l, lc) if (lc == lc_moving) break; @@ -4302,7 +4147,11 @@ if ((l) && eina_list_prev(l)) { stop = 0; - EINA_LIST_REVERSE_FOREACH(eina_list_prev(l), l2, lc) + /* FIXME: patch from <vic...@gm...> + just a workaround. something above is probably + wrong (hannes) */ + /* EINA_LIST_REVERSE_FOREACH(eina_list_prev(l), l2, lc) */ + EINA_LIST_REVERSE_FOREACH_SAFE(eina_list_prev(l), l2, l2, lc) { if (stop) break; if ((lc->pos + lc->size) == prev_pos) break; @@ -4310,36 +4159,17 @@ EINA_LIST_REVERSE_FOREACH(eina_list_last(lc->items), l3, bi) { - if (((sd->horizontal) && ((bi->ask.pos + bi->w) >= pos)) || - ((!sd->horizontal) && ((bi->ask.pos + bi->h) >= pos))) + if ((bi->ask.pos + bi->w) >= pos) { - if (sd->horizontal) - { - bi->x = pos - bi->w; - pos = bi->x; - } - else - { - bi->y = pos - bi->h; - pos = bi->y; - } + bi->x = pos - bi->w; + pos = bi->x; } - else if (((sd->horizontal) && (bi->ask.pos > bi->x)) || - ((!sd->horizontal) && (bi->ask.pos > bi->w))) + else if (bi->ask.pos > bi->x) { - if (sd->horizontal) - { - bi->x = bi->ask.pos; - pos = bi->x; - } - else - { - bi->y = bi->ask.pos; - pos = bi->y; - } + bi->x = bi->ask.pos; + pos = bi->x; } - else if (((sd->horizontal) && (bi->ask.pos == bi->x)) || - ((!sd->horizontal) && (bi->ask.pos == bi->y))) + else if (bi->ask.pos == bi->x) { stop = 1; break; @@ -4375,10 +4205,7 @@ lc_moving->pos -= new_pos; bi = eina_list_data_get(lc_moving->items); - if (sd->horizontal) - bi->w = lc_moving->size; - else - bi->h = lc_moving->size; + bi->w = lc_moving->size; _e_gadcon_layout_smart_position_items_inside_container(sd, lc_moving); new_pos = 0; @@ -4410,10 +4237,8 @@ lc_moving->pos = 0; bi = eina_list_data_get(lc_moving->items); - if (sd->horizontal) - bi->w = lc_moving->size; - else - bi->h = lc_moving->size; + bi->w = lc_moving->size; + _e_gadcon_layout_smart_position_items_inside_container(sd, lc_moving); } } @@ -4449,29 +4274,15 @@ new_pos += lc->size; } - if (sd->horizontal) + if (new_pos > sd->w) { - if (new_pos > sd->w) - { - lc_moving->size -= (new_pos - sd->w); - bi = eina_list_data_get(lc_moving->items); - bi->w = lc_moving->size; + lc_moving->size -= (new_pos - sd->w); + bi = eina_list_data_get(lc_moving->items); + bi->w = lc_moving->size; - new_pos = lc_moving->pos + lc_moving->size; - } + new_pos = lc_moving->pos + lc_moving->size; } - else - { - if (new_pos > sd->h) - { - lc_moving->size -= (new_pos - sd->h); - bi = eina_list_data_get(lc_moving->items); - bi->h = lc_moving->size; - new_pos = lc_moving->pos + lc_moving->size; - } - } - if (ok) { EINA_LIST_FOREACH(eina_list_next(l), l2, lc) @@ -4489,24 +4300,12 @@ } else if ((l) && (!eina_list_next(l))) { - if (sd->horizontal) + if ((lc_moving->pos + lc_moving->size) >= sd->w) { - if ((lc_moving->pos + lc_moving->size) >= sd->w) - { - lc_moving->size = lc_moving->prev_size; - bi = eina_list_data_get(lc_moving->items); - bi->w = lc_moving->size; - } + lc_moving->size = lc_moving->prev_size; + bi = eina_list_data_get(lc_moving->items); + bi->w = lc_moving->size; } - else - { - if ((lc_moving->pos + lc_moving->size) > sd->h) - { - lc_moving->size = lc_moving->prev_size; - bi = eina_list_data_get(lc_moving->items); - bi->h = lc_moving->size; - } - } } } else if (lc_moving->state == E_LAYOUT_ITEM_CONTAINER_STATE_SIZE_MAX_END_DEC) @@ -4516,16 +4315,8 @@ LC_FREE(lc_back); } - if (sd->horizontal) - { - bi_moving->gcc->config.pos = bi_moving->ask.pos = bi_moving->x; - bi_moving->gcc->config.size = bi_moving->w; - } - else - { - bi_moving->gcc->config.pos = bi_moving->ask.pos = bi_moving->y; - bi_moving->gcc->config.size = bi_moving->h; - } + bi_moving->gcc->config.pos = bi_moving->ask.pos = bi_moving->x; + bi_moving->gcc->config.size = bi_moving->w; } static void @@ -4569,24 +4360,12 @@ continue; } - if (sd->horizontal) + if (((lc->pos + lc->size) > sd->w) && (lc->size <= sd->w)) { - if (((lc->pos + lc->size) > sd->w) && (lc->size <= sd->w)) - { - ok = 0; - lc->pos = sd->w - lc->size; - _e_gadcon_layout_smart_position_items_inside_container(sd, lc); - } + ok = 0; + lc->pos = sd->w - lc->size; + _e_gadcon_layout_smart_position_items_inside_container(sd, lc); } - else - { - if (((lc->pos + lc->size) > sd->h) && (lc->size <= sd->h)) - { - ok = 0; - lc->pos = sd->h - lc->size; - _e_gadcon_layout_smart_position_items_inside_container(sd, lc); - } - } } if (!ok) _e_gadcon_layout_smart_gadcons_position_static(sd, list); @@ -4634,18 +4413,11 @@ bi = eina_list_data_get(lc->items); bi2 = eina_list_data_get(lc2->items); - if (sd->horizontal) - { - bi->gcc->config.pos = bi->ask.pos = bi->x = (bi2->x + bi2->w) - bi->w; - bi->gcc->config.size = bi->w; - bi2->x = bi->x - bi2->w; - } - else - { - bi->gcc->config.pos = bi->ask.pos = bi->y = (bi2->y + bi2->h) - bi->h; - bi->gcc->config.size = bi->h; - bi2->y = bi->y - bi2->h; - } + bi->x = ((bi2->x) + (bi2->w)) - (bi->w); + bi->gcc->config.pos = bi->ask.pos = bi->x; + bi->gcc->config.size = bi->w; + bi2->x = (bi->x) - (bi2->w); + bi2->gcc->state_info.flags &= ~E_GADCON_LAYOUT_ITEM_LOCK_ABSOLUTE; t = bi->gcc->state_info.seq; @@ -4679,8 +4451,7 @@ { if (bi->gcc->state_info.flags & E_GADCON_LAYOUT_ITEM_LOCK_POSITION) { - if (sd->horizontal) shift = bi->ask.pos - bi->x; - else shift = bi->ask.pos - bi->y; + shift = bi->ask.pos - bi->x; } if (bi->gcc->state_info.flags & E_GADCON_LAYOUT_ITEM_LOCK_ABSOLUTE) @@ -4691,14 +4462,10 @@ { EINA_LIST_FOREACH(lc->items, l, bi) { - if (sd->horizontal) bi->x += shift; - else bi->y += shift; + bi->x += shift; if (l == lc->items) - { - if (sd->horizontal) lc->pos = bi->x; - else lc->pos = bi->y; - } + lc->pos = bi->x; } } } @@ -4732,8 +4499,7 @@ { if (bi->gcc->state_info.flags & E_GADCON_LAYOUT_ITEM_LOCK_POSITION) { - if (sd->horizontal) shift = bi->ask.pos - bi->x; - else shift = bi->ask.pos - bi->y; + shift = bi->ask.pos - bi->x; } if (bi->gcc->state_info.flags & E_GADCON_LAYOUT_ITEM_LOCK_ABSOLUTE) @@ -4744,14 +4510,10 @@ { EINA_LIST_FOREACH(lc->items, l, bi) { - if (sd->horizontal) bi->x += shift; - else bi->y += shift; - - if (l == lc->items) - { - if (sd->horizontal) lc->pos = bi->x; - else lc->pos = bi->y; - } + bi->x += shift; + + if (l == lc->items) + lc->pos = bi->x; } } } @@ -4763,18 +4525,9 @@ bi = eina_list_data_get(eina_list_last(lc->items)); bi2 = eina_list_data_get(lc2->items); - if (sd->horizontal) - { - bi2->gcc->config.pos = bi2->ask.pos = bi2->x = bi->x; - bi2->gcc->config.size = bi2->w; - bi->x = bi2->x + bi2->w; - } - else - { - bi2->gcc->config.pos = bi2->ask.pos = bi2->y = bi->y; - bi2->gcc->config.size = bi2->h; - bi->y = bi2->y + bi2->h; - } + bi2->gcc->config.pos = bi2->ask.pos = (bi2->x) = (bi->x); + bi2->gcc->config.size = bi2->w; + bi->x = (bi2->x) + (bi2->w); t = bi->gcc->state_info.seq; bi->gcc->state_info.seq = bi2->gcc->state_info.seq; @@ -4877,10 +4630,7 @@ if ((bi->gcc->state_info.flags & E_GADCON_LAYOUT_ITEM_LOCK_POSITION) && (bi->gcc->state_info.flags & E_GADCON_LAYOUT_ITEM_LOCK_ABSOLUTE)) { - if (sd->horizontal) - shift = bi->ask.pos - bi->x; - else - shift = bi->ask.pos - bi->y; + shift = bi->ask.pos - bi->x; break; } } @@ -4889,18 +4639,10 @@ { EINA_LIST_FOREACH(lc->items, l, bi) { - if (sd->horizontal) - bi->x += shift; - else - bi->y += shift; + bi->x += shift; if (l == lc->items) - { - if (sd->horizontal) - lc->pos = bi->x; - else - lc->pos = bi->y; - } + lc->pos = bi->x; } } } @@ -4958,26 +4700,18 @@ if (!lc->items) return; bi = eina_list_data_get(lc->items); - if (sd->horizontal) - shift = lc->pos - bi->x; - else - shift = lc->pos - bi->y; + shift = lc->pos - bi->x; + if (!shift) return; EINA_LIST_FOREACH(lc->items, l, bi) { - if (sd->horizontal) - bi->x += shift; - else - bi->y += shift; - + bi->x += shift; + if ((bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_POS_DEC) || (bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_POS_INC)) { - if (sd->horizontal) - bi->gcc->config.pos = bi->ask.pos = bi->x; - else - bi->gcc->config.pos = bi->ask.pos = bi->y; + bi->gcc->config.pos = bi->ask.pos = bi->x; } } } @@ -5001,34 +4735,18 @@ if (l == nl) { min_seq = max_seq = bi->gcc->state_info.seq; - if (sd->horizontal) - { - start = bi->x; - size = bi->w; - next = bi->x + bi->w; - } - else - { - start = bi->y; - size = bi->h; - next = bi->y + bi->h; - } + start = bi->x; + size = bi->w; + next = bi->x + bi->w; + continue; } max_seq = bi->gcc->state_info.seq; - if (sd->horizontal) - { - bi->x = next; - size += bi->w; - next = bi->x + bi->w; - } - else - { - bi->y = next; - size += bi->h; - next = bi->y + bi->h; - } + + bi->x = next; + size += bi->w; + next = bi->x + bi->w; } lc->items = eina_list_free(lc->items); @@ -5058,10 +4776,8 @@ { (*lc_moving)->size = (*lc_moving)->prev_size; bi = eina_list_data_get((*lc_moving)->items); - if (sd->horizontal) - bi->w = (*lc_moving)->prev_size; - else - bi->h = (*lc_moving)->prev_size; + + bi->w = (*lc_moving)->prev_size; } _e_gadcon_layout_smart_position_items_inside_container(sd, (*lc_moving)); (*lc_moving)->state = E_LAYOUT_ITEM_CONTAINER_STATE_POS_LOCKED; @@ -5077,12 +4793,7 @@ if (eina_list_count(lc->items) == 1) { bi = eina_list_data_get(lc->items); - if ((bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_POS_INC) || - (bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_POS_DEC) || - (bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_SIZE_MIN_END_INC) || - (bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_SIZE_MIN_END_DEC) || - (bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_SIZE_MAX_END_INC) || - (bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_SIZE_MAX_END_DEC)) + if (bi->gcc->state_info.state != E_LAYOUT_ITEM_STATE_NONE) { LC_FREE(lc); l->data = *lc_moving = lc_back; @@ -5092,10 +4803,7 @@ ((*lc_moving)->state != E_LAYOUT_ITEM_CONTAINER_STATE_POS_DEC)) { bi = eina_list_data_get((*lc_moving)->items); - if (sd->horizontal) - bi->w = (*lc_moving)->size; - else - bi->h = (*lc_moving)->size; + bi->w = (*lc_moving)->size; } } } @@ -5103,12 +4811,7 @@ { EINA_LIST_FOREACH(lc->items, l2, bi) { - if ((bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_POS_INC) || - (bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_POS_DEC) || - (bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_SIZE_MIN_END_INC) || - (bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_SIZE_MIN_END_DEC) || - (bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_SIZE_MAX_END_INC) || - (bi->gcc->state_info.state == E_LAYOUT_ITEM_STATE_SIZE_MAX_END_DEC)) + if (bi->gcc->state_info.state != E_LAYOUT_ITEM_STATE_NONE) { ok = 1; if (l2 != lc->items) @@ -5123,10 +4826,7 @@ if (l3 == lc->items) { lc2->state_info.min_seq = bi2->gcc->state_info.seq; - if (sd->horizontal) - lc2->pos = lc2->prev_pos = bi2->x; - else - lc2->pos = lc2->prev_pos = bi2->y; + lc2->pos = lc2->prev_pos = bi2->x; } lc2->state_info.max_seq = bi2->gcc->state_info.seq; E_LAYOUT_ITEM_CONTAINER_SIZE_CHANGE_BY(lc2, bi2, 1); @@ -5144,10 +4844,7 @@ if (l3 == eina_list_next(l2)) { lc3->state_info.min_seq = bi2->gcc->state_info.seq; - if (sd->horizontal) - lc3->pos = lc3->prev_pos = bi2->x; - else - lc3->pos = lc3->prev_pos = bi2->y; + lc3->pos = lc3->prev_pos = bi2->x; } lc3->state_info.max_seq = bi2->gcc->state_info.seq; E_LAYOUT_ITEM_CONTAINER_SIZE_CHANGE_BY(lc3, bi2, 1); @@ -5160,10 +4857,7 @@ ((*lc_moving)->state != E_LAYOUT_ITEM_CONTAINER_STATE_POS_DEC)) { bi = eina_list_data_get((*lc_moving)->items); - if (sd->horizontal) - bi->w = (*lc_moving)->size; - else - bi->h = (*lc_moving)->size; + bi->w = (*lc_moving)->size; } break; } |
From: Enlightenment S. <no-...@en...> - 2009-09-17 05:41:37
|
Log: gadcon: get right mouse position for efm gadcon.. Author: jeffdameth Date: 2009-09-16 22:41:23 -0700 (Wed, 16 Sep 2009) New Revision: 42540 Modified: trunk/e/src/bin/e_gadcon.c Modified: trunk/e/src/bin/e_gadcon.c =================================================================== --- trunk/e/src/bin/e_gadcon.c 2009-09-17 05:18:28 UTC (rev 42539) +++ trunk/e/src/bin/e_gadcon.c 2009-09-17 05:41:23 UTC (rev 42540) @@ -1968,7 +1968,10 @@ evas_object_raise(gcc->o_event); evas_object_stack_below(gcc->o_control, gcc->o_event); gcc->moving = 1; - ecore_x_pointer_xy_get(gcc->gadcon->zone->container->win, &gcc->dx, &gcc->dy); + if (gcc->gadcon->toolbar) + evas_pointer_canvas_xy_get(gcc->gadcon->evas, &gcc->dx, &gcc->dy); + else + ecore_x_pointer_xy_get(gcc->gadcon->zone->container->win, &gcc->dx, &gcc->dy); e_gadcon_canvas_zone_geometry_get(gcc->gadcon, &gcx, &gcy, NULL, NULL); evas_object_geometry_get(gcc->gadcon->o_container, &gx, &gy, NULL, NULL); gcc->dx -= (gcx + gx); @@ -2001,7 +2004,7 @@ Evas_Coord x, y, w, h; int cx, cy; int gx, gy, gw, gh; - int gcx = 0, gcy = 0, gcw, gch; + int gcx = 0, gcy = 0; @@ -2010,8 +2013,14 @@ can reparent another window so we get no position here */ /* maybe we should better grab mouse while move resize is active...*/ //evas_pointer_canvas_xy_get(gcc->gadcon->evas, &cx, &cy); - ecore_x_pointer_xy_get(gcc->gadcon->zone->container->win, &cx, &cy); - e_gadcon_canvas_zone_geometry_get(gcc->gadcon, &gcx, &gcy, &gcw, &gch); + if (gcc->gadcon->toolbar) + evas_pointer_canvas_xy_get(gcc->gadcon->evas, &gcc->dx, &gcc->dy); + else + { + ecore_x_pointer_xy_get(gcc->gadcon->zone->container->win, &cx, &cy); + e_gadcon_canvas_zone_geometry_get(gcc->gadcon, &gcx, &gcy, NULL, NULL); + } + evas_object_geometry_get(gcc->gadcon->o_container, &gx, &gy, &gw, &gh); cx -= (gx + gcx); |
From: Enlightenment S. <no-...@en...> - 2009-09-17 09:03:25
|
Log: gadcon: gadcon clients move now _with_ the mouse in shrinked mode Author: jeffdameth Date: 2009-09-17 02:03:13 -0700 (Thu, 17 Sep 2009) New Revision: 42543 Modified: trunk/e/src/bin/e_gadcon.c Modified: trunk/e/src/bin/e_gadcon.c =================================================================== --- trunk/e/src/bin/e_gadcon.c 2009-09-17 06:19:01 UTC (rev 42542) +++ trunk/e/src/bin/e_gadcon.c 2009-09-17 09:03:13 UTC (rev 42543) @@ -3251,7 +3251,7 @@ bi->h = sd->h; xx = sd->x + bi->x; - yy = sd->y + ((sd->h - bi->h) / 2); + yy = sd->y; // + ((sd->h - bi->h) / 2); if (sd->horizontal) { @@ -3791,10 +3791,10 @@ { if (bi->gcc->state_info.resist <= E_LAYOUT_ITEM_DRAG_RESIST_LEVEL) { - bi->gcc->state_info.resist++; - bi->gcc->config.pos = bi->ask.pos = bi->gcc->state_info.prev_pos; + bi->gcc->state_info.resist++; + bi->gcc->config.pos = bi->ask.pos = bi->gcc->state_info.prev_pos; } - else + else { bi->gcc->state_info.resist = 0; if (eina_list_next(l)) @@ -3804,6 +3804,13 @@ l->data = tp; bi2 = evas_object_data_get(tp, "e_gadcon_layout_data"); + + if (bi2->x + bi2->w/2 > bi->ask.pos + bi->w) + { + bi->gcc->config.pos = bi->ask.pos = bi->gcc->state_info.prev_pos; + return; + } + bi->gcc->config.pos = bi->ask.pos = bi2->ask.pos; bi->gcc->state_info.flags &= ~E_GADCON_LAYOUT_ITEM_LOCK_ABSOLUTE; bi->gcc->state_info.want_save = 1; @@ -3831,8 +3838,16 @@ tp = eina_list_data_get(eina_list_prev(l)); l->prev->data = eina_list_data_get(l); + l->data = tp; bi2 = evas_object_data_get(tp, "e_gadcon_layout_data"); + + if (bi->ask.pos > bi2->x + bi2->w/2) + { + bi->gcc->config.pos = bi->ask.pos = bi->gcc->state_info.prev_pos; + return; + } + bi->gcc->config.pos = bi->ask.pos = bi2->ask.pos; bi->gcc->state_info.flags &= ~E_GADCON_LAYOUT_ITEM_LOCK_ABSOLUTE; bi->gcc->state_info.want_save = 1; @@ -4536,7 +4551,7 @@ bi2->gcc->config.pos = bi2->ask.pos = (bi2->x) = (bi->x); bi2->gcc->config.size = bi2->w; - bi->x = (bi2->x) + (bi2->w); + bi->x = bi2->x + bi2->w; t = bi->gcc->state_info.seq; bi->gcc->state_info.seq = bi2->gcc->state_info.seq; |
From: Enlightenment S. <no-...@en...> - 2009-09-19 16:26:29
|
Log: e_border: remove maximized state when maximized window is moved or resized - merge _e_border_resize_internal with _e_border_move_resize_internal Author: jeffdameth Date: 2009-09-19 09:26:16 -0700 (Sat, 19 Sep 2009) New Revision: 42566 Modified: trunk/e/src/bin/e_border.c Modified: trunk/e/src/bin/e_border.c =================================================================== --- trunk/e/src/bin/e_border.c 2009-09-19 10:07:41 UTC (rev 42565) +++ trunk/e/src/bin/e_border.c 2009-09-19 16:26:16 UTC (rev 42566) @@ -835,6 +835,7 @@ if ((bd->fullscreen) || (((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN) && (!e_config->allow_manip))) return; + ecore_x_window_shadow_tree_flush(); if (bd->new_client) { @@ -857,6 +858,7 @@ } if ((x == bd->x) && (y == bd->y)) return; + bd->maximized = 0; bd->pre_res_change.valid = 0; bd->x = x; bd->y = y; @@ -960,111 +962,8 @@ } static void -_e_border_resize_internal(E_Border *bd, int w, int h, Eina_Bool without_border) +_e_border_move_resize_internal(E_Border *bd, int x, int y, int w, int h, Eina_Bool without_border, Eina_Bool move) { - E_Event_Border_Resize *ev; - - E_OBJECT_CHECK(bd); - E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE); - - if ((bd->shaded) || (bd->shading) || (bd->fullscreen) || - (((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN) && (!e_config->allow_manip))) - return; - ecore_x_window_shadow_tree_flush(); - - if (bd->new_client) - { - E_Border_Pending_Move_Resize *pnd; - - pnd = E_NEW(E_Border_Pending_Move_Resize, 1); - if (!pnd) return; - pnd->resize = 1; - pnd->without_border = without_border; - pnd->w = w; - pnd->h = h; - bd->pending_move_resize = eina_list_append(bd->pending_move_resize, pnd); - return; - } - - if (without_border) - { - w += (bd->client_inset.l + bd->client_inset.r); - h += (bd->client_inset.t + bd->client_inset.b); - } - - if ((w == bd->w) && (h == bd->h)) return; - bd->pre_res_change.valid = 0; - bd->w = w; - bd->h = h; - bd->client.w = bd->w - (bd->client_inset.l + bd->client_inset.r); - bd->client.h = bd->h - (bd->client_inset.t + bd->client_inset.b); - bd->changed = 1; - bd->changes.size = 1; - if ((bd->shaped) || (bd->client.shaped)) - { - bd->need_shape_merge = 1; - bd->need_shape_export = 1; - } - if (bd->client.netwm.sync.request) - { - bd->client.netwm.sync.wait++; - ecore_x_netwm_sync_request_send(bd->client.win, bd->client.netwm.sync.serial++); - } - - _e_border_client_move_resize_send(bd); - _e_border_resize_update(bd); - ev = calloc(1, sizeof(E_Event_Border_Resize)); - ev->border = bd; - e_object_ref(E_OBJECT(bd)); -// e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); - ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL); - _e_border_zone_update(bd); -} - -/** - * Resize window to values that already account border decorations. - * - * This call will consider given size already accounts border - * decorations, so it will not be considered later. This will just - * work properly with borders that have being evaluated and border - * decorations are known (border->client_inset). - * - * @parm w horizontal window size. - * @parm h vertical window size. - * - * @see e_border_resize_without_border() - */ -EAPI void -e_border_resize(E_Border *bd, int w, int h) -{ - _e_border_resize_internal(bd, w, h, 0); -} - -/** - * Resize window to values that do not account border decorations yet. - * - * This call will consider given size does not account border - * decoration, so these values (border->client_inset) will be - * accounted automatically. This is specially useful when it is a new - * client and has not be evaluated yet, in this case - * border->client_inset will be zeroed and no information is known. It - * will mark pending requests so border will be accounted on - * evalutation phase. - * - * @parm w horizontal window size. - * @parm h vertical window size. - * - * @see e_border_resize() - */ -EAPI void -e_border_resize_without_border(E_Border *bd, int w, int h) -{ - _e_border_resize_internal(bd, w, h, 1); -} - -static void -_e_border_move_resize_internal(E_Border *bd, int x, int y, int w, int h, Eina_Bool without_border) -{ E_Event_Border_Move *mev; E_Event_Border_Resize *rev; @@ -1074,6 +973,7 @@ if ((bd->fullscreen) || (((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN) && (!e_config->allow_manip))) return; + ecore_x_window_shadow_tree_flush(); if (bd->new_client) @@ -1085,8 +985,11 @@ pnd->move = 1; pnd->resize = 1; pnd->without_border = without_border; - pnd->x = x; - pnd->y = y; + if (move) + { + pnd->x = x; + pnd->y = y; + } pnd->w = w; pnd->h = h; bd->pending_move_resize = eina_list_append(bd->pending_move_resize, pnd); @@ -1101,16 +1004,24 @@ h += (bd->client_inset.t + bd->client_inset.b); } - if ((x == bd->x) && (y == bd->y) && (w == bd->w) && (h == bd->h)) return; + if ((!move || ((x == bd->x) && (y == bd->y))) && + (w == bd->w) && (h == bd->h)) + return; + + bd->maximized = 0; bd->pre_res_change.valid = 0; - bd->x = x; - bd->y = y; + if (move) + { + bd->x = x; + bd->y = y; + bd->changes.pos = 1; + } bd->w = w; bd->h = h; bd->client.w = bd->w - (bd->client_inset.l + bd->client_inset.r); bd->client.h = bd->h - (bd->client_inset.t + bd->client_inset.b); bd->changed = 1; - bd->changes.pos = 1; + bd->changes.size = 1; if ((bd->shaped) || (bd->client.shaped)) { @@ -1125,12 +1036,15 @@ _e_border_client_move_resize_send(bd); _e_border_resize_update(bd); - mev = calloc(1, sizeof(E_Event_Border_Move)); - mev->border = bd; - e_object_ref(E_OBJECT(bd)); -// e_object_breadcrumb_add(E_OBJECT(bd), "border_move_event"); - ecore_event_add(E_EVENT_BORDER_MOVE, mev, _e_border_event_border_move_free, NULL); - + if (move) + { + mev = calloc(1, sizeof(E_Event_Border_Move)); + mev->border = bd; + e_object_ref(E_OBJECT(bd)); + // e_object_breadcrumb_add(E_OBJECT(bd), "border_move_event"); + ecore_event_add(E_EVENT_BORDER_MOVE, mev, _e_border_event_border_move_free, NULL); + } + rev = calloc(1, sizeof(E_Event_Border_Resize)); rev->border = bd; e_object_ref(E_OBJECT(bd)); @@ -1157,7 +1071,7 @@ EAPI void e_border_move_resize(E_Border *bd, int x, int y, int w, int h) { - _e_border_move_resize_internal(bd, x, y, w, h, 0); + _e_border_move_resize_internal(bd, x, y, w, h, 0, 1); } /** @@ -1178,10 +1092,51 @@ EAPI void e_border_move_resize_without_border(E_Border *bd, int x, int y, int w, int h) { - _e_border_move_resize_internal(bd, x, y, w, h, 1); + _e_border_move_resize_internal(bd, x, y, w, h, 1, 1); } +/** + * Resize window to values that already account border decorations. + * + * This call will consider given size already accounts border + * decorations, so it will not be considered later. This will just + * work properly with borders that have being evaluated and border + * decorations are known (border->client_inset). + * + * @parm w horizontal window size. + * @parm h vertical window size. + * + * @see e_border_resize_without_border() + */ EAPI void +e_border_resize(E_Border *bd, int w, int h) +{ + _e_border_move_resize_internal(bd, 0, 0, w, h, 0, 0); +} + +/** + * Resize window to values that do not account border decorations yet. + * + * This call will consider given size does not account border + * decoration, so these values (border->client_inset) will be + * accounted automatically. This is specially useful when it is a new + * client and has not be evaluated yet, in this case + * border->client_inset will be zeroed and no information is known. It + * will mark pending requests so border will be accounted on + * evalutation phase. + * + * @parm w horizontal window size. + * @parm h vertical window size. + * + * @see e_border_resize() + */ +EAPI void +e_border_resize_without_border(E_Border *bd, int w, int h) +{ + _e_border_move_resize_internal(bd, 0, 0, w, h, 1, 0); +} + +EAPI void e_border_layer_set(E_Border *bd, int layer) { int raise; @@ -1822,85 +1777,85 @@ E_OBJECT_CHECK(bd); E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE); - if ((bd->fullscreen) || ((bd->maximized) && (!e_config->allow_manip)) || - (bd->shading)) return; + if ((bd->shaded) || (bd->shading) || + ((bd->maximized) && (!e_config->allow_manip)) || + (bd->fullscreen)) return; if ((bd->client.border.name) && (!strcmp("borderless", bd->client.border.name))) return; + ecore_x_window_shadow_tree_flush(); - if (!bd->shaded) - { - bd->shade.x = bd->x; - bd->shade.y = bd->y; - bd->shade.dir = dir; - e_hints_window_shaded_set(bd, 1); - e_hints_window_shade_direction_set(bd, dir); + bd->shade.x = bd->x; + bd->shade.y = bd->y; + bd->shade.dir = dir; - if (e_config->border_shade_animate) - { - bd->shade.start = ecore_loop_time_get(); - bd->shading = 1; - bd->changes.shading = 1; - bd->changed = 1; + e_hints_window_shaded_set(bd, 1); + e_hints_window_shade_direction_set(bd, dir); - if (bd->shade.dir == E_DIRECTION_UP || - bd->shade.dir == E_DIRECTION_LEFT) - ecore_x_window_gravity_set(bd->client.win, ECORE_X_GRAVITY_SW); - else - ecore_x_window_gravity_set(bd->client.win, ECORE_X_GRAVITY_NE); + if (e_config->border_shade_animate) + { + bd->shade.start = ecore_loop_time_get(); + bd->shading = 1; + bd->changes.shading = 1; + bd->changed = 1; - bd->shade.anim = ecore_animator_add(_e_border_shade_animator, bd); - edje_object_signal_emit(bd->bg_object, "e,state,shading", "e"); - } + if (bd->shade.dir == E_DIRECTION_UP || + bd->shade.dir == E_DIRECTION_LEFT) + ecore_x_window_gravity_set(bd->client.win, ECORE_X_GRAVITY_SW); else - { - if (bd->shade.dir == E_DIRECTION_UP) - { - bd->h = bd->client_inset.t + bd->client_inset.b; - } - else if (bd->shade.dir == E_DIRECTION_DOWN) - { - bd->h = bd->client_inset.t + bd->client_inset.b; - bd->y = bd->y + bd->client.h; - bd->changes.pos = 1; - } - else if (bd->shade.dir == E_DIRECTION_LEFT) - { - bd->w = bd->client_inset.l + bd->client_inset.r; - } - else if (bd->shade.dir == E_DIRECTION_RIGHT) - { - bd->w = bd->client_inset.l + bd->client_inset.r; - bd->x = bd->x + bd->client.w; - bd->changes.pos = 1; - } + ecore_x_window_gravity_set(bd->client.win, ECORE_X_GRAVITY_NE); - if ((bd->shaped) || (bd->client.shaped)) - { - bd->need_shape_merge = 1; - bd->need_shape_export = 1; - } - bd->changes.size = 1; - bd->shaded = 1; - bd->changes.shaded = 1; - bd->changed = 1; - if ((bd->shaped) || (bd->client.shaped)) - { - bd->need_shape_merge = 1; - bd->need_shape_export = 1; - } - edje_object_signal_emit(bd->bg_object, "e,state,shaded", "e"); - e_border_frame_recalc(bd); - ev = calloc(1, sizeof(E_Event_Border_Resize)); - ev->border = bd; - /* The resize is added in the animator when animation complete */ - /* For non-animated, we add it immediately with the new size */ - e_object_ref(E_OBJECT(bd)); -// e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); - ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL); + bd->shade.anim = ecore_animator_add(_e_border_shade_animator, bd); + edje_object_signal_emit(bd->bg_object, "e,state,shading", "e"); + } + else + { + if (bd->shade.dir == E_DIRECTION_UP) + { + bd->h = bd->client_inset.t + bd->client_inset.b; } + else if (bd->shade.dir == E_DIRECTION_DOWN) + { + bd->h = bd->client_inset.t + bd->client_inset.b; + bd->y = bd->y + bd->client.h; + bd->changes.pos = 1; + } + else if (bd->shade.dir == E_DIRECTION_LEFT) + { + bd->w = bd->client_inset.l + bd->client_inset.r; + } + else if (bd->shade.dir == E_DIRECTION_RIGHT) + { + bd->w = bd->client_inset.l + bd->client_inset.r; + bd->x = bd->x + bd->client.w; + bd->changes.pos = 1; + } + if ((bd->shaped) || (bd->client.shaped)) + { + bd->need_shape_merge = 1; + bd->need_shape_export = 1; + } + bd->changes.size = 1; + bd->shaded = 1; + bd->changes.shaded = 1; + bd->changed = 1; + if ((bd->shaped) || (bd->client.shaped)) + { + bd->need_shape_merge = 1; + bd->need_shape_export = 1; + } + edje_object_signal_emit(bd->bg_object, "e,state,shaded", "e"); + e_border_frame_recalc(bd); + ev = calloc(1, sizeof(E_Event_Border_Resize)); + ev->border = bd; + /* The resize is added in the animator when animation complete */ + /* For non-animated, we add it immediately with the new size */ + e_object_ref(E_OBJECT(bd)); + // e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); + ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL); } + e_remember_update(bd); } @@ -1911,104 +1866,104 @@ E_OBJECT_CHECK(bd); E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE); - if ((bd->fullscreen) || ((bd->maximized) && (!e_config->allow_manip)) || - (bd->shading)) return; + if ((!bd->shaded) || (bd->shading) || + ((bd->maximized) && (!e_config->allow_manip)) || + (bd->fullscreen)) return; + ecore_x_window_shadow_tree_flush(); - if (bd->shaded) - { - bd->shade.dir = dir; - e_hints_window_shaded_set(bd, 0); - e_hints_window_shade_direction_set(bd, dir); + bd->shade.dir = dir; - if (bd->shade.dir == E_DIRECTION_UP || - bd->shade.dir == E_DIRECTION_LEFT) + e_hints_window_shaded_set(bd, 0); + e_hints_window_shade_direction_set(bd, dir); + + if (bd->shade.dir == E_DIRECTION_UP || + bd->shade.dir == E_DIRECTION_LEFT) + { + bd->shade.x = bd->x; + bd->shade.y = bd->y; + } + else + { + bd->shade.x = bd->x - bd->client.w; + bd->shade.y = bd->y - bd->client.h; + } + if (e_config->border_shade_animate) + { + bd->shade.start = ecore_loop_time_get(); + bd->shading = 1; + bd->changes.shading = 1; + bd->changed = 1; + + if (bd->shade.dir == E_DIRECTION_UP) { - bd->shade.x = bd->x; - bd->shade.y = bd->y; + ecore_x_window_gravity_set(bd->client.win, ECORE_X_GRAVITY_SW); + ecore_x_window_move_resize(bd->client.win, 0, + bd->h - (bd->client_inset.t + bd->client_inset.b) - + bd->client.h, + bd->client.w, bd->client.h); } + else if (bd->shade.dir == E_DIRECTION_LEFT) + { + ecore_x_window_gravity_set(bd->client.win, ECORE_X_GRAVITY_SW); + ecore_x_window_move_resize(bd->client.win, + bd->w - (bd->client_inset.l + bd->client_inset.r) - + bd->client.h, + 0, bd->client.w, bd->client.h); + } else + ecore_x_window_gravity_set(bd->client.win, ECORE_X_GRAVITY_NE); + + bd->shade.anim = ecore_animator_add(_e_border_shade_animator, bd); + edje_object_signal_emit(bd->bg_object, "e,state,unshading", "e"); + } + else + { + if (bd->shade.dir == E_DIRECTION_UP) { - bd->shade.x = bd->x - bd->client.w; - bd->shade.y = bd->y - bd->client.h; + bd->h = bd->client_inset.t + bd->client.h + bd->client_inset.b; } - if (e_config->border_shade_animate) + else if (bd->shade.dir == E_DIRECTION_DOWN) { - bd->shade.start = ecore_loop_time_get(); - bd->shading = 1; - bd->changes.shading = 1; - bd->changed = 1; - - if (bd->shade.dir == E_DIRECTION_UP) - { - ecore_x_window_gravity_set(bd->client.win, ECORE_X_GRAVITY_SW); - ecore_x_window_move_resize(bd->client.win, 0, - bd->h - (bd->client_inset.t + bd->client_inset.b) - - bd->client.h, - bd->client.w, bd->client.h); - } - else if (bd->shade.dir == E_DIRECTION_LEFT) - { - ecore_x_window_gravity_set(bd->client.win, ECORE_X_GRAVITY_SW); - ecore_x_window_move_resize(bd->client.win, - bd->w - (bd->client_inset.l + bd->client_inset.r) - - bd->client.h, - 0, bd->client.w, bd->client.h); - } - else - ecore_x_window_gravity_set(bd->client.win, ECORE_X_GRAVITY_NE); - - bd->shade.anim = ecore_animator_add(_e_border_shade_animator, bd); - edje_object_signal_emit(bd->bg_object, "e,state,unshading", "e"); + bd->h = bd->client_inset.t + bd->client.h + bd->client_inset.b; + bd->y = bd->y - bd->client.h; + bd->changes.pos = 1; } - else + else if (bd->shade.dir == E_DIRECTION_LEFT) { - if (bd->shade.dir == E_DIRECTION_UP) - { - bd->h = bd->client_inset.t + bd->client.h + bd->client_inset.b; - } - else if (bd->shade.dir == E_DIRECTION_DOWN) - { - bd->h = bd->client_inset.t + bd->client.h + bd->client_inset.b; - bd->y = bd->y - bd->client.h; - bd->changes.pos = 1; - } - else if (bd->shade.dir == E_DIRECTION_LEFT) - { - bd->w = bd->client_inset.l + bd->client.w + bd->client_inset.r; - } - else if (bd->shade.dir == E_DIRECTION_RIGHT) - { - bd->w = bd->client_inset.l + bd->client.w + bd->client_inset.r; - bd->x = bd->x - bd->client.w; - bd->changes.pos = 1; - } - if ((bd->shaped) || (bd->client.shaped)) - { - bd->need_shape_merge = 1; - bd->need_shape_export = 1; - } - bd->changes.size = 1; - bd->shaded = 0; - bd->changes.shaded = 1; - bd->changed = 1; - if ((bd->shaped) || (bd->client.shaped)) - { - bd->need_shape_merge = 1; - bd->need_shape_export = 1; - } - edje_object_signal_emit(bd->bg_object, "e,state,unshaded", "e"); - e_border_frame_recalc(bd); - ev = calloc(1, sizeof(E_Event_Border_Resize)); - ev->border = bd; - /* The resize is added in the animator when animation complete */ - /* For non-animated, we add it immediately with the new size */ - e_object_ref(E_OBJECT(bd)); -// e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); - ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL); + bd->w = bd->client_inset.l + bd->client.w + bd->client_inset.r; } - + else if (bd->shade.dir == E_DIRECTION_RIGHT) + { + bd->w = bd->client_inset.l + bd->client.w + bd->client_inset.r; + bd->x = bd->x - bd->client.w; + bd->changes.pos = 1; + } + if ((bd->shaped) || (bd->client.shaped)) + { + bd->need_shape_merge = 1; + bd->need_shape_export = 1; + } + bd->changes.size = 1; + bd->shaded = 0; + bd->changes.shaded = 1; + bd->changed = 1; + if ((bd->shaped) || (bd->client.shaped)) + { + bd->need_shape_merge = 1; + bd->need_shape_export = 1; + } + edje_object_signal_emit(bd->bg_object, "e,state,unshaded", "e"); + e_border_frame_recalc(bd); + ev = calloc(1, sizeof(E_Event_Border_Resize)); + ev->border = bd; + /* The resize is added in the animator when animation complete */ + /* For non-animated, we add it immediately with the new size */ + e_object_ref(E_OBJECT(bd)); + // e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); + ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL); } + e_remember_update(bd); } @@ -7376,12 +7331,15 @@ e_border_raise(bd); } if ((bd->shaded) || (bd->shading) || - (((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN) && (!e_config->allow_manip)) || (bd->fullscreen) || (bd->lock_user_size)) return 0; + if (((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN) && + (!e_config->allow_manip)) + if (grabbed) e_grabinput_get(bd->win, 0, bd->win); + if (bd->client.netwm.sync.request) { bd->client.netwm.sync.alarm = ecore_x_sync_alarm_new(bd->client.netwm.sync.counter); @@ -7433,10 +7391,13 @@ if (e_config->border_raise_on_mouse_action) e_border_raise(bd); } - if ((((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN) && (!e_config->allow_manip)) || - (bd->fullscreen) || (bd->lock_user_location)) + if ((bd->fullscreen) || (bd->lock_user_location)) return 0; + if (((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN) && + (!e_config->allow_manip)) + return 0; + if (grabbed) e_grabinput_get(bd->win, 0, bd->win); #if 0 |
From: Enlightenment S. <no-...@en...> - 2009-09-19 16:51:45
|
Log: fix last commit: do not add pending move when doing only resize Author: jeffdameth Date: 2009-09-19 09:51:37 -0700 (Sat, 19 Sep 2009) New Revision: 42567 Modified: trunk/e/src/bin/e_border.c Modified: trunk/e/src/bin/e_border.c =================================================================== --- trunk/e/src/bin/e_border.c 2009-09-19 16:26:16 UTC (rev 42566) +++ trunk/e/src/bin/e_border.c 2009-09-19 16:51:37 UTC (rev 42567) @@ -982,11 +982,11 @@ pnd = E_NEW(E_Border_Pending_Move_Resize, 1); if (!pnd) return; - pnd->move = 1; pnd->resize = 1; pnd->without_border = without_border; if (move) { + pnd->move = 1; pnd->x = x; pnd->y = y; } @@ -1012,17 +1012,17 @@ bd->pre_res_change.valid = 0; if (move) { + bd->changes.pos = 1; bd->x = x; bd->y = y; - bd->changes.pos = 1; } bd->w = w; bd->h = h; bd->client.w = bd->w - (bd->client_inset.l + bd->client_inset.r); bd->client.h = bd->h - (bd->client_inset.t + bd->client_inset.b); + bd->changes.size = 1; bd->changed = 1; - bd->changes.size = 1; if ((bd->shaped) || (bd->client.shaped)) { bd->need_shape_merge = 1; |
From: Enlightenment S. <no-...@en...> - 2009-09-19 17:08:49
|
Log: e_border use e's macros for calloc/free Author: jeffdameth Date: 2009-09-19 10:08:34 -0700 (Sat, 19 Sep 2009) New Revision: 42568 Modified: trunk/e/src/bin/e_border.c Modified: trunk/e/src/bin/e_border.c =================================================================== --- trunk/e/src/bin/e_border.c 2009-09-19 16:51:37 UTC (rev 42567) +++ trunk/e/src/bin/e_border.c 2009-09-19 17:08:34 UTC (rev 42568) @@ -662,7 +662,7 @@ if (bd->desk->zone != bd->zone) e_border_desk_set(bd, e_desk_current_get(bd->zone)); - ev = calloc(1, sizeof(E_Event_Border_Zone_Set)); + ev = E_NEW(E_Event_Border_Zone_Set, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); // e_object_breadcrumb_add(E_OBJECT(bd), "border_zone_set_event"); @@ -692,7 +692,7 @@ _e_border_hook_call(E_BORDER_HOOK_SET_DESK, bd); e_hints_window_desktop_set(bd); - ev = calloc(1, sizeof(E_Event_Border_Desk_Set)); + ev = E_NEW(E_Event_Border_Desk_Set, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); // e_object_breadcrumb_add(E_OBJECT(bd), "border_desk_set_event"); @@ -738,7 +738,7 @@ ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_MAPPED, &visible, 1); ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_MANAGED, &visible, 1); - ev = calloc(1, sizeof(E_Event_Border_Show)); + ev = E_NEW(E_Event_Border_Show, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); // e_object_breadcrumb_add(E_OBJECT(bd), "border_show_event"); @@ -799,7 +799,7 @@ { E_Event_Border_Hide *ev; - ev = calloc(1, sizeof(E_Event_Border_Hide)); + ev = E_NEW(E_Event_Border_Hide, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); // e_object_breadcrumb_add(E_OBJECT(bd), "border_hide_event"); @@ -873,7 +873,7 @@ #endif _e_border_client_move_resize_send(bd); _e_border_move_update(bd); - ev = calloc(1, sizeof(E_Event_Border_Move)); + ev = E_NEW(E_Event_Border_Move, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); // e_object_breadcrumb_add(E_OBJECT(bd), "border_move_event"); @@ -1038,14 +1038,14 @@ _e_border_resize_update(bd); if (move) { - mev = calloc(1, sizeof(E_Event_Border_Move)); + mev = E_NEW(E_Event_Border_Move, 1); mev->border = bd; e_object_ref(E_OBJECT(bd)); // e_object_breadcrumb_add(E_OBJECT(bd), "border_move_event"); ecore_event_add(E_EVENT_BORDER_MOVE, mev, _e_border_event_border_move_free, NULL); } - rev = calloc(1, sizeof(E_Event_Border_Resize)); + rev = E_NEW(E_Event_Border_Resize, 1); rev->border = bd; e_object_ref(E_OBJECT(bd)); // e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); @@ -1219,7 +1219,7 @@ } } - ev = calloc(1, sizeof(E_Event_Border_Stack)); + ev = E_NEW(E_Event_Border_Stack, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); @@ -1305,7 +1305,7 @@ } } - ev = calloc(1, sizeof(E_Event_Border_Stack)); + ev = E_NEW(E_Event_Border_Stack, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); @@ -1372,7 +1372,7 @@ } } - ev = calloc(1, sizeof(E_Event_Border_Stack)); + ev = E_NEW(E_Event_Border_Stack, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); @@ -1426,7 +1426,7 @@ } } - ev = calloc(1, sizeof(E_Event_Border_Stack)); + ev = E_NEW(E_Event_Border_Stack, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); @@ -1688,7 +1688,7 @@ edje_object_signal_emit(focused->icon_object, "e,state,unfocused", "e"); e_focus_event_focus_out(focused); - ev = calloc(1, sizeof(E_Event_Border_Focus_Out)); + ev = E_NEW(E_Event_Border_Focus_Out, 1); ev->border = focused; e_object_ref(E_OBJECT(focused)); @@ -1746,7 +1746,7 @@ focused = bd; // Let send the focus event iff the focus is set explicitly, // not via callback - ev = calloc(1, sizeof(E_Event_Border_Focus_In)); + ev = E_NEW(E_Event_Border_Focus_In, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); @@ -1760,7 +1760,7 @@ focused = NULL; // Let send the focus event iff the focus is set explicitly, // not via callback - ev = calloc(1, sizeof(E_Event_Border_Focus_Out)); + ev = E_NEW(E_Event_Border_Focus_Out, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); @@ -1847,7 +1847,7 @@ } edje_object_signal_emit(bd->bg_object, "e,state,shaded", "e"); e_border_frame_recalc(bd); - ev = calloc(1, sizeof(E_Event_Border_Resize)); + ev = E_NEW(E_Event_Border_Resize, 1); ev->border = bd; /* The resize is added in the animator when animation complete */ /* For non-animated, we add it immediately with the new size */ @@ -1955,7 +1955,7 @@ } edje_object_signal_emit(bd->bg_object, "e,state,unshaded", "e"); e_border_frame_recalc(bd); - ev = calloc(1, sizeof(E_Event_Border_Resize)); + ev = E_NEW(E_Event_Border_Resize, 1); ev->border = bd; /* The resize is added in the animator when animation complete */ /* For non-animated, we add it immediately with the new size */ @@ -3867,7 +3867,7 @@ if ((!bd->new_client) && (!stopping)) { - ev = calloc(1, sizeof(E_Event_Border_Remove)); + ev = E_NEW(E_Event_Border_Remove, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); // e_object_breadcrumb_add(E_OBJECT(bd), "border_remove_event"); @@ -5985,7 +5985,7 @@ { E_Event_Border_Add *ev; - ev = calloc(1, sizeof(E_Event_Border_Add)); + ev = E_NEW(E_Event_Border_Add, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); // e_object_breadcrumb_add(E_OBJECT(bd), "border_add_event"); @@ -6188,7 +6188,7 @@ edje_object_signal_emit(bd->bg_object, "e,state,not_urgent", "e"); E_Event_Border_Urgent_Change *ev; - ev = calloc(1, sizeof(E_Event_Border_Urgent_Change)); + ev = E_NEW(E_Event_Border_Urgent_Change, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); ecore_event_add(E_EVENT_BORDER_URGENT_CHANGE, ev, @@ -6809,7 +6809,7 @@ { E_Event_Border_Icon_Change *ev; - ev = calloc(1, sizeof(E_Event_Border_Icon_Change)); + ev = E_NEW(E_Event_Border_Icon_Change, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); // e_object_breadcrumb_add(E_OBJECT(bd), "border_icon_change_event"); @@ -6874,7 +6874,7 @@ if (send_event) // FIXME: send only if a property changed - above need to // check on that. for now - always send. { - event = calloc(1, sizeof(E_Event_Border_Property)); + event = E_NEW(E_Event_Border_Property, 1); event->border = bd; e_object_ref(E_OBJECT(bd)); ecore_event_add(E_EVENT_BORDER_PROPERTY, event, _e_border_event_border_property_free, NULL); @@ -7087,7 +7087,7 @@ e_border_frame_recalc(bd); ecore_x_window_gravity_set(bd->client.win, ECORE_X_GRAVITY_NW); - ev = calloc(1, sizeof(E_Event_Border_Resize)); + ev = E_NEW(E_Event_Border_Resize, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); // e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); @@ -7105,7 +7105,7 @@ e = ev; // e_object_breadcrumb_del(E_OBJECT(e->border), "border_resize_event"); e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void @@ -7116,7 +7116,7 @@ e = ev; // e_object_breadcrumb_del(E_OBJECT(e->border), "border_move_event"); e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void @@ -7127,7 +7127,7 @@ e = ev; // e_object_breadcrumb_del(E_OBJECT(e->border), "border_add_event"); e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void @@ -7138,7 +7138,7 @@ e = ev; // e_object_breadcrumb_del(E_OBJECT(e->border), "border_remove_event"); e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void @@ -7149,7 +7149,7 @@ e = ev; // e_object_breadcrumb_del(E_OBJECT(e->border), "border_show_event"); e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void @@ -7160,7 +7160,7 @@ e = ev; // e_object_breadcrumb_del(E_OBJECT(e->border), "border_hide_event"); e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void @@ -7171,7 +7171,7 @@ e = ev; // e_object_breadcrumb_del(E_OBJECT(e->border), "border_iconify_event"); e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void @@ -7182,7 +7182,7 @@ e = ev; // e_object_breadcrumb_del(E_OBJECT(e->border), "border_uniconify_event"); e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void @@ -7193,7 +7193,7 @@ e = ev; // e_object_breadcrumb_del(E_OBJECT(e->border), "border_stick_event"); e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void @@ -7204,7 +7204,7 @@ e = ev; // e_object_breadcrumb_del(E_OBJECT(e->border), "border_unstick_event"); e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void @@ -7216,7 +7216,7 @@ // e_object_breadcrumb_del(E_OBJECT(e->border), "border_zone_set_event"); e_object_unref(E_OBJECT(e->border)); e_object_unref(E_OBJECT(e->zone)); - free(e); + E_FREE(e); } static void @@ -7228,7 +7228,7 @@ // e_object_breadcrumb_del(E_OBJECT(e->border), "border_desk_set_event"); e_object_unref(E_OBJECT(e->border)); e_object_unref(E_OBJECT(e->desk)); - free(e); + E_FREE(e); } static void @@ -7244,7 +7244,7 @@ // e_object_breadcrumb_del(E_OBJECT(e->above), "border_raise_event.above"); e_object_unref(E_OBJECT(e->stack)); } - free(e); + E_FREE(e); } static void @@ -7255,7 +7255,7 @@ e = ev; // e_object_breadcrumb_del(E_OBJECT(e->border), "border_icon_change_event"); e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void @@ -7265,7 +7265,7 @@ e = ev; e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void @@ -7275,7 +7275,7 @@ e = ev; e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void @@ -7285,7 +7285,7 @@ e = ev; e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void @@ -7295,7 +7295,7 @@ e = ev; e_object_unref(E_OBJECT(e->border)); - free(e); + E_FREE(e); } static void |
From: Enlightenment S. <no-...@en...> - 2009-09-19 17:35:33
|
Log: remember internal windows again Author: jeffdameth Date: 2009-09-19 10:35:18 -0700 (Sat, 19 Sep 2009) New Revision: 42569 Modified: trunk/e/src/bin/e_remember.c Modified: trunk/e/src/bin/e_remember.c =================================================================== --- trunk/e/src/bin/e_remember.c 2009-09-19 17:08:34 UTC (rev 42568) +++ trunk/e/src/bin/e_remember.c 2009-09-19 17:35:18 UTC (rev 42569) @@ -683,35 +683,13 @@ E_Remember *rem; rem = e_remember_new(); - if (rem) - { - bd->remember = rem; - rem->match = 0; - - if (bd->client.icccm.name) - { - rem->name = eina_stringshare_add(bd->client.icccm.name); - rem->match |= E_REMEMBER_MATCH_NAME; - } - if (bd->client.icccm.class) - { - rem->class = eina_stringshare_add(bd->client.icccm.class); - rem->match |= E_REMEMBER_MATCH_CLASS; - } - if (bd->client.icccm.window_role) - { - rem->role = eina_stringshare_add(bd->client.icccm.window_role); - rem->match |= E_REMEMBER_MATCH_ROLE; - } - if (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_UNKNOWN) - { - rem->match |= E_REMEMBER_MATCH_TYPE; - } + if (!rem) return; - rem->match |= E_REMEMBER_MATCH_TRANSIENT; - rem->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_BORDER; - e_remember_use(rem); - e_remember_update(bd); - } + e_remember_default_match_set(rem, bd); + + rem->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_BORDER; + e_remember_use(rem); + e_remember_update(bd); + bd->remember = rem; } } |
From: Enlightenment S. <no-...@en...> - 2009-09-19 23:28:26
|
Log: fix warnings Author: jeffdameth Date: 2009-09-19 15:55:35 -0700 (Sat, 19 Sep 2009) New Revision: 42570 Modified: trunk/e/src/bin/e_hints.c Modified: trunk/e/src/bin/e_hints.c =================================================================== --- trunk/e/src/bin/e_hints.c 2009-09-19 17:35:18 UTC (rev 42569) +++ trunk/e/src/bin/e_hints.c 2009-09-19 22:55:35 UTC (rev 42570) @@ -1037,6 +1037,10 @@ break; case ECORE_X_ACTION_CLOSE: break; + case ECORE_X_ACTION_ABOVE: + break; + case ECORE_X_ACTION_BELOW: + break; } } @@ -1095,6 +1099,10 @@ case ECORE_X_ACTION_CLOSE: bd->client.netwm.action.close = 1; break; + case ECORE_X_ACTION_ABOVE: + break; + case ECORE_X_ACTION_BELOW: + break; } } free(action); |
From: Enlightenment S. <no-...@en...> - 2009-09-21 20:07:42
|
Log: fix warnings Author: jeffdameth Date: 2009-09-21 13:07:28 -0700 (Mon, 21 Sep 2009) New Revision: 42605 Modified: trunk/e/src/bin/e_int_gadcon_config.c Modified: trunk/e/src/bin/e_int_gadcon_config.c =================================================================== --- trunk/e/src/bin/e_int_gadcon_config.c 2009-09-21 19:00:43 UTC (rev 42604) +++ trunk/e/src/bin/e_int_gadcon_config.c 2009-09-21 20:07:28 UTC (rev 42605) @@ -15,7 +15,7 @@ static void _cb_add(void *data, void *data2); static void _cb_del(void *data, void *data2); static void _set_description(void *data, const char *name); -static int _gad_list_sort(void *data1, void *data2); +//static int _gad_list_sort(void *data1, void *data2); struct _E_Config_Dialog_Data { @@ -393,6 +393,8 @@ efreet_desktop_free(desk); } +/* FIXME unused */ +#if 0 static int _gad_list_sort(void *data1, void *data2) { @@ -410,3 +412,4 @@ return (strcmp(lbl1, lbl2)); } +#endif |
From: Enlightenment S. <no-...@en...> - 2009-09-21 20:19:25
|
Log: fix warnings Author: jeffdameth Date: 2009-09-21 13:19:14 -0700 (Mon, 21 Sep 2009) New Revision: 42606 Modified: trunk/e/src/bin/e_shelf.c Modified: trunk/e/src/bin/e_shelf.c =================================================================== --- trunk/e/src/bin/e_shelf.c 2009-09-21 20:07:28 UTC (rev 42605) +++ trunk/e/src/bin/e_shelf.c 2009-09-21 20:19:14 UTC (rev 42606) @@ -1564,6 +1564,10 @@ hide_max = es->w - es->hidden_state_size; if (es->hide_origin == -1) es->hide_origin = es->x; break; + case E_GADCON_ORIENT_FLOAT: + case E_GADCON_ORIENT_HORIZ: + case E_GADCON_ORIENT_VERT: + break; } step = (hide_max / e_config->framerate) / es->cfg->hide_duration; @@ -1614,6 +1618,10 @@ case E_GADCON_ORIENT_CORNER_RT: e_shelf_move(es, es->hide_origin + es->hide_step, es->y); break; + case E_GADCON_ORIENT_FLOAT: + case E_GADCON_ORIENT_HORIZ: + case E_GADCON_ORIENT_VERT: + break; } return 1; |