1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-19 20:38:08 +01:00

fixed restart crash bug

updated kwm hint
made kwm&gnome hints mutually exclusive (for read)
This commit is contained in:
kojima
2000-04-09 02:36:48 +00:00
parent b8ca9e2b64
commit 0fd531df43
8 changed files with 70 additions and 26 deletions

View File

@@ -106,7 +106,7 @@ wmaker_SOURCES = \
text.h
CPPFLAGS = @CPPFLAGS@ -DLOCALEDIR=\"$(NLSDIR)\"
CPPFLAGS = @CPPFLAGS@ $(DFLAGS) -DLOCALEDIR=\"$(NLSDIR)\"
INCLUDES = \

View File

@@ -62,7 +62,6 @@ host_triplet = @host@
AS = @AS@
CC = @CC@
CPP_PATH = @CPP_PATH@
DFLAGS = @DFLAGS@
DLLIBS = @DLLIBS@
DLLTOOL = @DLLTOOL@
GFXLIBS = @GFXLIBS@
@@ -106,7 +105,7 @@ EXTRA_DIST = wmnotify.c wmnotdef.h wmnotify.h DI.h DL.h I.h L.h Q.h GDB.h nana.
wmaker_SOURCES = GNUstep.h WindowMaker.h actions.c actions.h appicon.c appicon.h application.c application.h appmenu.c appmenu.h balloon.c balloon.h client.c client.h colormap.c cycling.c def_pixmaps.h defaults.c defaults.h dialog.c dialog.h dock.c dockedapp.c dock.h event.c extend_pixmaps.h framewin.c framewin.h geomview.c geomview.h gnome.c gnome.h funcs.h icon.c icon.h keybind.h kwm.h kwm.c main.c menu.c menu.h misc.c motif.c motif.h moveres.c openlook.c openlook.h pixmap.c pixmap.h placement.c plugin.c plugin.h properties.c properties.h proplist.c resources.c resources.h rootmenu.c screen.c screen.h session.h session.c shutdown.c stacking.c stacking.h startup.c superfluous.c superfluous.h switchmenu.c texture.c texture.h usermenu.c usermenu.h xdnd.h xdnd.c xmodifier.h xmodifier.c xutil.c xutil.h wconfig.h wcore.c wcore.h wdefaults.c wdefaults.h window.c window.h winmenu.c winspector.h winspector.c workspace.c workspace.h wmsound.c wmsound.h text.c text.h
CPPFLAGS = @CPPFLAGS@ @DFLAGS@ -DLOCALEDIR=\"$(NLSDIR)\"
CPPFLAGS = @CPPFLAGS@ $(DFLAGS) -DLOCALEDIR=\"$(NLSDIR)\"
INCLUDES = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs @HEADER_SEARCH_PATH@

View File

@@ -288,7 +288,7 @@ getWindowLevel(int layer)
}
void
Bool
wGNOMECheckClientHints(WWindow *wwin, int *layer, int *workspace)
{
Atom type_ret;
@@ -296,6 +296,7 @@ wGNOMECheckClientHints(WWindow *wwin, int *layer, int *workspace)
unsigned long nitems_ret;
unsigned long bytes_after_ret;
long flags, val, *data = 0;
Bool hasHints = False;
/* hints */
@@ -311,6 +312,7 @@ wGNOMECheckClientHints(WWindow *wwin, int *layer, int *workspace)
if (flags & (WIN_HINTS_SKIP_FOCUS|WIN_HINTS_SKIP_WINLIST)) {
wwin->client_flags.skip_window_list = 1;
}
hasHints = True;
}
/* layer */
@@ -323,6 +325,7 @@ wGNOMECheckClientHints(WWindow *wwin, int *layer, int *workspace)
XFree(data);
*layer = getWindowLevel(val);
hasHints = True;
}
/* workspace */
@@ -336,6 +339,7 @@ wGNOMECheckClientHints(WWindow *wwin, int *layer, int *workspace)
if (val > 0)
*workspace = val;
hasHints = True;
}
/* reserved area */
@@ -362,11 +366,14 @@ wGNOMECheckClientHints(WWindow *wwin, int *layer, int *workspace)
wwin->screen_ptr->reservedAreas = area;
wScreenUpdateUsableArea(wwin->screen_ptr);
hasHints = True;
}
return hasHints;
}
void
Bool
wGNOMECheckInitialClientState(WWindow *wwin)
{
Atom type_ret;
@@ -379,7 +386,7 @@ wGNOMECheckInitialClientState(WWindow *wwin)
XA_CARDINAL, &type_ret, &fmt_ret, &nitems_ret,
&bytes_after_ret,
(unsigned char**)&data)!=Success || !data)
return;
return False;
flags = *data;
@@ -399,6 +406,8 @@ wGNOMECheckInitialClientState(WWindow *wwin)
if (flags & WIN_STATE_SHADED)
wwin->flags.shaded = 1;
return True;
}

View File

@@ -35,7 +35,7 @@ void wGNOMEUpdateCurrentWorkspaceHint(WScreen *scr);
void wGNOMEUpdateWorkspaceNamesHint(WScreen *scr);
void wGNOMECheckClientHints(WWindow *wwin, int *layer, int *workspace);
Bool wGNOMECheckClientHints(WWindow *wwin, int *layer, int *workspace);
void wGNOMEUpdateClientStateHint(WWindow *wwin, Bool changedWorkspace);
@@ -43,7 +43,7 @@ Bool wGNOMEProcessClientMessage(XClientMessageEvent *event);
void wGNOMERemoveClient(WWindow *wwin);
void wGNOMECheckInitialClientState(WWindow *wwin);
Bool wGNOMECheckInitialClientState(WWindow *wwin);
Bool wGNOMEProxyizeButtonEvent(WScreen *scr, XEvent *event);

View File

@@ -789,9 +789,13 @@ wKWMCheckClientInitialState(WWindow *wwin)
wwin->flags.miniaturized = 1;
}
if (getSimpleHint(wwin->client_win, _XA_KWM_WIN_MAXIMIZED, &val) && val) {
wwin->flags.maximized = MAX_VERTICAL|MAX_HORIZONTAL;
if (getSimpleHint(wwin->client_win, _XA_KWM_WIN_MAXIMIZED, &val)) {
if (val == 2)
wwin->flags.maximized = MAX_VERTICAL;
else if (val == 1)
wwin->flags.maximized = MAX_HORIZONTAL;
else if (val == 3)
wwin->flags.maximized = MAX_VERTICAL|MAX_HORIZONTAL;
}
if (getAreaHint(wwin->client_win, _XA_KWM_WIN_GEOMETRY_RESTORE, &area)
&& (wwin->old_geometry.x != area.x1
@@ -848,17 +852,25 @@ wKWMCheckClientHintChange(WWindow *wwin, XPropertyEvent *event)
}
} else if (event->atom == _XA_KWM_WIN_MAXIMIZED) {
int bla = 0;
#ifdef DEBUG1
printf("got KDE maximize change\n");
#endif
flag = !getSimpleHint(wwin->client_win, _XA_KWM_WIN_MAXIMIZED,
&value) || value;
flag = getSimpleHint(wwin->client_win, _XA_KWM_WIN_MAXIMIZED, &value);
if (flag != (wwin->flags.maximized!=0)) {
if (flag) {
if (value == 3)
bla = MAX_VERTICAL|MAX_HORIZONTAL;
else if (value == 2)
bla = MAX_VERTICAL;
else if (value == 1)
bla = MAX_HORIZONTAL;
}
if (flag)
wMaximizeWindow(wwin, flag*(MAX_VERTICAL|MAX_HORIZONTAL));
if (bla != wwin->flags.maximized) {
if (bla != 0)
wMaximizeWindow(wwin, bla);
else
wUnmaximizeWindow(wwin);
}
@@ -1553,8 +1565,14 @@ wKWMUpdateClientStateHint(WWindow *wwin, WKWMStateFlag flags)
IS_OMNIPRESENT(wwin));
}
if (flags & KWMMaximizedFlag) {
setSimpleHint(wwin->client_win, _XA_KWM_WIN_MAXIMIZED,
wwin->flags.maximized!=0);
int value = 0;
if (wwin->flags.maximized & MAX_VERTICAL)
value |= 2;
if (wwin->flags.maximized & MAX_HORIZONTAL)
value |= 1;
setSimpleHint(wwin->client_win, _XA_KWM_WIN_MAXIMIZED, value);
}
}

View File

@@ -24,8 +24,14 @@
* Do you think I should move this code into another file? -- ]d
*/
#include "plugin.h"
/* GAH! */
#ifdef DRAWSTRING_PLUGIN
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
@@ -130,3 +136,5 @@ wPluginDestroyFunction(WFunction *function)
return;
}
#endif

View File

@@ -724,7 +724,7 @@ wScreenInit(int screen_number)
/* will only be accounted for in PseudoColor */
if (wPreferences.flags.create_stdcmap) {
if (wPreferences.flags.createstdcmap) {
rattr.standard_colormap_mode = RCreateStdColormap;
} else {
rattr.standard_colormap_mode = RUseStdColormap;

View File

@@ -423,19 +423,23 @@ wWindowSetupInitialAttributes(WWindow *wwin, int *level, int *workspace)
} else {
int tmp_workspace = -1;
int tmp_level = -1;
Bool check;
check = False;
#ifdef MWM_HINTS
wMWMCheckClientHints(wwin);
#endif /* MWM_HINTS */
#ifdef KWM_HINTS
wKWMCheckClientHints(wwin, &tmp_level, &tmp_workspace);
#endif /* KWM_HINTS */
#ifdef GNOME_STUFF
wGNOMECheckClientHints(wwin, &tmp_level, &tmp_workspace);
check = wGNOMECheckClientHints(wwin, &tmp_level, &tmp_workspace);
#endif /* GNOME_STUFF */
#ifdef KWM_HINTS
if (!check)
wKWMCheckClientHints(wwin, &tmp_level, &tmp_workspace);
#endif /* KWM_HINTS */
#ifdef OLWM_HINTS
wOLWMCheckClientHints(wwin);
#endif /* OLWM_HINTS */
@@ -769,12 +773,18 @@ wManageWindow(WScreen *scr, Window window)
wwin->flags.maximized = MAX_VERTICAL|MAX_HORIZONTAL;
}
{
Bool bla;
bla = False;
#ifdef GNOME_STUFF
wGNOMECheckInitialClientState(wwin);
bla = wGNOMECheckInitialClientState(wwin);
#endif
#ifdef KWM_HINTS
wKWMCheckClientInitialState(wwin);
if (!bla)
wKWMCheckClientInitialState(wwin);
#endif
}
/* apply previous state if it exists and we're in startup */
if (scr->flags.startup && wm_state >= 0) {