mirror of
https://github.com/gnustep/libs-back.git
synced 2025-02-24 04:11:28 +00:00
* Headers/x11/XGGeneric.h: Remove obsolte atom.
* Source/x11/XGServerWindow.m: Clean up code. * Source/x11/XGServerWindow.m (-setwindowlevel::): Try to set better level for tool tip windows. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@40295 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
168e6f1347
commit
9f84d3e7fc
3 changed files with 71 additions and 127 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2017-01-17 Fred Kiefer <FredKiefer@gmx.de>
|
||||||
|
|
||||||
|
* Headers/x11/XGGeneric.h: Remove obsolte atom.
|
||||||
|
* Source/x11/XGServerWindow.m: Clean up code.
|
||||||
|
* Source/x11/XGServerWindow.m (-setwindowlevel::): Try to set
|
||||||
|
better level for tool tip windows.
|
||||||
|
|
||||||
2017-01-08 Fred Kiefer <FredKiefer@gmx.de>
|
2017-01-08 Fred Kiefer <FredKiefer@gmx.de>
|
||||||
|
|
||||||
* Source/x11/XGServerWindow.m (-_checkStyle:): Ignore invalid
|
* Source/x11/XGServerWindow.m (-_checkStyle:): Ignore invalid
|
||||||
|
@ -214,7 +221,7 @@
|
||||||
|
|
||||||
* Headers/x11/XGGeneric.h
|
* Headers/x11/XGGeneric.h
|
||||||
* Source/x11/XGServerWindow.m: Correct name for atom
|
* Source/x11/XGServerWindow.m: Correct name for atom
|
||||||
net_wm_state_modal_atom. Use this atom to try to set the sate for
|
net_wm_state_modal_atom. Use this atom to try to set the state for
|
||||||
dialog windows to modal.
|
dialog windows to modal.
|
||||||
|
|
||||||
2015-02-27 Germán Arias <germanandre@gmx.es>
|
2015-02-27 Germán Arias <germanandre@gmx.es>
|
||||||
|
|
|
@ -49,7 +49,7 @@ typedef struct {
|
||||||
Atom win_utility_atom;
|
Atom win_utility_atom;
|
||||||
Atom win_splash_atom;
|
Atom win_splash_atom;
|
||||||
Atom win_override_atom;
|
Atom win_override_atom;
|
||||||
Atom win_topmenu_atom;
|
Atom _dummy1;
|
||||||
Atom win_popup_menu_atom;
|
Atom win_popup_menu_atom;
|
||||||
Atom win_dropdown_menu_atom;
|
Atom win_dropdown_menu_atom;
|
||||||
Atom win_tooltip_atom;
|
Atom win_tooltip_atom;
|
||||||
|
|
|
@ -420,17 +420,6 @@ static void setWindowHintsForStyle (Display *dpy, Window window,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@interface NSEvent (WindowHack)
|
|
||||||
- (void) _patchLocation: (NSPoint)loc;
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation NSEvent (WindowHack)
|
|
||||||
- (void) _patchLocation: (NSPoint)loc
|
|
||||||
{
|
|
||||||
location_point = loc;
|
|
||||||
}
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface XGServer (WindowOps)
|
@interface XGServer (WindowOps)
|
||||||
- (gswindow_device_t *) _rootWindowForScreen: (int)screen;
|
- (gswindow_device_t *) _rootWindowForScreen: (int)screen;
|
||||||
- (void) styleoffsets: (float *) l : (float *) r : (float *) t : (float *) b
|
- (void) styleoffsets: (float *) l : (float *) r : (float *) t : (float *) b
|
||||||
|
@ -665,39 +654,25 @@ static void setWindowHintsForStyle (Display *dpy, Window window,
|
||||||
static void
|
static void
|
||||||
select_input(Display *display, Window w, BOOL ignoreMouse)
|
select_input(Display *display, Window w, BOOL ignoreMouse)
|
||||||
{
|
{
|
||||||
long event_mask;
|
long event_mask = ExposureMask
|
||||||
|
| KeyPressMask
|
||||||
|
| KeyReleaseMask
|
||||||
|
| StructureNotifyMask
|
||||||
|
| FocusChangeMask
|
||||||
|
/* enable property notifications to detect window (de)miniaturization */
|
||||||
|
| PropertyChangeMask
|
||||||
|
// | ColormapChangeMask
|
||||||
|
| KeymapStateMask
|
||||||
|
| VisibilityChangeMask;
|
||||||
|
|
||||||
if (!ignoreMouse)
|
if (!ignoreMouse)
|
||||||
{
|
{
|
||||||
event_mask = ExposureMask
|
event_mask |= ButtonPressMask
|
||||||
| KeyPressMask
|
|
||||||
| KeyReleaseMask
|
|
||||||
| ButtonPressMask
|
|
||||||
| ButtonReleaseMask
|
| ButtonReleaseMask
|
||||||
| ButtonMotionMask
|
| ButtonMotionMask
|
||||||
| StructureNotifyMask
|
|
||||||
| PointerMotionMask
|
| PointerMotionMask
|
||||||
| EnterWindowMask
|
| EnterWindowMask
|
||||||
| LeaveWindowMask
|
| LeaveWindowMask;
|
||||||
| FocusChangeMask
|
|
||||||
/* enable property notifications to detect window (de)miniaturization */
|
|
||||||
| PropertyChangeMask
|
|
||||||
// | ColormapChangeMask
|
|
||||||
| KeymapStateMask
|
|
||||||
| VisibilityChangeMask;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
event_mask = ExposureMask
|
|
||||||
| KeyPressMask
|
|
||||||
| KeyReleaseMask
|
|
||||||
| StructureNotifyMask
|
|
||||||
| FocusChangeMask
|
|
||||||
/* enable property notifications to detect window (de)miniaturization */
|
|
||||||
| PropertyChangeMask
|
|
||||||
// | ColormapChangeMask
|
|
||||||
| KeymapStateMask
|
|
||||||
| VisibilityChangeMask;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
XSelectInput(display, w, event_mask);
|
XSelectInput(display, w, event_mask);
|
||||||
|
@ -780,6 +755,43 @@ _get_next_prop_new_event(Display *display, XEvent *event, char *arg)
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (unsigned long*) _getExtents: (Window)win
|
||||||
|
{
|
||||||
|
int count;
|
||||||
|
unsigned long *extents;
|
||||||
|
|
||||||
|
/* If our window manager supports _NET_FRAME_EXTENTS we trust that as
|
||||||
|
* definitive information.
|
||||||
|
*/
|
||||||
|
if (_net_frame_extents == None)
|
||||||
|
{
|
||||||
|
_net_frame_extents = XInternAtom(dpy, "_NET_FRAME_EXTENTS", False);
|
||||||
|
}
|
||||||
|
extents = (unsigned long *)PropGetCheckProperty(dpy, win, _net_frame_extents,
|
||||||
|
XA_CARDINAL, 32, 4, &count);
|
||||||
|
if (extents != 0)
|
||||||
|
{
|
||||||
|
NSDebugLLog(@"Offset", @"Offsets retrieved from _NET_FRAME_EXTENTS");
|
||||||
|
}
|
||||||
|
if (extents == 0)
|
||||||
|
{
|
||||||
|
/* If our window manager supports _KDE_NET_WM_FRAME_STRUT we assume
|
||||||
|
* its as reliable as _NET_FRAME_EXTENTS
|
||||||
|
*/
|
||||||
|
if (_kde_frame_strut == None)
|
||||||
|
{
|
||||||
|
_kde_frame_strut = XInternAtom(dpy, "_KDE_NET_WM_FRAME_STRUT", False);
|
||||||
|
}
|
||||||
|
extents = (unsigned long *)PropGetCheckProperty(dpy, win, _kde_frame_strut,
|
||||||
|
XA_CARDINAL, 32, 4, &count);
|
||||||
|
if (extents!= 0)
|
||||||
|
{
|
||||||
|
NSDebugLLog(@"Offset", @"Offsets retrieved from _KDE_NET_WM_FRAME_STRUT");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return extents;
|
||||||
|
}
|
||||||
|
|
||||||
- (BOOL) _checkStyle: (unsigned)style
|
- (BOOL) _checkStyle: (unsigned)style
|
||||||
{
|
{
|
||||||
gswindow_device_t *window;
|
gswindow_device_t *window;
|
||||||
|
@ -790,7 +802,6 @@ _get_next_prop_new_event(Display *display, XEvent *event, char *arg)
|
||||||
XClassHint classhint;
|
XClassHint classhint;
|
||||||
RContext *context;
|
RContext *context;
|
||||||
XEvent xEvent;
|
XEvent xEvent;
|
||||||
int count;
|
|
||||||
unsigned long *extents;
|
unsigned long *extents;
|
||||||
Offsets *o = generic.offsets + (style & 15);
|
Offsets *o = generic.offsets + (style & 15);
|
||||||
int repp = 0;
|
int repp = 0;
|
||||||
|
@ -1010,38 +1021,7 @@ _get_next_prop_new_event(Display *display, XEvent *event, char *arg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If our window manager supports _NET_FRAME_EXTENTS we trust that as
|
extents = [self _getExtents: window->ident];
|
||||||
* definitive information.
|
|
||||||
*/
|
|
||||||
if (_net_frame_extents == None)
|
|
||||||
{
|
|
||||||
_net_frame_extents = XInternAtom(dpy, "_NET_FRAME_EXTENTS", False);
|
|
||||||
}
|
|
||||||
extents = (unsigned long *)PropGetCheckProperty(dpy,
|
|
||||||
window->ident, _net_frame_extents, XA_CARDINAL, 32, 4, &count);
|
|
||||||
if (extents != 0)
|
|
||||||
{
|
|
||||||
NSDebugLLog(@"Offset", @"Offsets retrieved from _NET_FRAME_EXTENTS");
|
|
||||||
}
|
|
||||||
if (extents == 0)
|
|
||||||
{
|
|
||||||
/* If our window manager supports _KDE_NET_WM_FRAME_STRUT we assume
|
|
||||||
* its as reliable as _NET_FRAME_EXTENTS
|
|
||||||
*/
|
|
||||||
if (_kde_frame_strut == None)
|
|
||||||
{
|
|
||||||
_kde_frame_strut = XInternAtom(dpy,
|
|
||||||
"_KDE_NET_WM_FRAME_STRUT", False);
|
|
||||||
}
|
|
||||||
extents = (unsigned long *)PropGetCheckProperty(dpy,
|
|
||||||
window->ident, _kde_frame_strut, XA_CARDINAL, 32, 4, &count);
|
|
||||||
if (extents!= 0)
|
|
||||||
{
|
|
||||||
NSDebugLLog(@"Offset",
|
|
||||||
@"Offsets retrieved from _KDE_NET_WM_FRAME_STRUT");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (extents != 0)
|
if (extents != 0)
|
||||||
{
|
{
|
||||||
o->l = extents[0];
|
o->l = extents[0];
|
||||||
|
@ -1309,8 +1289,6 @@ _get_next_prop_new_event(Display *display, XEvent *event, char *arg)
|
||||||
generic.wintypes.win_override_atom =
|
generic.wintypes.win_override_atom =
|
||||||
XInternAtom(dpy, "_KDE_NET_WM_WINDOW_TYPE_OVERRIDE", False);
|
XInternAtom(dpy, "_KDE_NET_WM_WINDOW_TYPE_OVERRIDE", False);
|
||||||
#endif
|
#endif
|
||||||
generic.wintypes.win_topmenu_atom =
|
|
||||||
XInternAtom(dpy, "_KDE_NET_WM_WINDOW_TYPE_TOPMENU", False);
|
|
||||||
|
|
||||||
// Window state
|
// Window state
|
||||||
generic.netstates.net_wm_state_atom =
|
generic.netstates.net_wm_state_atom =
|
||||||
|
@ -2404,28 +2382,7 @@ _get_next_prop_new_event(Display *display, XEvent *event, char *arg)
|
||||||
/* First check _NET_FRAME_EXTENTS */
|
/* First check _NET_FRAME_EXTENTS */
|
||||||
if (win && ((generic.wm & XGWM_EWMH) != 0))
|
if (win && ((generic.wm & XGWM_EWMH) != 0))
|
||||||
{
|
{
|
||||||
int count;
|
unsigned long *extents = [self _getExtents: win];
|
||||||
unsigned long *extents;
|
|
||||||
|
|
||||||
if (_net_frame_extents == None)
|
|
||||||
{
|
|
||||||
_net_frame_extents = XInternAtom(dpy,
|
|
||||||
"_NET_FRAME_EXTENTS", False);
|
|
||||||
}
|
|
||||||
|
|
||||||
extents = (unsigned long *)PropGetCheckProperty(dpy,
|
|
||||||
win, _net_frame_extents, XA_CARDINAL, 32, 4, &count);
|
|
||||||
|
|
||||||
if (!extents) // && (generic.wm & XGWM_KDE))
|
|
||||||
{
|
|
||||||
if (_kde_frame_strut == None)
|
|
||||||
{
|
|
||||||
_kde_frame_strut = XInternAtom(dpy,
|
|
||||||
"_KDE_NET_WM_FRAME_STRUT", False);
|
|
||||||
}
|
|
||||||
extents = (unsigned long *)PropGetCheckProperty(dpy,
|
|
||||||
win, _kde_frame_strut, XA_CARDINAL, 32, 4, &count);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (extents)
|
if (extents)
|
||||||
{
|
{
|
||||||
|
@ -2464,8 +2421,7 @@ _get_next_prop_new_event(Display *display, XEvent *event, char *arg)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
NSLog(@"styleoffsets ... guessing offsets\n");
|
NSLog(@"styleoffsets ... guessing offsets\n");
|
||||||
|
|
||||||
if ((generic.wm & XGWM_WINDOWMAKER) != 0)
|
if ((generic.wm & XGWM_WINDOWMAKER) != 0)
|
||||||
{
|
{
|
||||||
*l = *r = *t = *b = 1.0;
|
*l = *r = *t = *b = 1.0;
|
||||||
|
@ -2974,15 +2930,6 @@ static BOOL didCreatePixmaps;
|
||||||
*/
|
*/
|
||||||
if ((window->win_attrs.window_style & NSIconWindowMask) != 0)
|
if ((window->win_attrs.window_style & NSIconWindowMask) != 0)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
/* This doesn't appear to do anything useful, and, at least
|
|
||||||
with WindowMaker, can cause the app to flicker and spuriously
|
|
||||||
lose focus if the app icon is already visible. */
|
|
||||||
if (op != NSWindowOut)
|
|
||||||
{
|
|
||||||
XMapRaised(dpy, ROOT);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((window->win_attrs.window_style & NSMiniWindowMask) != 0)
|
if ((window->win_attrs.window_style & NSMiniWindowMask) != 0)
|
||||||
|
@ -3427,26 +3374,14 @@ static BOOL didCreatePixmaps;
|
||||||
}
|
}
|
||||||
else if (level == NSMainMenuWindowLevel)
|
else if (level == NSMainMenuWindowLevel)
|
||||||
{
|
{
|
||||||
// For strange reasons menu level does not
|
|
||||||
// work out for the main menu
|
|
||||||
//data[0] = generic.wintypes.win_topmenu_atom;
|
|
||||||
data[0] = generic.wintypes.win_dock_atom;
|
data[0] = generic.wintypes.win_dock_atom;
|
||||||
//len = 2;
|
|
||||||
skipTaskbar = YES;
|
skipTaskbar = YES;
|
||||||
}
|
}
|
||||||
else if (level == NSSubmenuWindowLevel
|
else if (level == NSSubmenuWindowLevel
|
||||||
|| level == NSFloatingWindowLevel
|
|| level == NSFloatingWindowLevel
|
||||||
|| level == NSTornOffMenuWindowLevel)
|
|| level == NSTornOffMenuWindowLevel)
|
||||||
{
|
{
|
||||||
#ifdef USE_KDE_OVERRIDE
|
|
||||||
data[0] = generic.wintypes.win_override_atom;
|
|
||||||
//data[0] = generic.wintypes.win_utility_atom;
|
|
||||||
data[1] = generic.wintypes.win_menu_atom;
|
|
||||||
len = 2;
|
|
||||||
#else
|
|
||||||
data[0] = generic.wintypes.win_menu_atom;
|
data[0] = generic.wintypes.win_menu_atom;
|
||||||
len = 1;
|
|
||||||
#endif
|
|
||||||
skipTaskbar = YES;
|
skipTaskbar = YES;
|
||||||
}
|
}
|
||||||
else if (level == NSDockWindowLevel
|
else if (level == NSDockWindowLevel
|
||||||
|
@ -3458,15 +3393,17 @@ static BOOL didCreatePixmaps;
|
||||||
// Does this belong into a different category?
|
// Does this belong into a different category?
|
||||||
else if (level == NSPopUpMenuWindowLevel)
|
else if (level == NSPopUpMenuWindowLevel)
|
||||||
{
|
{
|
||||||
#ifdef USE_KDE_OVERRIDE
|
NSWindow *nswin = GSWindowWithNumber(window->number);
|
||||||
data[0] = generic.wintypes.win_override_atom;
|
|
||||||
data[1] = generic.wintypes.win_floating_atom;
|
if ([[nswin className] isEqual: @"GSTTPanel"])
|
||||||
len = 2;
|
{
|
||||||
#else
|
data[0] = generic.wintypes.win_tooltip_atom;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
// data[0] = generic.wintypes.win_popup_menu_atom;
|
// data[0] = generic.wintypes.win_popup_menu_atom;
|
||||||
data[0] = generic.wintypes.win_modal_atom;
|
data[0] = generic.wintypes.win_modal_atom;
|
||||||
len = 1;
|
}
|
||||||
#endif
|
|
||||||
skipTaskbar = YES;
|
skipTaskbar = YES;
|
||||||
}
|
}
|
||||||
else if (level == NSDesktopWindowLevel)
|
else if (level == NSDesktopWindowLevel)
|
||||||
|
|
Loading…
Reference in a new issue