revert patch. never tested by submiter.

SVN revision: 33950
This commit is contained in:
Carsten Haitzler 2008-03-07 10:35:58 +00:00
parent b02b82e4b4
commit 5551c78397
4 changed files with 50 additions and 14 deletions

View File

@ -3266,6 +3266,8 @@ _e_border_free(E_Border *bd)
free(bd->client.netwm.icons[i].data); free(bd->client.netwm.icons[i].data);
free(bd->client.netwm.icons); free(bd->client.netwm.icons);
} }
if (bd->client.netwm.extra_types)
free(bd->client.netwm.extra_types);
if (bd->client.border.name) evas_stringshare_del(bd->client.border.name); if (bd->client.border.name) evas_stringshare_del(bd->client.border.name);
if (bd->bordername) evas_stringshare_del(bd->bordername); if (bd->bordername) evas_stringshare_del(bd->bordername);
if (bd->client.icccm.title) free(bd->client.icccm.title); if (bd->client.icccm.title) free(bd->client.icccm.title);
@ -5054,6 +5056,7 @@ _e_border_eval(E_Border *bd)
int rem_change = 0; int rem_change = 0;
int send_event = 1; int send_event = 1;
_e_border_hook_call(E_BORDER_HOOK_EVAL_PRE_FETCH, bd);
/* fetch any info queued to be fetched */ /* fetch any info queued to be fetched */
if (bd->client.icccm.fetch.client_leader) if (bd->client.icccm.fetch.client_leader)
{ {
@ -5812,6 +5815,7 @@ _e_border_eval(E_Border *bd)
} }
_e_border_hook_call(E_BORDER_HOOK_EVAL_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);
if ((bd->client.border.changed) && (!bd->shaded) && if ((bd->client.border.changed) && (!bd->shaded) &&
(!(((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN)))) (!(((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN))))
@ -5990,6 +5994,9 @@ _e_border_eval(E_Border *bd)
bd->need_reparent = 0; bd->need_reparent = 0;
} }
_e_border_hook_call(E_BORDER_HOOK_EVAL_POST_BORDER_ASSIGN, bd);
_e_border_hook_call(E_BORDER_HOOK_EVAL_PRE_NEW_BORDER, bd);
if (bd->new_client) if (bd->new_client)
{ {
// printf("##- NEW CLIENT SETUP 0x%x\n", bd->client.win); // printf("##- NEW CLIENT SETUP 0x%x\n", bd->client.win);
@ -6210,6 +6217,8 @@ _e_border_eval(E_Border *bd)
} }
} }
_e_border_hook_call(E_BORDER_HOOK_EVAL_POST_NEW_BORDER, bd);
/* effect changes to the window border itself */ /* effect changes to the window border itself */
if ((bd->changes.shading)) if ((bd->changes.shading))
{ {

View File

@ -80,7 +80,12 @@ typedef enum _E_Window_Placement
typedef enum _E_Border_Hook_Point typedef enum _E_Border_Hook_Point
{ {
E_BORDER_HOOK_EVAL_POST_FETCH E_BORDER_HOOK_EVAL_PRE_FETCH,
E_BORDER_HOOK_EVAL_POST_FETCH,
E_BORDER_HOOK_EVAL_PRE_BORDER_ASSIGN,
E_BORDER_HOOK_EVAL_POST_BORDER_ASSIGN,
E_BORDER_HOOK_EVAL_PRE_NEW_BORDER,
E_BORDER_HOOK_EVAL_POST_NEW_BORDER,
} E_Border_Hook_Point; } E_Border_Hook_Point;
typedef struct _E_Border E_Border; typedef struct _E_Border E_Border;
@ -296,6 +301,8 @@ struct _E_Border
} action; } action;
Ecore_X_Window_Type type; Ecore_X_Window_Type type;
Ecore_X_Window_Type *extra_types;
int extra_types_num;
int startup_id; int startup_id;
struct { struct {

View File

@ -656,7 +656,36 @@ e_hints_window_type_set(E_Border *bd)
EAPI void EAPI void
e_hints_window_type_get(E_Border *bd) e_hints_window_type_get(E_Border *bd)
{ {
ecore_x_netwm_window_type_get(bd->client.win, &bd->client.netwm.type); Ecore_X_Window_Type *types = NULL;
int num, i;
num = ecore_x_netwm_window_types_get(bd->client.win, &types);
if (bd->client.netwm.extra_types)
{
free(bd->client.netwm.extra_types);
bd->client.netwm.extra_types = NULL;
bd->client.netwm.extra_types_num = 0;
}
if (num == 0)
{
bd->client.netwm.type = ECORE_X_WINDOW_TYPE_UNKNOWN;
}
else
{
bd->client.netwm.type = types[0];
if (num > 1)
{
bd->client.netwm.extra_types =
malloc((num - 1) * sizeof(Ecore_X_Window_Type));
if (bd->client.netwm.extra_types)
{
for (i = 1; i < num; i++)
bd->client.netwm.extra_types[i - 1] = types[i];
bd->client.netwm.extra_types_num = num - 1;
}
}
free(types);
}
} }
EAPI void EAPI void

View File

@ -592,24 +592,15 @@ e_util_filename_escape(const char *filename)
while (*p) while (*p)
{ {
if ((q - buf) > 4090) return NULL; if ((q - buf) > 4090) return NULL;
if (*p == '\'') if (
{
*q= '\'';
q++;
*q = '\\';
q++;
*q= '\'';
q++;
}
else if (
(*p == ' ') || (*p == '\t') || (*p == '\n') || (*p == ' ') || (*p == '\t') || (*p == '\n') ||
(*p == '\\') || (*p == '\"') || (*p == '\?') || (*p == '\\') || (*p == '\'') || (*p == '\"') ||
(*p == ';') || (*p == '!') || (*p == '#') || (*p == ';') || (*p == '!') || (*p == '#') ||
(*p == '$') || (*p == '%') || (*p == '&') || (*p == '$') || (*p == '%') || (*p == '&') ||
(*p == '*') || (*p == '(') || (*p == ')') || (*p == '*') || (*p == '(') || (*p == ')') ||
(*p == '[') || (*p == ']') || (*p == '{') || (*p == '[') || (*p == ']') || (*p == '{') ||
(*p == '}') || (*p == '|') || (*p == '<') || (*p == '}') || (*p == '|') || (*p == '<') ||
(*p == '>') (*p == '>') || (*p == '?')
) )
{ {
*q = '\\'; *q = '\\';