check wm supporting hints for mwm:
make borderless also work with window managers that do not pretend to be mwm SVN revision: 42896
This commit is contained in:
parent
07e0c8b22b
commit
a26cde7b3d
|
@ -363,6 +363,46 @@ set_pointer_colors(const char *fg_name, const char *bg_name)
|
||||||
XRecolorCursor(Xdisplay, TermWin_cursor, &fg, &bg);
|
XRecolorCursor(Xdisplay, TermWin_cursor, &fg, &bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
check_mwm_supported(void)
|
||||||
|
{
|
||||||
|
Atom prop, mwm_prop, type_ret;
|
||||||
|
unsigned char *prop_ret;
|
||||||
|
unsigned long bytes_after, num_ret;
|
||||||
|
int format_ret, num, i, supported = 0;
|
||||||
|
|
||||||
|
/* check whether wm support mwm hint */
|
||||||
|
prop = XInternAtom(Xdisplay, "_NET_SUPPORTED", True);
|
||||||
|
mwm_prop = XInternAtom(Xdisplay, "_MOTIF_WM_HINTS", True);
|
||||||
|
|
||||||
|
if ((prop != None) && (mwm_prop != None)) {
|
||||||
|
prop_ret = NULL;
|
||||||
|
if (XGetWindowProperty(Xdisplay, Xroot, prop, 0, 0x7fffffff, False,
|
||||||
|
XA_ATOM, &type_ret, &format_ret, &num_ret,
|
||||||
|
&bytes_after, &prop_ret) == Success) {
|
||||||
|
|
||||||
|
if ((type_ret == XA_ATOM) &&
|
||||||
|
(format_ret == 32) &&
|
||||||
|
(num_ret && prop_ret))
|
||||||
|
{
|
||||||
|
for (i = 0; i < num_ret; i++)
|
||||||
|
if (mwm_prop == ((unsigned long*)prop_ret)[i])
|
||||||
|
supported = 1;
|
||||||
|
}
|
||||||
|
if (prop_ret)
|
||||||
|
XFree(prop_ret);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* check whether wm is mwm */
|
||||||
|
if (!supported) {
|
||||||
|
prop = XInternAtom(Xdisplay, "_MOTIF_WM_INFO", True);
|
||||||
|
if (prop != None) {
|
||||||
|
supported = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return supported;
|
||||||
|
}
|
||||||
|
|
||||||
/* Create_Windows() - Open and map the window */
|
/* Create_Windows() - Open and map the window */
|
||||||
void
|
void
|
||||||
Create_Windows(int argc, char *argv[])
|
Create_Windows(int argc, char *argv[])
|
||||||
|
@ -378,14 +418,13 @@ Create_Windows(int argc, char *argv[])
|
||||||
MWMHints mwmhints;
|
MWMHints mwmhints;
|
||||||
|
|
||||||
if (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_BORDERLESS)) {
|
if (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_BORDERLESS)) {
|
||||||
prop = XInternAtom(Xdisplay, "_MOTIF_WM_INFO", True);
|
if (check_mwm_supported()) {
|
||||||
if (prop == None) {
|
mwmhints.flags = MWM_HINTS_DECORATIONS;
|
||||||
|
mwmhints.decorations = 0;
|
||||||
|
} else {
|
||||||
libast_print_warning("Window Manager does not support MWM hints. Bypassing window manager control for borderless window.\n");
|
libast_print_warning("Window Manager does not support MWM hints. Bypassing window manager control for borderless window.\n");
|
||||||
Attributes.override_redirect = TRUE;
|
Attributes.override_redirect = TRUE;
|
||||||
mwmhints.flags = 0;
|
mwmhints.flags = 0;
|
||||||
} else {
|
|
||||||
mwmhints.flags = MWM_HINTS_DECORATIONS;
|
|
||||||
mwmhints.decorations = 0;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mwmhints.flags = 0;
|
mwmhints.flags = 0;
|
||||||
|
|
Loading…
Reference in New Issue