backport previous internal dialog redraw fix

SVN revision: 82536
This commit is contained in:
Mike Blumenkrantz 2013-01-10 09:31:09 +00:00
parent 4fc258e760
commit e69c53fc50
4 changed files with 30 additions and 13 deletions

View File

@ -1,3 +1,7 @@
2013-01-10 Mike Blumenkrantz
* fixed bug where internal dialogs would not redraw after unfullscreening
2013-01-10 Deon Thomas
* Fixed bug with desktop config profile where conf module version variable was misnamed

1
NEWS
View File

@ -26,3 +26,4 @@ Fixes:
* Tasks gadgets now apply the selected style
* fixed bug where window border insets were not applied to initial positioning geometry, causing them to be placed incorrectly
* Fixed bug with desktop config profile where conf module version variable was misnamed
* fixed bug where internal dialogs would not redraw after unfullscreening

View File

@ -3159,10 +3159,10 @@ e_border_unfullscreen(E_Border *bd)
screen_size.width = -1;
screen_size.height = -1;
}
e_border_move_resize(bd,
bd->saved.x + bd->zone->x,
bd->saved.y + bd->zone->y,
bd->saved.w, bd->saved.h);
_e_border_move_resize_internal(bd,
bd->zone->x + bd->saved.x,
bd->zone->y + bd->saved.y,
bd->saved.w, bd->saved.h, 0, 1);
if (bd->saved.maximized)
e_border_maximize(bd, (e_config->maximize_policy & E_MAXIMIZE_TYPE) |
@ -7234,7 +7234,7 @@ _e_border_eval0(E_Border *bd)
bd->changes.border = 0;
/* fetch any info queued to be fetched */
if (bd->client.netwm.fetch.state)
if (bd->changes.prop || bd->client.netwm.fetch.state)
{
e_hints_window_state_get(bd);
bd->client.netwm.fetch.state = 0;
@ -7337,13 +7337,13 @@ _e_border_eval0(E_Border *bd)
bd->changes.icon = 1;
rem_change = 1;
}
if (bd->client.icccm.fetch.state)
if (bd->changes.prop || bd->client.icccm.fetch.state)
{
bd->client.icccm.state = ecore_x_icccm_state_get(bd->client.win);
bd->client.icccm.fetch.state = 0;
rem_change = 1;
}
if (bd->client.e.fetch.state)
if (bd->changes.prop || bd->client.e.fetch.state)
{
e_hints_window_e_state_get(bd);
bd->client.e.fetch.state = 0;
@ -7412,7 +7412,7 @@ _e_border_eval0(E_Border *bd)
bd->client.e.fetch.profile = 0;
}
#endif
if (bd->client.netwm.fetch.type)
if (bd->changes.prop || bd->client.netwm.fetch.type)
{
e_hints_window_type_get(bd);
if ((!bd->lock_border) || (!bd->client.border.name))
@ -7469,7 +7469,7 @@ _e_border_eval0(E_Border *bd)
bd->client.icccm.fetch.command = 0;
rem_change = 1;
}
if (bd->client.icccm.fetch.hints)
if (bd->changes.prop || bd->client.icccm.fetch.hints)
{
Eina_Bool accepts_focus, is_urgent;
@ -7501,7 +7501,7 @@ _e_border_eval0(E_Border *bd)
bd->client.icccm.fetch.hints = 0;
rem_change = 1;
}
if (bd->client.icccm.fetch.size_pos_hints)
if (bd->changes.prop || bd->client.icccm.fetch.size_pos_hints)
{
Eina_Bool request_pos;
@ -7913,7 +7913,7 @@ _e_border_eval0(E_Border *bd)
}
bd->need_shape_merge = 1;
}
if (bd->client.mwm.fetch.hints)
if (bd->changes.prop || bd->client.mwm.fetch.hints)
{
int pb;
@ -7996,7 +7996,7 @@ _e_border_eval0(E_Border *bd)
fprintf(stderr, "internal position has been updated [%i, %i]\n", bd->client.e.state.video_position.x, bd->client.e.state.video_position.y);
}
if (bd->client.netwm.update.state)
if (bd->changes.prop || bd->client.netwm.update.state)
{
e_hints_window_state_set(bd);
/* Some stats might change the border, like modal */
@ -8401,6 +8401,7 @@ _e_border_eval0(E_Border *bd)
bd->client.border.changed = 0;
}
bd->changes.prop = 0;
if (rem_change) e_remember_update(bd);
if (change_urgent)
@ -9147,7 +9148,6 @@ _e_border_eval(E_Border *bd)
bd->new_client = 0;
bd->changed = 0;
bd->changes.stack = 0;
bd->changes.prop = 0;
if ((bd->take_focus) || (bd->want_focus))
{

View File

@ -8,6 +8,7 @@ static void _e_win_state_update(E_Win *win);
static void _e_win_cb_move(Ecore_Evas *ee);
static void _e_win_cb_resize(Ecore_Evas *ee);
static void _e_win_cb_delete(Ecore_Evas *ee);
static void _e_win_cb_state(Ecore_Evas *ee);
/* local subsystem globals */
static Eina_List *wins = NULL;
@ -225,6 +226,7 @@ e_win_new(E_Container *con)
ecore_evas_callback_move_set(win->ecore_evas, _e_win_cb_move);
ecore_evas_callback_resize_set(win->ecore_evas, _e_win_cb_resize);
ecore_evas_callback_delete_request_set(win->ecore_evas, _e_win_cb_delete);
ecore_evas_callback_state_change_set(win->ecore_evas, _e_win_cb_state);
win->evas = ecore_evas_get(win->ecore_evas);
ecore_evas_name_class_set(win->ecore_evas, "E", "_e_internal_window");
ecore_evas_title_set(win->ecore_evas, "E");
@ -698,3 +700,13 @@ _e_win_cb_delete(Ecore_Evas *ee)
if (win->cb_delete) win->cb_delete(win);
}
static void
_e_win_cb_state(Ecore_Evas *ee)
{
E_Win *win;
win = ecore_evas_data_get(ee, "E_Win");
if (!win) return;
if (!win->border) return;
win->border->changed = win->border->changes.size = 1;
}