forked from enlightenment/enlightenment
add support for new netwm csd X atoms
nothing uses these yet so there's no way to test them. fix T1963
This commit is contained in:
parent
9ff9de799a
commit
701e2d914a
|
@ -90,3 +90,7 @@ _NET_FRAME_EXTENTS [X]
|
||||||
_NET_WM_PING [X]
|
_NET_WM_PING [X]
|
||||||
_NET_WM_SYNC_REQUEST [X]
|
_NET_WM_SYNC_REQUEST [X]
|
||||||
_NET_WM_SYNC_REQUEST_COUNTER [X]
|
_NET_WM_SYNC_REQUEST_COUNTER [X]
|
||||||
|
|
||||||
|
/* Random */
|
||||||
|
_NET_WM_SHOW_WINDOW_MENU [X]
|
||||||
|
_NET_WM_PERFORM_BUTTON_ACTION [X]
|
||||||
|
|
|
@ -1945,6 +1945,57 @@ _e_comp_x_message(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_Cl
|
||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (ev->message_type == ATM_NETWM_SHOW_WINDOW_MENU)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
message_type = _NET_WM_SHOW_WINDOW_MENU
|
||||||
|
window = window for which the menu should be shown
|
||||||
|
format = 32
|
||||||
|
data.l[0] = xinput2_device_id
|
||||||
|
data.l[1] = root_x
|
||||||
|
data.l[2] = root_y
|
||||||
|
other data.l[] elements = 0
|
||||||
|
*/
|
||||||
|
|
||||||
|
int x, y;
|
||||||
|
|
||||||
|
x = ev->data.l[1];
|
||||||
|
y = ev->data.l[2];
|
||||||
|
e_int_client_menu_show(ec,
|
||||||
|
e_comp_canvas_x_root_adjust(ec->comp, x),
|
||||||
|
e_comp_canvas_y_root_adjust(ec->comp, y),
|
||||||
|
0, 0);
|
||||||
|
}
|
||||||
|
else if (ev->message_type == ATM_NETWM_PERFORM_BUTTON_ACTION)
|
||||||
|
{
|
||||||
|
char emission[128];
|
||||||
|
/*
|
||||||
|
message_type = _NET_WM_PERFORM_BUTTON_ACTION
|
||||||
|
window = window for which the action should be performed
|
||||||
|
format = 32
|
||||||
|
data.l[0] = xinput2_device_id
|
||||||
|
data.l[1] = root_x
|
||||||
|
data.l[2] = root_y
|
||||||
|
data.l[3] = button
|
||||||
|
data.l[4] = timestamp
|
||||||
|
*/
|
||||||
|
if (e_dnd_active() || ec->iconic) return ECORE_CALLBACK_RENEW;
|
||||||
|
switch (ev->data.l[3])
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 3:
|
||||||
|
snprintf(emission, sizeof(emission), "mouse,down,%d", (int)ev->data.l[3]);
|
||||||
|
e_bindings_signal_handle(E_BINDING_CONTEXT_WINDOW, E_OBJECT(ec), emission, "e.event.titlebar");
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
e_bindings_signal_handle(E_BINDING_CONTEXT_WINDOW, E_OBJECT(ec), "mouse,wheel,?,-1", "e.event.titlebar");
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
e_bindings_signal_handle(E_BINDING_CONTEXT_WINDOW, E_OBJECT(ec), "mouse,wheel,?,1", "e.event.titlebar");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,9 @@ EAPI Ecore_X_Atom ATM_GNOME_SM_PROXY = 0;
|
||||||
EAPI Ecore_X_Atom ATM_ENLIGHTENMENT_COMMS = 0;
|
EAPI Ecore_X_Atom ATM_ENLIGHTENMENT_COMMS = 0;
|
||||||
EAPI Ecore_X_Atom ATM_ENLIGHTENMENT_VERSION = 0;
|
EAPI Ecore_X_Atom ATM_ENLIGHTENMENT_VERSION = 0;
|
||||||
EAPI Ecore_X_Atom ATM_ENLIGHTENMENT_SCALE = 0;
|
EAPI Ecore_X_Atom ATM_ENLIGHTENMENT_SCALE = 0;
|
||||||
|
|
||||||
|
EAPI Ecore_X_Atom ATM_NETWM_SHOW_WINDOW_MENU = 0;
|
||||||
|
EAPI Ecore_X_Atom ATM_NETWM_PERFORM_BUTTON_ACTION = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
EINTERN void
|
EINTERN void
|
||||||
|
@ -26,23 +29,27 @@ e_hints_init(Ecore_Window root, Ecore_Window propwin)
|
||||||
"GNOME_SM_PROXY",
|
"GNOME_SM_PROXY",
|
||||||
"ENLIGHTENMENT_COMMS",
|
"ENLIGHTENMENT_COMMS",
|
||||||
"ENLIGHTENMENT_VERSION",
|
"ENLIGHTENMENT_VERSION",
|
||||||
"ENLIGHTENMENT_SCALE"
|
"ENLIGHTENMENT_SCALE",
|
||||||
|
"_NET_WM_SHOW_WINDOW_MENU",
|
||||||
|
"_NET_WM_PERFORM_BUTTON_ACTION",
|
||||||
};
|
};
|
||||||
Ecore_X_Atom atoms[6];
|
Ecore_X_Atom atoms[EINA_C_ARRAY_LENGTH(atom_names)];
|
||||||
Ecore_X_Atom supported[43];
|
Ecore_X_Atom supported[45];
|
||||||
int supported_num;
|
int supported_num;
|
||||||
Ecore_X_Window win, twin;
|
Ecore_X_Window win, twin;
|
||||||
int nwins;
|
int nwins;
|
||||||
char *name;
|
char *name;
|
||||||
double ts;
|
double ts;
|
||||||
|
|
||||||
ecore_x_atoms_get(atom_names, 6, atoms);
|
ecore_x_atoms_get(atom_names, EINA_C_ARRAY_LENGTH(atom_names), atoms);
|
||||||
ATM__QTOPIA_SOFT_MENU = atoms[0];
|
ATM__QTOPIA_SOFT_MENU = atoms[0];
|
||||||
ATM__QTOPIA_SOFT_MENUS = atoms[1];
|
ATM__QTOPIA_SOFT_MENUS = atoms[1];
|
||||||
ATM_GNOME_SM_PROXY = atoms[2];
|
ATM_GNOME_SM_PROXY = atoms[2];
|
||||||
ATM_ENLIGHTENMENT_COMMS = atoms[3];
|
ATM_ENLIGHTENMENT_COMMS = atoms[3];
|
||||||
ATM_ENLIGHTENMENT_VERSION = atoms[4];
|
ATM_ENLIGHTENMENT_VERSION = atoms[4];
|
||||||
ATM_ENLIGHTENMENT_SCALE = atoms[5];
|
ATM_ENLIGHTENMENT_SCALE = atoms[5];
|
||||||
|
ATM_NETWM_SHOW_WINDOW_MENU = atoms[6];
|
||||||
|
ATM_NETWM_PERFORM_BUTTON_ACTION = atoms[7];
|
||||||
|
|
||||||
supported_num = 0;
|
supported_num = 0;
|
||||||
/* Set what hints we support */
|
/* Set what hints we support */
|
||||||
|
@ -121,6 +128,9 @@ e_hints_init(Ecore_Window root, Ecore_Window propwin)
|
||||||
supported[supported_num++] = ECORE_X_ATOM_E_VIDEO_PARENT;
|
supported[supported_num++] = ECORE_X_ATOM_E_VIDEO_PARENT;
|
||||||
supported[supported_num++] = ECORE_X_ATOM_E_VIDEO_POSITION;
|
supported[supported_num++] = ECORE_X_ATOM_E_VIDEO_POSITION;
|
||||||
|
|
||||||
|
supported[supported_num++] = ATM_NETWM_SHOW_WINDOW_MENU;
|
||||||
|
supported[supported_num++] = ATM_NETWM_PERFORM_BUTTON_ACTION;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,8 @@ extern EAPI Ecore_X_Atom ATM_GNOME_SM_PROXY;
|
||||||
extern EAPI Ecore_X_Atom ATM_ENLIGHTENMENT_COMMS;
|
extern EAPI Ecore_X_Atom ATM_ENLIGHTENMENT_COMMS;
|
||||||
extern EAPI Ecore_X_Atom ATM_ENLIGHTENMENT_VERSION;
|
extern EAPI Ecore_X_Atom ATM_ENLIGHTENMENT_VERSION;
|
||||||
extern EAPI Ecore_X_Atom ATM_ENLIGHTENMENT_SCALE;
|
extern EAPI Ecore_X_Atom ATM_ENLIGHTENMENT_SCALE;
|
||||||
|
extern EAPI Ecore_X_Atom ATM_NETWM_SHOW_WINDOW_MENU;
|
||||||
|
extern EAPI Ecore_X_Atom ATM_NETWM_PERFORM_BUTTON_ACTION;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue