diff --git a/src/border.c b/src/border.c index 0b889584b..97693d464 100644 --- a/src/border.c +++ b/src/border.c @@ -200,9 +200,6 @@ e_configure_request(Ecore_Event * ev) if (b->current.shaded < 1) b->current.shaded = 1; } -/* b->client.w = e->w; - b->client.h = e->h; -*/ b->current.requested.w = e->w + pl + pr; b->current.requested.h = e->h + pt + pb; } @@ -271,6 +268,7 @@ e_property(Ecore_Event * ev) if (b) { e_icccm_handle_property_change(e->atom, b); + e_border_apply_border(b); } } current_ev = NULL; @@ -462,23 +460,6 @@ e_focus_in(Ecore_Event * ev) b->click_grab = NULL; } } - /* FUCKED UP: - * look at this debug output: - * f in 800003 - * to: Fukeneh! - * ungrab ctf buttons - * f out 400003 - * from: F..... Oath! - * grab dem buttonz! - * f in 400003 - * to: F..... Oath! - * ungrab ctf buttons - * - * first the focus automatically reverts to Fukeneh (the window) - * now i click on F...... Oath - but i get aofocus out event from - * F..... Oath - it had no focus... but i get a focus out.. i should - * be getting a focus out for fukeneh! - */ } current_ev = NULL; @@ -590,9 +571,7 @@ e_mouse_down(Ecore_Event * ev) { Evas evas; int x, y; - - - + evas = b->evas.l; ecore_window_get_root_relative_location(evas_get_window(evas), &x, &y); @@ -702,6 +681,7 @@ e_mouse_move(Ecore_Event * ev) mouse_x = e->rx; mouse_y = e->ry; b = e_border_find_by_window(e->win); +/* D("motion... %3.8f\n", ecore_get_time());*/ if (b) { if (e->win == b->win.main) e_cb_border_mouse_move(b, ev); @@ -1133,10 +1113,14 @@ e_cb_border_mouse_down(E_Border *b, Ecore_Event *e) x, y, border_mouse_x, border_mouse_y); if (!e_action_start(class, act, bt, NULL, mods, E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y)) - ecore_pointer_ungrab(((Ecore_Event_Mouse_Down *)(e->event))->time); + { + ecore_pointer_ungrab(((Ecore_Event_Mouse_Down *)(e->event))->time); + } else - ecore_pointer_grab(((Ecore_Event_Mouse_Down *)(e->event))->win, - ((Ecore_Event_Mouse_Down *)(e->event))->time); + { + ecore_pointer_grab(((Ecore_Event_Mouse_Down *)(e->event))->win, + ((Ecore_Event_Mouse_Down *)(e->event))->time); + } } D_RETURN; @@ -1295,17 +1279,20 @@ e_border_apply_border(E_Border *b) if ((!b->client.titlebar) && (!b->client.border)) style = "borderless"; if (b->border_style) style = b->border_style; - if (b->current.selected) prop_selected = 1; - if (b->current.shaded == b->client.h) prop_shaded = 1; - if (b->client.sticky) prop_sticky = 1; + if (b->current.selected) prop_selected = 1; + if ((b->current.shaded > 0) && + (b->current.shaded == b->client.h)) prop_shaded = 1; + if (b->client.sticky) prop_sticky = 1; sprintf(border, "selected-%i.sticky-%i.shaded-%i.bits.db", prop_selected, prop_sticky, prop_shaded); borders = e_config_get("borders"); sprintf(buf, "%s%s/%s", borders, style, border); + /* if it's not changed - abort and dont do anything */ if ((b->border_file) && (!strcmp(buf, b->border_file))) D_RETURN; + IF_FREE(b->border_file); e_strdup(b->border_file, buf); @@ -2180,18 +2167,8 @@ e_border_update(E_Border *b) size_changed = 1; if ((size_changed) && (b->current.has_shape)) shape_changed = 1; - if (b->bits.new) - { - ecore_window_gravity_set(b->win.container, StaticGravity); - border_changed = 1; - } - if ((border_changed) && (b->current.has_shape)) - shape_changed = 1; - if (b->current.visible != b->previous.visible) - visibility_changed = 1; if (b->current.selected != b->previous.selected) state_changed = 1; - if (state_changed) { e_border_apply_border(b); @@ -2202,6 +2179,16 @@ e_border_update(E_Border *b) size_changed = 1; } } + if (b->bits.new) + { + ecore_window_gravity_set(b->win.container, StaticGravity); + border_changed = 1; + } + if ((border_changed) && (b->current.has_shape)) + shape_changed = 1; + if (b->current.visible != b->previous.visible) + visibility_changed = 1; + if ((location_changed) && (!size_changed)) { int pl, pr, pt, pb; diff --git a/src/icccm.c b/src/icccm.c index f852b21d2..4876b5e07 100644 --- a/src/icccm.c +++ b/src/icccm.c @@ -353,7 +353,6 @@ e_icccm_get_mwm_hints(Window win, E_Border *b) if (mwmhints->decorations & MWM_DECOR_BORDER) b->client.border = 1; if (mwmhints->decorations & MWM_DECOR_RESIZEH) b->client.handles = 1; if (mwmhints->decorations & MWM_DECOR_TITLE) b->client.titlebar = 1; - e_border_apply_border(b); } FREE(mwmhints); } diff --git a/src/view.c b/src/view.c index b16890e23..ce6d076c9 100644 --- a/src/view.c +++ b/src/view.c @@ -50,10 +50,13 @@ e_view_write_icon_xy_timeout(int val, void *data) E_View *v; Evas_List l; E_Icon *ic; + double t_in; D_ENTER; v = data; + /* FIXME: this is a problem if we have 1000's of icons */ + t_in = ecore_get_time(); for (l = v->icons; l; l = l->next) { ic = l->data; @@ -72,6 +75,14 @@ e_view_write_icon_xy_timeout(int val, void *data) "/pos/y", buf, ic->geom.y); } + if ((ecore_get_time() - t_in) > 0.10) + { + char name[PATH_MAX]; + + sprintf(name, "icon_xy_record.%s", v->dir); + ecore_add_event_timer(name, 0.01, e_view_write_icon_xy_timeout, 0, v); + D_RETURN; + } } D_RETURN; @@ -758,6 +769,7 @@ e_view_geometry_record(E_View *v) { int left, top; + D("Record geom for view\n"); ecore_window_get_frame_size(v->win.base, &left, NULL, &top, NULL); efsd_set_metadata_int(e_fs_get_connection(), @@ -841,6 +853,7 @@ e_configure(Ecore_Event * ev) D("wm generated %i %i, %ix%i\n", e->x, e->y, e->w, e->h); if ((e->x != v->location.x) || (e->y != v->location.y)) { + D("new spot!\n"); v->location.x = e->x; v->location.y = e->y; e_view_queue_geometry_record(v); @@ -1320,8 +1333,9 @@ e_view_handle_fs_restart(void *data) "/view/w", v->dir, EFSD_INT); v->geom_get.h = efsd_get_metadata(e_fs_get_connection(), "/view/h", v->dir, EFSD_INT); - v->getbg = efsd_get_metadata(e_fs_get_connection(), "/view/background", v->dir, EFSD_STRING); - } + v->getbg = efsd_get_metadata(e_fs_get_connection(), + "/view/background", v->dir, EFSD_STRING); + } { EfsdOptions *ops; @@ -1758,8 +1772,9 @@ e_view_set_dir(E_View *v, char *dir) "/view/w", v->dir, EFSD_INT); v->geom_get.h = efsd_get_metadata(e_fs_get_connection(), "/view/h", v->dir, EFSD_INT); + v->getbg = efsd_get_metadata(e_fs_get_connection(), + "/view/background", v->dir, EFSD_STRING); v->geom_get.busy = 1; - v->getbg = efsd_get_metadata(e_fs_get_connection(), "/view/background", v->dir, EFSD_STRING); { EfsdOptions *ops;