From 03e14f363fae6c3c62efbc36b6b863c9fb153bf3 Mon Sep 17 00:00:00 2001 From: kojima Date: Wed, 29 Mar 2000 03:23:38 +0000 Subject: [PATCH] fixed many bugs related from stacking and old ones too --- src/Makefile.in | 390 ++++++++++++++++++++++++++++++++++++++++++++++ src/WindowMaker.h | 1 + src/event.c | 2 +- src/main.c | 6 +- src/moveres.c | 17 ++ src/placement.c | 4 +- src/session.c | 12 +- src/stacking.c | 31 ++-- src/startup.c | 31 ++-- src/superfluous.c | 3 +- src/xmodifier.c | 1 + 11 files changed, 458 insertions(+), 40 deletions(-) create mode 100644 src/Makefile.in diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 00000000..bb2cf6e7 --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,390 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AS = @AS@ +CC = @CC@ +CPP_PATH = @CPP_PATH@ +DFLAGS = @DFLAGS@ +DLLIBS = @DLLIBS@ +DLLTOOL = @DLLTOOL@ +GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ +ICONEXT = @ICONEXT@ +INTLIBS = @INTLIBS@ +LD = @LD@ +LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ +LIBTOOL = @LIBTOOL@ +LITE = @LITE@ +LN_S = @LN_S@ +MAKEINFO = @MAKEINFO@ +MOFILES = @MOFILES@ +NETLIBS = @NETLIBS@ +NLSDIR = @NLSDIR@ +NM = @NM@ +OBJDUMP = @OBJDUMP@ +PACKAGE = @PACKAGE@ +RANLIB = @RANLIB@ +VERSION = @VERSION@ +WPMOFILES = @WPMOFILES@ +XCFLAGS = @XCFLAGS@ +XGETTEXT = @XGETTEXT@ +XLFLAGS = @XLFLAGS@ +XLIBS = @XLIBS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBRARY_PATH = @X_LIBRARY_PATH@ +supported_locales = @supported_locales@ +wprefsdir = @wprefsdir@ + +AUTOMAKE_OPTIONS = no-dependencies + +BUILT_SOURCES = wconfig.h + +bin_PROGRAMS = wmaker + +EXTRA_DIST = wmnotify.c wmnotdef.h wmnotify.h DI.h DL.h I.h L.h Q.h GDB.h nana.h + + +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 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)\" + +INCLUDES = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs @HEADER_SEARCH_PATH@ + + +wmaker_LDADD = $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la @LIBRARY_SEARCH_PATH@ @LIBPL@ @GFXLIBS@ @XLIBS@ @INTLIBS@ @DLLIBS@ -lm + +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = wconfig.h +PROGRAMS = $(bin_PROGRAMS) + + +DEFS = @DEFS@ -I. -I$(srcdir) -I. +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +X_CFLAGS = @X_CFLAGS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +wmaker_OBJECTS = actions.o appicon.o application.o appmenu.o balloon.o \ +client.o colormap.o defaults.o dialog.o dock.o dockedapp.o event.o \ +framewin.o geomview.o gnome.o icon.o kwm.o main.o menu.o misc.o motif.o \ +moveres.o openlook.o pixmap.o placement.o plugin.o properties.o \ +proplist.o resources.o rootmenu.o screen.o session.o shutdown.o \ +stacking.o startup.o superfluous.o switchmenu.o texture.o usermenu.o \ +xdnd.o xmodifier.o xutil.o wcore.o wdefaults.o window.o winmenu.o \ +winspector.o workspace.o wmsound.o text.o +wmaker_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a \ +$(top_builddir)/wrlib/libwraster.la +wmaker_LDFLAGS = +CFLAGS = @CFLAGS@ +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +DIST_COMMON = ./stamp-h.in Makefile.am Makefile.in config.h.in \ +wconfig.h.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +SOURCES = $(wmaker_SOURCES) +OBJECTS = $(wmaker_OBJECTS) + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .lo .o .s +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +config.h: stamp-h + @if test ! -f $@; then \ + rm -f stamp-h; \ + $(MAKE) stamp-h; \ + else :; fi +stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES= CONFIG_HEADERS=src/config.h \ + $(SHELL) ./config.status + @echo timestamp > stamp-h 2> /dev/null +$(srcdir)/config.h.in: $(srcdir)/stamp-h.in + @if test ! -f $@; then \ + rm -f $(srcdir)/stamp-h.in; \ + $(MAKE) $(srcdir)/stamp-h.in; \ + else :; fi +$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOHEADER) + @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null + +mostlyclean-hdr: + +clean-hdr: + +distclean-hdr: + -rm -f config.h + +maintainer-clean-hdr: +wconfig.h: $(top_builddir)/config.status wconfig.h.in + cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +mostlyclean-binPROGRAMS: + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +distclean-binPROGRAMS: + +maintainer-clean-binPROGRAMS: + +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + list='$(bin_PROGRAMS)'; for p in $$list; do \ + rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + done + +.c.o: + $(COMPILE) -c $< + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +.s.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +.S.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + +maintainer-clean-libtool: + +wmaker: $(wmaker_OBJECTS) $(wmaker_DEPENDENCIES) + @rm -f wmaker + $(LINK) $(wmaker_LDFLAGS) $(wmaker_OBJECTS) $(wmaker_LDADD) $(LIBS) + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = src + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +all-recursive-am: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +install-exec-am: install-binPROGRAMS +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-binPROGRAMS +uninstall: uninstall-am +all-am: Makefile $(PROGRAMS) config.h +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +mostlyclean-am: mostlyclean-hdr mostlyclean-binPROGRAMS \ + mostlyclean-compile mostlyclean-libtool \ + mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-hdr clean-binPROGRAMS clean-compile clean-libtool \ + clean-tags clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-hdr distclean-binPROGRAMS distclean-compile \ + distclean-libtool distclean-tags distclean-generic \ + clean-am + -rm -f libtool + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-hdr maintainer-clean-binPROGRAMS \ + maintainer-clean-compile maintainer-clean-libtool \ + maintainer-clean-tags maintainer-clean-generic \ + distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ +mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ +maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ +mostlyclean-compile distclean-compile clean-compile \ +maintainer-clean-compile mostlyclean-libtool distclean-libtool \ +clean-libtool maintainer-clean-libtool tags mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ +install-exec-am install-exec install-data-am install-data install-am \ +install uninstall-am uninstall all-redirect all-am all installdirs \ +mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/WindowMaker.h b/src/WindowMaker.h index d4659f62..46ace84a 100644 --- a/src/WindowMaker.h +++ b/src/WindowMaker.h @@ -425,6 +425,7 @@ typedef struct WPreferences { unsigned int nocpp:1; /* don't use cpp */ unsigned int noupdates:1; /* don't require ~/GNUstep (-static) */ unsigned int noautolaunch:1; /* don't autolaunch apps */ + unsigned int norestore:1; /* don't restore session */ } flags; /* internal flags */ } WPreferences; diff --git a/src/event.c b/src/event.c index 4019e7b7..e6c4d5cb 100644 --- a/src/event.c +++ b/src/event.c @@ -1401,7 +1401,7 @@ doWindozeCycle(WWindow *wwin, XEvent *event, Bool next) } else if (ev.type == KeyRelease) { int i; - for (i = 0; i <= 8 * keymap->max_keypermod; i++) { + for (i = 0; i < 8 * keymap->max_keypermod; i++) { if (keymap->modifiermap[i] == ev.xkey.keycode && wKeyBindings[WKBD_FOCUSNEXT].modifier & 1<<(i/keymap->max_keypermod)) { diff --git a/src/main.c b/src/main.c index 392fdf4c..fd724b7c 100644 --- a/src/main.c +++ b/src/main.c @@ -427,6 +427,7 @@ print_help() puts(_(" --no-dock do not open the application Dock")); puts(_(" --no-clip do not open the workspace Clip")); puts(_(" --no-autolaunch do not autolaunch applications")); + puts(_(" --dont-restore do not restore saved session")); puts(_(" --locale locale locale to use")); @@ -590,7 +591,10 @@ main(int argc, char **argv) #endif if (strcmp(argv[i], "-no-autolaunch")==0 || strcmp(argv[i], "--no-autolaunch")==0) { - wPreferences.flags.noautolaunch = 1; + wPreferences.flags.noautolaunch = 1; + } else if (strcmp(argv[i], "-dont-restore")==0 + || strcmp(argv[i], "--dont-restore")==0) { + wPreferences.flags.norestore = 1; } else if (strcmp(argv[i], "-nodock")==0 || strcmp(argv[i], "--no-dock")==0) { wPreferences.flags.nodock=1; diff --git a/src/moveres.c b/src/moveres.c index a66c3404..a95bcebc 100644 --- a/src/moveres.c +++ b/src/moveres.c @@ -1687,6 +1687,7 @@ wMouseMoveWindow(WWindow *wwin, XEvent *ev) break; if (started) { + XEvent e; if (!opaqueMove) { drawFrames(wwin, scr->selected_windows, moveData.realX - wwin->frame_x, @@ -1707,6 +1708,22 @@ wMouseMoveWindow(WWindow *wwin, XEvent *ev) } if (wPreferences.move_display == WDIS_NEW) showPosition(wwin, moveData.realX, moveData.realY); + + /* discard all enter/leave events that happened until + * the time the button was released */ + /* + while (XCheckTypedEvent(dpy, EnterNotify, &e)) { + if (e.xcrossing.time > event.xbutton.time) { + XPutBackEvent(dpy, &e); + break; + } + } + while (!XCheckTypedEvent(dpy, LeaveNotify, &e)) { + if (e.xcrossing.time > event.xbutton.time) { + XPutBackEvent(dpy, &e); + break; + } + }*/ if (!scr->selected_windows) { /* get rid of the geometry window */ diff --git a/src/placement.c b/src/placement.c index cf3d980d..025ec906 100644 --- a/src/placement.c +++ b/src/placement.c @@ -196,9 +196,7 @@ PlaceIcon(WScreen *scr, int *x_ret, int *y_ret) #define INDEX(x,y) (((y)+1)*(sw+2) + (x) + 1) - for (obj = WMBagLast(scr->stacking_list, &iter); - obj != NULL; - obj = WMBagNext(scr->stacking_list, &iter)) { + WM_ETARETI_BAG(scr->stacking_list, obj, iter) { while (obj) { int x, y; diff --git a/src/session.c b/src/session.c index d13fca63..068b512b 100644 --- a/src/session.c +++ b/src/session.c @@ -125,7 +125,7 @@ static proplist_t sShaded; static proplist_t sMiniaturized; static proplist_t sHidden; static proplist_t sGeometry; -static proplist_t sShortcut; +static proplist_t sShortcutMask; static proplist_t sDock; @@ -148,7 +148,7 @@ make_keys() sHidden = PLMakeString("Hidden"); sGeometry = PLMakeString("Geometry"); sDock = PLMakeString("Dock"); - sShortcut = PLMakeString("Shortcut"); + sShortcutMask = PLMakeString("ShortcutMask"); sYes = PLMakeString("Yes"); sNo = PLMakeString("No"); @@ -255,7 +255,8 @@ makeWindowState(WWindow *wwin, WApplication *wapp) geometry = PLMakeString(buffer); for (mask = 0, i = 0; i < MAX_WINDOW_SHORTCUTS; i++) { - if (WMGetFirstInBag(scr->shortcutWindows[i], wwin)) { + if (scr->shortcutWindows[i] != NULL && + WMGetFirstInBag(scr->shortcutWindows[i], wwin) != WBNotFound) { mask |= 1<main_window); - if (wwin->transient_for==None && WMGetFirstInBag(wapp_list, wapp)<0 + if (wwin->transient_for==None + && WMGetFirstInBag(wapp_list, wapp)==WBNotFound && !WFLAGP(wwin, dont_save_session)) { /* A entry for this application was not yet saved. Save one. */ if ((win_info = makeWindowState(wwin, wapp))!=NULL) { diff --git a/src/stacking.c b/src/stacking.c index 4ac94341..138d0c70 100644 --- a/src/stacking.c +++ b/src/stacking.c @@ -48,6 +48,7 @@ extern WPreferences wPreferences; + /* *---------------------------------------------------------------------- * RemakeStackList-- @@ -105,6 +106,8 @@ RemakeStackList(WScreen *scr) } CommitStacking(scr); + + } /* @@ -128,10 +131,9 @@ CommitStacking(WScreen *scr) nwindows = scr->window_count; windows = wmalloc(sizeof(Window)*nwindows); - - for (tmp = WMBagLast(scr->stacking_list, &iter), i = 0; - iter != NULL; - WMBagNext(scr->stacking_list, &iter)) { + + i = 0; + WM_ETARETI_BAG(scr->stacking_list, tmp, iter) { while (tmp) { #ifdef DEBUG if (i>=nwindows) { @@ -151,6 +153,7 @@ CommitStacking(WScreen *scr) #ifdef KWM_HINTS wKWMBroadcastStacking(scr); #endif + } /* @@ -203,7 +206,7 @@ wRaiseFrame(WCoreWindow *frame) /* already on top */ if (frame->stacking->above == NULL) { return; - } + } /* insert on top of other windows */ @@ -273,13 +276,13 @@ wRaiseFrame(WCoreWindow *frame) } /* try to optimize things a little */ if (frame->stacking->above == NULL) { - WCoreWindow *above=NULL; + WCoreWindow *above; WMBagIterator iter; for (above = WMBagIteratorAtIndex(scr->stacking_list, level+1, &iter); - above != NULL; + iter != NULL; above = WMBagNext(scr->stacking_list, &iter)) { - + /* can't optimize */ while (above->stacking->under) above = above->stacking->under; @@ -304,6 +307,7 @@ wRaiseFrame(WCoreWindow *frame) #ifdef VIRTUAL_DESKTOP wWorkspaceRaiseEdge(scr); #endif + } @@ -375,6 +379,7 @@ wLowerFrame(WCoreWindow *frame) frame->stacking->above->stacking->under = frame->stacking->under; } wlist = WMGetFromBag(scr->stacking_list, level); + /* look for place to put this window */ #ifdef removed if (wPreferences.on_top_transients) @@ -412,7 +417,7 @@ wLowerFrame(WCoreWindow *frame) WMBagIterator iter; for (above = WMBagIteratorAtIndex(scr->stacking_list, level-1, &iter); - above != NULL; + iter != NULL; above = WMBagPrevious(scr->stacking_list, &iter)) { /* can't optimize */ @@ -436,6 +441,7 @@ wLowerFrame(WCoreWindow *frame) wKWMSendEventMessage(wwin, WKWMLowerWindow); } #endif + } @@ -462,6 +468,7 @@ AddToStackList(WCoreWindow *frame) frame->screen_ptr->window_count++; XSaveContext(dpy, frame->window, wStackContext, (XPointer)frame); tmpw = WMGetFromBag(scr->stacking_list, index); + if (!tmpw) { WMSetInBag(scr->stacking_list, index, frame); frame->stacking->above = NULL; @@ -507,6 +514,7 @@ AddToStackList(WCoreWindow *frame) } #endif CommitStacking(scr); + } @@ -575,6 +583,7 @@ MoveInStackListAbove(WCoreWindow *next, WCoreWindow *frame) } else { moveFrameToUnder(frame->stacking->above, frame); } + } @@ -628,9 +637,7 @@ RemoveFromStackList(WCoreWindow *frame) int index = frame->stacking->window_level; if (XDeleteContext(dpy, frame->window, wStackContext)==XCNOENT) { -#ifdef DEBUG0 wwarning("RemoveFromStackingList(): window not in list "); -#endif return; } /* remove from the window stack list */ @@ -639,7 +646,7 @@ RemoveFromStackList(WCoreWindow *frame) if (frame->stacking->above) frame->stacking->above->stacking->under = frame->stacking->under; else /* this was the first window on the list */ - WMSetInBag(frame->screen_ptr->stacking_list, index, + WMSetInBag(frame->screen_ptr->stacking_list, index, frame->stacking->under); frame->screen_ptr->window_count--; diff --git a/src/startup.c b/src/startup.c index b21aeff9..c5ca51a8 100644 --- a/src/startup.c +++ b/src/startup.c @@ -896,27 +896,26 @@ StartUp(Bool defaultScreenOnly) wMenuRestoreState(wScreen[j]); /* If we're not restarting restore session */ - if (ws_state == NULL) + if (ws_state == NULL && !wPreferences.flags.norestore) wSessionRestoreState(wScreen[j]); -if(!wPreferences.flags.noautolaunch) -{ - /* auto-launch apps */ - if (!wPreferences.flags.nodock && wScreen[j]->dock) { - wScreen[j]->last_dock = wScreen[j]->dock; - wDockDoAutoLaunch(wScreen[j]->dock, 0); - } - /* auto-launch apps in clip */ - if (!wPreferences.flags.noclip) { - int i; - for(i=0; iworkspace_count; i++) { - if (wScreen[j]->workspaces[i]->clip) { - wScreen[j]->last_dock = wScreen[j]->workspaces[i]->clip; - wDockDoAutoLaunch(wScreen[j]->workspaces[i]->clip, i); + if (!wPreferences.flags.noautolaunch) { + /* auto-launch apps */ + if (!wPreferences.flags.nodock && wScreen[j]->dock) { + wScreen[j]->last_dock = wScreen[j]->dock; + wDockDoAutoLaunch(wScreen[j]->dock, 0); + } + /* auto-launch apps in clip */ + if (!wPreferences.flags.noclip) { + int i; + for(i=0; iworkspace_count; i++) { + if (wScreen[j]->workspaces[i]->clip) { + wScreen[j]->last_dock = wScreen[j]->workspaces[i]->clip; + wDockDoAutoLaunch(wScreen[j]->workspaces[i]->clip, i); + } } } } -} /* go to workspace where we were before restart */ if (ws_state) { diff --git a/src/superfluous.c b/src/superfluous.c index 2cf28b64..9dc73bf4 100644 --- a/src/superfluous.c +++ b/src/superfluous.c @@ -516,9 +516,8 @@ error: while (--i > 0) { XFreePixmap(dpy, d[i]); } - - return False; #endif + return False; } diff --git a/src/xmodifier.c b/src/xmodifier.c index ae7ff454..08aa87cd 100644 --- a/src/xmodifier.c +++ b/src/xmodifier.c @@ -256,6 +256,7 @@ x_reset_modifier_mapping (Display *display) " by the keysyms used to control those bits. Mod1 does NOT always\n" " mean Meta, although some non-ICCCM-compliant programs assume that.\n"); #endif + XFree(x_modifier_keymap); }