fix off-by-ones in window-to-window snapping. move the property from the blackbox class to the screen class.

This commit is contained in:
Dana Jansens 2002-06-07 00:24:02 +00:00
parent aad50046de
commit e90fafd2fd
7 changed files with 411 additions and 99 deletions

View file

@ -70,10 +70,10 @@ void Configmenu::setValues(void) {
setItemSelected(4, getScreen()->doFullMax());
setItemSelected(5, getScreen()->doFocusNew());
setItemSelected(6, getScreen()->doFocusLast());
setItemSelected(7, getScreen()->getBlackbox()->getWindowToWindowSnap());
setItemSelected(7, getScreen()->getWindowToWindowSnap());
setItemSelected(8, getScreen()->getBlackbox()->getWindowCornerSnap());
setItemEnabled(8, getScreen()->getBlackbox()->getWindowToWindowSnap());
setItemSelected(8, getScreen()->getWindowCornerSnap());
setItemEnabled(8, getScreen()->getWindowToWindowSnap());
setItemSelected(9, getScreen()->doHideToolbar());
}
@ -94,58 +94,47 @@ void Configmenu::itemSelected(int button, unsigned int index) {
return;
switch(item->function()) {
case 1: { // dither
case 1: // dither
getScreen()->saveImageDither(! getScreen()->doImageDither());
setItemSelected(index, getScreen()->doImageDither());
break;
}
case 2: { // opaque move
case 2: // opaque move
getScreen()->saveOpaqueMove(! getScreen()->doOpaqueMove());
setItemSelected(index, getScreen()->doOpaqueMove());
break;
}
case 3: { // full maximization
case 3: // full maximization
getScreen()->saveFullMax(! getScreen()->doFullMax());
setItemSelected(index, getScreen()->doFullMax());
break;
}
case 4: { // focus new windows
case 4: // focus new windows
getScreen()->saveFocusNew(! getScreen()->doFocusNew());
setItemSelected(index, getScreen()->doFocusNew());
break;
}
case 5: { // focus last window on workspace
case 5: // focus last window on workspace
getScreen()->saveFocusLast(! getScreen()->doFocusLast());
setItemSelected(index, getScreen()->doFocusLast());
break;
}
case 6: { // window-to-window snapping
getScreen()->getBlackbox()->
saveWindowToWindowSnap(! getScreen()->getBlackbox()->
getWindowToWindowSnap());
setItemSelected(index, getScreen()->getBlackbox()->getWindowToWindowSnap());
setItemEnabled(index + 1,
getScreen()->getBlackbox()->getWindowToWindowSnap());
case 6: // window-to-window snapping
getScreen()->saveWindowToWindowSnap(! getScreen()->getWindowToWindowSnap());
setItemSelected(index, getScreen()->getWindowToWindowSnap());
setItemEnabled(index + 1, getScreen()->getWindowToWindowSnap());
break;
}
case 7: { // window corner snapping
getScreen()->getBlackbox()->
saveWindowCornerSnap(! getScreen()->getBlackbox()->getWindowCornerSnap());
setItemSelected(index, getScreen()->getBlackbox()->getWindowCornerSnap());
case 7: // window corner snapping
getScreen()->saveWindowCornerSnap(! getScreen()->getWindowCornerSnap());
setItemSelected(index, getScreen()->getWindowCornerSnap());
break;
}
case 8: { // hide toolbar
case 8: // hide toolbar
getScreen()->saveHideToolbar(! getScreen()->doHideToolbar());
setItemSelected(index, getScreen()->doHideToolbar());
break;
}
} // switch
}

View file

@ -424,6 +424,20 @@ void BScreen::saveHideToolbar(bool h) {
}
void BScreen::saveWindowToWindowSnap(bool s) {
resource.window_to_window_snap = s;
config->setValue(screenstr + "windowToWindowSnap",
resource.window_to_window_snap);
}
void BScreen::saveWindowCornerSnap(bool s) {
resource.window_corner_snap = s;
config->setValue(screenstr + "windowCornerSnap",
resource.window_corner_snap);
}
void BScreen::saveWorkspaces(unsigned int w) {
resource.workspaces = w;
config->setValue(screenstr + "workspaces", resource.workspaces);
@ -510,6 +524,8 @@ void BScreen::save_rc(void) {
saveFocusNew(resource.focus_new);
saveFocusLast(resource.focus_last);
saveHideToolbar(resource.hide_toolbar);
saveWindowToWindowSnap(resource.window_to_window_snap);
saveWindowCornerSnap(resource.window_corner_snap);
saveWorkspaces(resource.workspaces);
savePlacementPolicy(resource.placement_policy);
saveEdgeSnapThreshold(resource.edge_snap_threshold);
@ -549,6 +565,14 @@ void BScreen::load_rc(void) {
if (! config->getValue(screenstr + "hideToolbar", resource.hide_toolbar))
resource.hide_toolbar = false;
if (! config->getValue(screenstr + "windowToWindowSnap",
resource.window_to_window_snap))
resource.window_to_window_snap = true;
if (! config->getValue(screenstr + "windowCornerSnap",
resource.window_corner_snap))
resource.window_corner_snap = true;
if (! config->getValue(screenstr + "imageDither", b))
b = true;
image_control->setDither(b);

View file

@ -152,8 +152,8 @@ private:
MenuStyle mstyle;
bool sloppy_focus, auto_raise, auto_edge_balance, ordered_dither,
opaque_move, full_max, focus_new, focus_last, click_raise,
hide_toolbar;
opaque_move, full_max, focus_new, focus_last, click_raise,
hide_toolbar, window_to_window_snap, window_corner_snap;
BColor border_color;
unsigned int workspaces;
@ -216,6 +216,10 @@ public:
inline bool doFocusNew(void) const { return resource.focus_new; }
inline bool doFocusLast(void) const { return resource.focus_last; }
inline bool doHideToolbar(void) const { return resource.hide_toolbar; }
inline bool getWindowToWindowSnap(void) const
{ return resource.window_to_window_snap; }
inline bool getWindowCornerSnap(void) const
{ return resource.window_corner_snap; }
inline const GC &getOpGC(void) const { return opGC; }
@ -273,6 +277,8 @@ public:
void saveFocusNew(bool f);
void saveFocusLast(bool f);
void saveHideToolbar(bool h);
void saveWindowToWindowSnap(bool s);
void saveWindowCornerSnap(bool s);
inline void iconUpdate(void) { iconmenu->update(); }
#ifdef HAVE_STRFTIME

View file

@ -2524,7 +2524,7 @@ void BlackboxWindow::motionNotifyEvent(XMotionEvent *me) {
Workspace *w = screen->getWorkspace(getWorkspaceNumber());
assert(w);
if (blackbox->getWindowToWindowSnap()) {
if (screen->getWindowToWindowSnap()) {
// try snap to another window
for (unsigned int i = 0, c = w->getCount(); i < c; ++i) {
BlackboxWindow *snapwin = w->getWindow(i);
@ -2537,51 +2537,18 @@ void BlackboxWindow::motionNotifyEvent(XMotionEvent *me) {
dtop = std::abs(wbottom - winrect.top()),
dbottom = std::abs(wtop - winrect.bottom());
// snap left of other window?
if (dleft < snap_distance && dleft <= dright) {
dx = winrect.left() - frame.rect.width();
if (blackbox->getWindowCornerSnap()) {
// try corner-snap to its other sides
dtop = std::abs(wtop - winrect.top());
dbottom = std::abs(wbottom - winrect.bottom());
if (dtop < snap_distance && dtop <= dbottom)
dy = winrect.top();
else if (dbottom < snap_distance)
dy = winrect.bottom() - frame.rect.height();
}
continue;
}
// snap right of other window?
else if (dright < snap_distance) {
dx = winrect.right() + 1;
if (blackbox->getWindowCornerSnap()) {
// try corner-snap to its other sides
dtop = std::abs(wtop - winrect.top());
dbottom = std::abs(wbottom - winrect.bottom());
if (dtop < snap_distance && dtop <= dbottom)
dy = winrect.top();
else if (dbottom < snap_distance)
dy = winrect.bottom() - frame.rect.height();
}
continue;
}
// snap top of other window?
if (dtop < snap_distance && dtop <= dbottom) {
dy = winrect.top() - frame.rect.height();
if (blackbox->getWindowCornerSnap()) {
if (screen->getWindowCornerSnap()) {
// try corner-snap to its other sides
dleft = std::abs(wleft - winrect.left());
dright = std::abs(wright - winrect.right());
if (dleft < snap_distance && dleft <= dright)
dx = winrect.left();
else if (dright < snap_distance)
dx = winrect.right() - frame.rect.width();
dx = winrect.right() - frame.rect.width() + 1;
}
continue;
@ -2590,14 +2557,47 @@ void BlackboxWindow::motionNotifyEvent(XMotionEvent *me) {
else if (dbottom < snap_distance) {
dy = winrect.bottom() + 1;
if (blackbox->getWindowCornerSnap()) {
if (screen->getWindowCornerSnap()) {
// try corner-snap to its other sides
dleft = std::abs(wleft - winrect.left());
dright = std::abs(wright - winrect.right());
if (dleft < snap_distance && dleft <= dright)
dx = winrect.left();
else if (dright < snap_distance)
dx = winrect.right() - frame.rect.width();
dx = winrect.right() - frame.rect.width() + 1;
}
continue;
}
// snap left of other window?
if (dleft < snap_distance && dleft <= dright) {
dx = winrect.left() - frame.rect.width();
if (screen->getWindowCornerSnap()) {
// try corner-snap to its other sides
dtop = std::abs(wtop - winrect.top());
dbottom = std::abs(wbottom - winrect.bottom());
if (dtop < snap_distance && dtop <= dbottom)
dy = winrect.top();
else if (dbottom < snap_distance)
dy = winrect.bottom() - frame.rect.height() + 1;
}
continue;
}
// snap right of other window?
else if (dright < snap_distance) {
dx = winrect.right() + 1;
if (screen->getWindowCornerSnap()) {
// try corner-snap to its other sides
dtop = std::abs(wtop - winrect.top());
dbottom = std::abs(wbottom - winrect.bottom());
if (dtop < snap_distance && dtop <= dbottom)
dy = winrect.top();
else if (dbottom < snap_distance)
dy = winrect.bottom() - frame.rect.height() + 1;
}
continue;

View file

@ -895,18 +895,6 @@ void Blackbox::shutdown(void) {
}
void Blackbox::saveWindowToWindowSnap(bool s) {
resource.window_to_window_snap = s;
config.setValue("session.windowToWindowSnap", resource.window_to_window_snap);
}
void Blackbox::saveWindowCornerSnap(bool s) {
resource.window_corner_snap = s;
config.setValue("session.windowCornerSnap", resource.window_corner_snap);
}
/*
* Save all values as they are so that the defaults will be written to the rc
* file
@ -924,8 +912,6 @@ void Blackbox::save_rc(void) {
config.setValue("session.cacheMax", resource.cache_max);
config.setValue("session.styleFile", resource.style_file);
config.setValue("session.titlebarLayout", resource.titlebar_layout);
saveWindowToWindowSnap(resource.window_to_window_snap);
saveWindowCornerSnap(resource.window_corner_snap);
std::for_each(screenList.begin(), screenList.end(),
std::mem_fun(&BScreen::save_rc));
@ -973,14 +959,6 @@ void Blackbox::load_rc(void) {
if (! config.getValue("session.titlebarLayout", resource.titlebar_layout))
resource.titlebar_layout = "ILMC";
if (! config.getValue("session.windowToWindowSnap",
resource.window_to_window_snap))
resource.window_to_window_snap = true;
if (! config.getValue("session.windowCornerSnap",
resource.window_corner_snap))
resource.window_corner_snap = true;
}

View file

@ -115,8 +115,6 @@ private:
timeval auto_raise_delay;
unsigned long cache_life, cache_max;
std::string titlebar_layout;
bool window_to_window_snap;
bool window_corner_snap;
} resource;
typedef std::map<Window, BlackboxWindow*> WindowLookup;
@ -217,11 +215,6 @@ public:
inline unsigned long getCacheMax(void) const
{ return resource.cache_max; }
inline bool getWindowToWindowSnap(void) const
{ return resource.window_to_window_snap; }
inline bool getWindowCornerSnap(void) const
{ return resource.window_corner_snap; }
inline void setNoFocus(bool f) { no_focus = f; }
inline Cursor getSessionCursor(void) const
@ -236,8 +229,6 @@ public:
void setFocusedWindow(BlackboxWindow *w);
void shutdown(void);
void saveStyleFilename(const std::string& filename);
void saveWindowToWindowSnap(bool);
void saveWindowCornerSnap(bool);
void addMenuTimestamp(const std::string& filename);
void restart(const char *prog = 0);
void reconfigure(void);

324
util/Makefile.in Normal file
View file

@ -0,0 +1,324 @@
# Makefile.in generated automatically by automake 1.4-p4 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.
# util/Makefile.am for Blackbox - an X11 Window manager
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 = :
CC = @CC@
CXX = @CXX@
DEBUG = @DEBUG@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
NLS = @NLS@
PACKAGE = @PACKAGE@
VERSION = @VERSION@
gencat_cmd = @gencat_cmd@
regex_cmd = @regex_cmd@
CPPFLAGS = @CPPFLAGS@ @DEBUG@
bin_SCRIPTS = bsetbg
bin_PROGRAMS = bsetroot
bsetroot_SOURCES = bsetroot.cc
bsetroot_LDADD = ../src/BaseDisplay.o ../src/Color.o ../src/GCCache.o ../src/Texture.o ../src/Timer.o ../src/Image.o ../src/ImageControl.o ../src/i18n.o ../src/Util.o
MAINTAINERCLEANFILES = Makefile.in
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
PROGRAMS = $(bin_PROGRAMS)
DEFS = @DEFS@ -I. -I$(srcdir) -I..
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
X_CFLAGS = @X_CFLAGS@
X_LIBS = @X_LIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_PRE_LIBS = @X_PRE_LIBS@
bsetroot_OBJECTS = bsetroot.o
bsetroot_DEPENDENCIES = ../src/BaseDisplay.o ../src/Color.o \
../src/GCCache.o ../src/Texture.o ../src/Timer.o ../src/Image.o \
../src/ImageControl.o ../src/i18n.o ../src/Util.o
bsetroot_LDFLAGS =
SCRIPTS = $(bin_SCRIPTS)
CXXFLAGS = @CXXFLAGS@
CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@
DIST_COMMON = Makefile.am Makefile.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP_ENV = --best
SOURCES = $(bsetroot_SOURCES)
OBJECTS = $(bsetroot_OBJECTS)
all: all-redirect
.SUFFIXES:
.SUFFIXES: .S .c .cc .o .s
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --foreign --include-deps util/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
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 " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(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:
bsetroot: $(bsetroot_OBJECTS) $(bsetroot_DEPENDENCIES)
@rm -f bsetroot
$(CXXLINK) $(bsetroot_LDFLAGS) $(bsetroot_OBJECTS) $(bsetroot_LDADD) $(LIBS)
install-binSCRIPTS: $(bin_SCRIPTS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(bindir)
@list='$(bin_SCRIPTS)'; for p in $$list; do \
if test -f $$p; then \
echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \
$(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
else if test -f $(srcdir)/$$p; then \
echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \
$(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
else :; fi; fi; \
done
uninstall-binSCRIPTS:
@$(NORMAL_UNINSTALL)
list='$(bin_SCRIPTS)'; for p in $$list; do \
rm -f $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
done
.cc.o:
$(CXXCOMPILE) -c $<
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) $(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)$$unique$(LISP)$$tags" \
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$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 = util
distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$d/$$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
install-exec-am: install-binPROGRAMS install-binSCRIPTS
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-binSCRIPTS
uninstall: uninstall-am
all-am: Makefile $(PROGRAMS) $(SCRIPTS)
all-redirect: all-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
$(mkinstalldirs) $(DESTDIR)$(bindir) $(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 "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \
mostlyclean-tags mostlyclean-generic
mostlyclean: mostlyclean-am
clean-am: clean-binPROGRAMS clean-compile clean-tags clean-generic \
mostlyclean-am
clean: clean-am
distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \
distclean-generic clean-am distclean-local
distclean: distclean-am
maintainer-clean-am: maintainer-clean-binPROGRAMS \
maintainer-clean-compile 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-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \
maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \
mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile uninstall-binSCRIPTS install-binSCRIPTS tags \
mostlyclean-tags distclean-tags clean-tags maintainer-clean-tags \
distdir info-am info dvi-am dvi check check-am installcheck-am \
installcheck 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
distclean-local:
rm -f *\~ .\#*
# local dependencies
bsetroot.o: bsetroot.cc ../config.h ../src/i18n.hh \
../src/../nls/blackbox-nls.hh ../src/GCCache.hh ../src/BaseDisplay.hh \
../src/Timer.hh ../src/Color.hh ../src/Texture.hh ../src/Util.hh \
bsetroot.hh ../src/Image.hh
# 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: