mwm hints being done properly...

SVN revision: 12257
This commit is contained in:
Carsten Haitzler 2004-11-25 14:09:49 +00:00
parent 462b2aa404
commit 70d83c18a7
2 changed files with 27 additions and 6 deletions

View File

@ -163,7 +163,7 @@ e_border_new(E_Container *con, Ecore_X_Window win, int first_map)
bd->client.icccm.fetch.hints = 1; bd->client.icccm.fetch.hints = 1;
bd->client.icccm.fetch.size_pos_hints = 1; bd->client.icccm.fetch.size_pos_hints = 1;
bd->client.icccm.fetch.protocol = 1; bd->client.icccm.fetch.protocol = 1;
bd->client.mwm.fetch.borderless = 1; bd->client.mwm.fetch.hints = 1;
bd->client.netwm.fetch.pid = 1; bd->client.netwm.fetch.pid = 1;
bd->client.netwm.fetch.desktop = 1; bd->client.netwm.fetch.desktop = 1;
bd->client.border.changed = 1; bd->client.border.changed = 1;
@ -607,7 +607,7 @@ _e_border_cb_window_property(void *data, int ev_type, void *ev)
bd->client.icccm.fetch.hints = 1; bd->client.icccm.fetch.hints = 1;
bd->client.icccm.fetch.size_pos_hints = 1; bd->client.icccm.fetch.size_pos_hints = 1;
bd->client.icccm.fetch.protocol = 1; bd->client.icccm.fetch.protocol = 1;
bd->client.mwm.fetch.borderless = 1; bd->client.mwm.fetch.hints = 1;
bd->client.netwm.fetch.pid = 1; bd->client.netwm.fetch.pid = 1;
bd->client.netwm.fetch.desktop = 1; bd->client.netwm.fetch.desktop = 1;
// bd->client.border.changed = 1; // bd->client.border.changed = 1;
@ -1114,13 +1114,27 @@ _e_border_eval(E_Border *bd)
} }
bd->client.icccm.fetch.protocol = 0; bd->client.icccm.fetch.protocol = 0;
} }
if (bd->client.mwm.fetch.borderless) if (bd->client.mwm.fetch.hints)
{ {
int pb; int pb;
bd->client.mwm.exists =
ecore_x_mwm_hints_get(bd->client.win,
&bd->client.mwm.func,
&bd->client.mwm.decor,
&bd->client.mwm.input);
pb = bd->client.mwm.borderless; pb = bd->client.mwm.borderless;
bd->client.mwm.borderless = ecore_x_window_prop_borderless_get(bd->client.win); bd->client.mwm.borderless = 0;
bd->client.mwm.fetch.borderless = 0; if (bd->client.mwm.exists)
{
printf("MWM hints!\n");
if ((!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_ALL)) &&
(!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_TITLE)) &&
(!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_BORDER)))
{
bd->client.mwm.borderless = 1;
}
}
if (bd->client.mwm.borderless != pb) if (bd->client.mwm.borderless != pb)
{ {
if (bd->client.border.name) free(bd->client.border.name); if (bd->client.border.name) free(bd->client.border.name);
@ -1128,8 +1142,11 @@ _e_border_eval(E_Border *bd)
bd->client.border.name = strdup("borderless"); bd->client.border.name = strdup("borderless");
else else
bd->client.border.name = strdup("default"); bd->client.border.name = strdup("default");
if (bd->client.mwm.borderless)
printf("client %s borderless\n", bd->client.icccm.title);
bd->client.border.changed = 1; bd->client.border.changed = 1;
} }
bd->client.mwm.fetch.hints = 0;
} }
if (bd->client.netwm.fetch.pid) if (bd->client.netwm.fetch.pid)
{ {

View File

@ -85,9 +85,13 @@ struct _E_Border
} fetch; } fetch;
} icccm; } icccm;
struct { struct {
Ecore_X_MWM_Hint_Func func;
Ecore_X_MWM_Hint_Decor decor;
Ecore_X_MWM_Hint_Input input;
unsigned char exists : 1;
unsigned char borderless : 1; unsigned char borderless : 1;
struct { struct {
unsigned int borderless : 1; unsigned int hints : 1;
} fetch; } fetch;
} mwm; } mwm;
struct { struct {