compiles now. uses xft2

remove the nls remainders
This commit is contained in:
Dana Jansens 2002-10-31 08:42:45 +00:00
parent 0caf2ba931
commit 7bf96a9123
43 changed files with 136 additions and 2188 deletions

View file

@ -1,6 +1,6 @@
# Makefile.am for Openbox
SUBDIRS = data doc nls src util
SUBDIRS = data doc src util
MAINTAINERCLEANFILES = aclocal.m4 config.h.in configure Makefile.in stamp-h.in
uninstall-local:

View file

@ -1,3 +0,0 @@
Makefile
Makefile.in
blackbox-nls.hh

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,2 +0,0 @@
Makefile
Makefile.in

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,4 +0,0 @@
Makefile
Makefile.in
Translation.m
openbox.cat

View file

@ -1,35 +1,16 @@
# src/Makefile.am for Blackbox - an X11 Window manager
# Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
DEFAULT_MENU=$(pkgdatadir)/menu
DEFAULT_STYLE=$(pkgdatadir)/styles/mbdtex
CPPFLAGS=@CPPFLAGS@ @DEBUG@ \
-DLOCALEPATH=\"$(pkgdatadir)/nls\" \
CXXFLAGS=`pkg-config --cflags xft` @CXXFLAGS@ \
-DDEFAULTMENU=\"$(DEFAULT_MENU)\" \
-DDEFAULTSTYLE=\"$(DEFAULT_STYLE)\"
-DDEFAULTSTYLE=\"$(DEFAULT_STYLE)\" \
-Dmultibyte\(\)=True
LDFLAGS=`pkg-config --libs xft`
bin_PROGRAMS= openbox
openbox_SOURCES= BaseDisplay.cc Basemenu.cc Clientmenu.cc Color.cc Configmenu.cc Configuration.cc Font.cc GCCache.cc Iconmenu.cc Image.cc ImageControl.cc Netizen.cc Rootmenu.cc Screen.cc Slit.cc Texture.cc Timer.cc Toolbar.cc Util.cc Window.cc Windowmenu.cc Workspace.cc Workspacemenu.cc XAtom.cc blackbox.cc i18n.cc main.cc
openbox_SOURCES= basedisplay.cc color.cc configuration.cc font.cc gccache.cc image.cc imagecontrol.cc screen.cc texture.cc timer.cc util.cc window.cc workspace.cc xatom.cc blackbox.cc main.cc
MAINTAINERCLEANFILES= Makefile.in
@ -37,104 +18,3 @@ distclean-local:
rm -f *\~ *.orig *.rej .\#*
# local dependencies
BaseDisplay.o: BaseDisplay.cc i18n.hh ../nls/blackbox-nls.hh \
BaseDisplay.hh Timer.hh Util.hh GCCache.hh Color.hh
Basemenu.o: Basemenu.cc i18n.hh ../nls/blackbox-nls.hh blackbox.hh \
BaseDisplay.hh Timer.hh Util.hh Configuration.hh XAtom.hh Basemenu.hh \
Font.hh Screen.hh Color.hh Texture.hh Image.hh Configmenu.hh \
Iconmenu.hh Netizen.hh Rootmenu.hh Workspace.hh Workspacemenu.hh \
GCCache.hh
Clientmenu.o: Clientmenu.cc blackbox.hh i18n.hh ../nls/blackbox-nls.hh \
BaseDisplay.hh Timer.hh Util.hh Configuration.hh XAtom.hh \
Clientmenu.hh Basemenu.hh Screen.hh Color.hh Texture.hh Image.hh \
Configmenu.hh Iconmenu.hh Netizen.hh Rootmenu.hh Workspace.hh \
Workspacemenu.hh Window.hh Windowmenu.hh
Color.o: Color.cc Color.hh BaseDisplay.hh Timer.hh Util.hh
Configmenu.o: Configmenu.cc i18n.hh ../nls/blackbox-nls.hh \
Configmenu.hh Basemenu.hh Image.hh Timer.hh BaseDisplay.hh Util.hh \
Color.hh Toolbar.hh Screen.hh Texture.hh Iconmenu.hh Netizen.hh \
Rootmenu.hh Workspace.hh Workspacemenu.hh blackbox.hh \
Configuration.hh XAtom.hh Window.hh Windowmenu.hh
Configuration.o: Configuration.cc ../config.h Configuration.hh Util.hh
Font.o: Font.cc i18n.hh ../nls/blackbox-nls.hh Font.hh Screen.hh \
Color.hh Texture.hh Util.hh Image.hh Timer.hh BaseDisplay.hh \
Configmenu.hh Basemenu.hh Iconmenu.hh Netizen.hh Rootmenu.hh \
Workspace.hh Workspacemenu.hh blackbox.hh Configuration.hh XAtom.hh \
GCCache.hh
GCCache.o: GCCache.cc GCCache.hh BaseDisplay.hh Timer.hh Util.hh \
Color.hh
Iconmenu.o: Iconmenu.cc i18n.hh ../nls/blackbox-nls.hh Iconmenu.hh \
Basemenu.hh Screen.hh Color.hh Texture.hh Util.hh Image.hh Timer.hh \
BaseDisplay.hh Configmenu.hh Netizen.hh Rootmenu.hh Workspace.hh \
Workspacemenu.hh blackbox.hh Configuration.hh XAtom.hh Window.hh \
Windowmenu.hh
Image.o: Image.cc blackbox.hh i18n.hh ../nls/blackbox-nls.hh \
BaseDisplay.hh Timer.hh Util.hh Configuration.hh XAtom.hh GCCache.hh \
Color.hh Image.hh Texture.hh
ImageControl.o: ImageControl.cc blackbox.hh i18n.hh \
../nls/blackbox-nls.hh BaseDisplay.hh Timer.hh Util.hh \
Configuration.hh XAtom.hh Color.hh Image.hh Texture.hh
Netizen.o: Netizen.cc Netizen.hh Screen.hh Color.hh Texture.hh Util.hh \
Image.hh Timer.hh BaseDisplay.hh Configmenu.hh Basemenu.hh \
Iconmenu.hh Rootmenu.hh Workspace.hh Workspacemenu.hh blackbox.hh \
i18n.hh ../nls/blackbox-nls.hh Configuration.hh XAtom.hh
Rootmenu.o: Rootmenu.cc blackbox.hh i18n.hh ../nls/blackbox-nls.hh \
BaseDisplay.hh Timer.hh Util.hh Configuration.hh XAtom.hh Rootmenu.hh \
Basemenu.hh Screen.hh Color.hh Texture.hh Image.hh Configmenu.hh \
Iconmenu.hh Netizen.hh Workspace.hh Workspacemenu.hh
Screen.o: Screen.cc ../config.h i18n.hh ../nls/blackbox-nls.hh \
blackbox.hh BaseDisplay.hh Timer.hh Util.hh Configuration.hh XAtom.hh \
Clientmenu.hh Basemenu.hh Font.hh Screen.hh Color.hh Texture.hh \
Image.hh Configmenu.hh Iconmenu.hh Netizen.hh Rootmenu.hh \
Workspace.hh Workspacemenu.hh GCCache.hh Slit.hh Toolbar.hh Window.hh \
Windowmenu.hh
Slit.o: Slit.cc i18n.hh ../nls/blackbox-nls.hh blackbox.hh \
BaseDisplay.hh Timer.hh Util.hh Configuration.hh XAtom.hh Image.hh \
Color.hh Screen.hh Texture.hh Configmenu.hh Basemenu.hh Iconmenu.hh \
Netizen.hh Rootmenu.hh Workspace.hh Workspacemenu.hh Slit.hh \
Toolbar.hh
Texture.o: Texture.cc Texture.hh Color.hh Util.hh BaseDisplay.hh \
Timer.hh Image.hh Screen.hh Configmenu.hh Basemenu.hh Iconmenu.hh \
Netizen.hh Rootmenu.hh Workspace.hh Workspacemenu.hh blackbox.hh \
i18n.hh ../nls/blackbox-nls.hh Configuration.hh XAtom.hh
Timer.o: Timer.cc BaseDisplay.hh Timer.hh Util.hh
Toolbar.o: Toolbar.cc i18n.hh ../nls/blackbox-nls.hh blackbox.hh \
BaseDisplay.hh Timer.hh Util.hh Configuration.hh XAtom.hh \
Clientmenu.hh Basemenu.hh Font.hh Screen.hh Color.hh Texture.hh \
Image.hh Configmenu.hh Iconmenu.hh Netizen.hh Rootmenu.hh \
Workspace.hh Workspacemenu.hh GCCache.hh Toolbar.hh Window.hh \
Windowmenu.hh Slit.hh
Util.o: Util.cc Util.hh
Window.o: Window.cc i18n.hh ../nls/blackbox-nls.hh blackbox.hh \
BaseDisplay.hh Timer.hh Util.hh Configuration.hh XAtom.hh Font.hh \
Screen.hh Color.hh Texture.hh Image.hh Configmenu.hh Basemenu.hh \
Iconmenu.hh Netizen.hh Rootmenu.hh Workspace.hh Workspacemenu.hh \
GCCache.hh Toolbar.hh Window.hh Windowmenu.hh Slit.hh
Windowmenu.o: Windowmenu.cc i18n.hh ../nls/blackbox-nls.hh blackbox.hh \
BaseDisplay.hh Timer.hh Util.hh Configuration.hh XAtom.hh Screen.hh \
Color.hh Texture.hh Image.hh Configmenu.hh Basemenu.hh Iconmenu.hh \
Netizen.hh Rootmenu.hh Workspace.hh Workspacemenu.hh Window.hh \
Windowmenu.hh
Workspace.o: Workspace.cc i18n.hh ../nls/blackbox-nls.hh blackbox.hh \
BaseDisplay.hh Timer.hh Util.hh Configuration.hh XAtom.hh \
Clientmenu.hh Basemenu.hh Netizen.hh Screen.hh Color.hh Texture.hh \
Image.hh Configmenu.hh Iconmenu.hh Rootmenu.hh Workspace.hh \
Workspacemenu.hh Toolbar.hh Window.hh Windowmenu.hh
Workspacemenu.o: Workspacemenu.cc i18n.hh ../nls/blackbox-nls.hh \
blackbox.hh BaseDisplay.hh Timer.hh Util.hh Configuration.hh XAtom.hh \
Screen.hh Color.hh Texture.hh Image.hh Configmenu.hh Basemenu.hh \
Iconmenu.hh Netizen.hh Rootmenu.hh Workspace.hh Workspacemenu.hh \
Toolbar.hh
XAtom.o: XAtom.cc ../config.h XAtom.hh Screen.hh Color.hh Texture.hh \
Util.hh Image.hh Timer.hh BaseDisplay.hh Configmenu.hh Basemenu.hh \
Iconmenu.hh Netizen.hh Rootmenu.hh Workspace.hh Workspacemenu.hh \
blackbox.hh i18n.hh ../nls/blackbox-nls.hh Configuration.hh
blackbox.o: blackbox.cc i18n.hh ../nls/blackbox-nls.hh blackbox.hh \
BaseDisplay.hh Timer.hh Util.hh Configuration.hh XAtom.hh Basemenu.hh \
Clientmenu.hh GCCache.hh Color.hh Image.hh Rootmenu.hh Screen.hh \
Texture.hh Configmenu.hh Iconmenu.hh Netizen.hh Workspace.hh \
Workspacemenu.hh Slit.hh Toolbar.hh Window.hh Windowmenu.hh
i18n.o: i18n.cc i18n.hh ../nls/blackbox-nls.hh
main.o: main.cc ../version.h i18n.hh ../nls/blackbox-nls.hh \
blackbox.hh BaseDisplay.hh Timer.hh Util.hh Configuration.hh XAtom.hh

View file

@ -1,25 +1,4 @@
// -*- mode: C++; indent-tabs-mode: nil; -*-
// BaseDisplay.cc for Blackbox - an X11 Window manager
// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh@debian.org>
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
#ifdef HAVE_CONFIG_H
# include "../config.h"
@ -102,9 +81,7 @@ static int handleXErrors(Display *d, XErrorEvent *e) {
char errtxt[128];
XGetErrorText(d, e->error_code, errtxt, 128);
fprintf(stderr,
i18n(BaseDisplaySet, BaseDisplayXError,
"%s: X error: %s(%d) opcodes %d/%d\n resource 0x%lx\n"),
fprintf(stderr, "%s: X error: %s(%d) opcodes %d/%d\n resource 0x%lx\n",
base_display->getApplicationName(), errtxt, e->error_code,
e->request_code, e->minor_code, e->resourceid);
#else
@ -121,11 +98,7 @@ static int handleXErrors(Display *d, XErrorEvent *e) {
// signal handler to allow for proper and gentle shutdown
#ifndef HAVE_SIGACTION
static RETSIGTYPE signalhandler(int sig) {
#else // HAVE_SIGACTION
static void signalhandler(int sig) {
#endif // HAVE_SIGACTION
static int re_enter = 0;
@ -133,41 +106,25 @@ static void signalhandler(int sig) {
case SIGCHLD:
int status;
waitpid(-1, &status, WNOHANG | WUNTRACED);
#ifndef HAVE_SIGACTION
// assume broken, braindead sysv signal semantics
signal(SIGCHLD, (RETSIGTYPE (*)(int)) signalhandler);
#endif // HAVE_SIGACTION
break;
default:
if (base_display->handleSignal(sig)) {
#ifndef HAVE_SIGACTION
// assume broken, braindead sysv signal semantics
signal(sig, (RETSIGTYPE (*)(int)) signalhandler);
#endif // HAVE_SIGACTION
if (base_display->handleSignal(sig))
return;
}
fprintf(stderr, i18n(BaseDisplaySet, BaseDisplaySignalCaught,
"%s: signal %d caught\n"),
fprintf(stderr, "%s: signal %d caught\n",
base_display->getApplicationName(), sig);
if (! base_display->isStartup() && ! re_enter) {
internal_error = True;
re_enter = 1;
fprintf(stderr, i18n(BaseDisplaySet, BaseDisplayShuttingDown,
"shutting down\n"));
fprintf(stderr, "shutting down\n");
base_display->shutdown();
}
if (sig != SIGTERM && sig != SIGINT) {
fprintf(stderr, i18n(BaseDisplaySet, BaseDisplayAborting,
"aborting... dumping core\n"));
fprintf(stderr, "aborting... dumping core\n");
abort();
}
@ -185,7 +142,6 @@ BaseDisplay::BaseDisplay(const char *app_name, const char *dpy_name) {
::base_display = this;
#ifdef HAVE_SIGACTION
struct sigaction action;
action.sa_handler = signalhandler;
@ -201,28 +157,15 @@ BaseDisplay::BaseDisplay(const char *app_name, const char *dpy_name) {
sigaction(SIGHUP, &action, NULL);
sigaction(SIGUSR1, &action, NULL);
sigaction(SIGUSR2, &action, NULL);
#else // !HAVE_SIGACTION
signal(SIGPIPE, (RETSIGTYPE (*)(int)) signalhandler);
signal(SIGSEGV, (RETSIGTYPE (*)(int)) signalhandler);
signal(SIGFPE, (RETSIGTYPE (*)(int)) signalhandler);
signal(SIGTERM, (RETSIGTYPE (*)(int)) signalhandler);
signal(SIGINT, (RETSIGTYPE (*)(int)) signalhandler);
signal(SIGUSR1, (RETSIGTYPE (*)(int)) signalhandler);
signal(SIGUSR2, (RETSIGTYPE (*)(int)) signalhandler);
signal(SIGHUP, (RETSIGTYPE (*)(int)) signalhandler);
signal(SIGCHLD, (RETSIGTYPE (*)(int)) signalhandler);
#endif // HAVE_SIGACTION
if (! (display = XOpenDisplay(dpy_name))) {
fprintf(stderr,
i18n(BaseDisplaySet, BaseDisplayXConnectFail,
"BaseDisplay::BaseDisplay: connection to X server failed.\n"));
"BaseDisplay::BaseDisplay: connection to X server failed.\n");
::exit(2);
} else if (fcntl(ConnectionNumber(display), F_SETFD, 1) == -1) {
fprintf(stderr,
i18n(BaseDisplaySet, BaseDisplayCloseOnExecFail,
"BaseDisplay::BaseDisplay: couldn't mark display connection "
"as close-on-exec\n"));
"BaseDisplay::BaseDisplay: couldn't mark display connection "
"as close-on-exec\n");
::exit(2);
}

View file

@ -97,24 +97,18 @@ extern "C" {
using std::string;
#include "blackbox.hh"
#include "basemenu.hh"
#include "clientmenu.hh"
#include "gccache.hh"
#include "image.hh"
#include "rootmenu.hh"
#include "screen.hh"
#include "slit.hh"
#include "toolbar.hh"
#include "util.hh"
#include "window.hh"
#include "workspace.hh"
#include "workspacemenu.hh"
#include "xatom.hh"
Blackbox *blackbox;
Blackbox::Blackbox(char **m_argv, char *dpy_name, char *rc, char *menu)
Blackbox::Blackbox(char **m_argv, char *dpy_name, char *rc)
: BaseDisplay(m_argv[0], dpy_name) {
if (! XSupportsLocale())
fprintf(stderr, "X server does not support locale\n");
@ -134,17 +128,6 @@ Blackbox::Blackbox(char **m_argv, char *dpy_name, char *rc, char *menu)
rc_file = expandTilde(rc);
config.setFile(rc_file);
string rcmenu;
if (! menu) {
//have to come up with something better than this
config.load();
if (! config.getValue("session.menuFile", rcmenu))
rcmenu = "~/.openbox/menu";
} else {
rcmenu = menu;
}
menu_file = expandTilde(rcmenu.c_str());
no_focus = False;
resource.auto_raise_delay.tv_sec = resource.auto_raise_delay.tv_usec = 0;
@ -176,8 +159,7 @@ Blackbox::Blackbox(char **m_argv, char *dpy_name, char *rc, char *menu)
if (screenList.empty()) {
fprintf(stderr,
i18n(blackboxSet, blackboxNoManagableScreens,
"Blackbox::Blackbox: no managable screens found, aborting.\n"));
"Blackbox::Blackbox: no managable screens found, aborting.\n");
::exit(3);
}
@ -191,7 +173,7 @@ Blackbox::Blackbox(char **m_argv, char *dpy_name, char *rc, char *menu)
XSynchronize(getXDisplay(), False);
XSync(getXDisplay(), False);
reconfigure_wait = reread_menu_wait = False;
reconfigure_wait = False;
timer = new BTimer(this, this);
timer->setTimeout(0l);
@ -201,9 +183,6 @@ Blackbox::Blackbox(char **m_argv, char *dpy_name, char *rc, char *menu)
Blackbox::~Blackbox(void) {
std::for_each(screenList.begin(), screenList.end(), PointerAssassin());
std::for_each(menuTimestamps.begin(), menuTimestamps.end(),
PointerAssassin());
delete xatom;
delete timer;
@ -219,9 +198,6 @@ void Blackbox::process_event(XEvent *e) {
last_time = e->xbutton.time;
BlackboxWindow *win = (BlackboxWindow *) 0;
Basemenu *menu = (Basemenu *) 0;
Slit *slit = (Slit *) 0;
Toolbar *tbar = (Toolbar *) 0;
BScreen *scrn = (BScreen *) 0;
if ((win = searchWindow(e->xbutton.window))) {
@ -230,12 +206,6 @@ void Blackbox::process_event(XEvent *e) {
/* XXX: is this sane on low colour desktops? */
if (e->xbutton.button == 1)
win->installColormap(True);
} else if ((menu = searchMenu(e->xbutton.window))) {
menu->buttonPressEvent(&e->xbutton);
} else if ((slit = searchSlit(e->xbutton.window))) {
slit->buttonPressEvent(&e->xbutton);
} else if ((tbar = searchToolbar(e->xbutton.window))) {
tbar->buttonPressEvent(&e->xbutton);
} else if ((scrn = searchScreen(e->xbutton.window))) {
scrn->buttonPressEvent(&e->xbutton);
if (active_screen != scrn) {
@ -256,27 +226,18 @@ void Blackbox::process_event(XEvent *e) {
last_time = e->xbutton.time;
BlackboxWindow *win = (BlackboxWindow *) 0;
Basemenu *menu = (Basemenu *) 0;
Toolbar *tbar = (Toolbar *) 0;
if ((win = searchWindow(e->xbutton.window)))
win->buttonReleaseEvent(&e->xbutton);
else if ((menu = searchMenu(e->xbutton.window)))
menu->buttonReleaseEvent(&e->xbutton);
else if ((tbar = searchToolbar(e->xbutton.window)))
tbar->buttonReleaseEvent(&e->xbutton);
break;
}
case ConfigureRequest: {
BlackboxWindow *win = (BlackboxWindow *) 0;
Slit *slit = (Slit *) 0;
if ((win = searchWindow(e->xconfigurerequest.window))) {
win->configureRequestEvent(&e->xconfigurerequest);
} else if ((slit = searchSlit(e->xconfigurerequest.window))) {
slit->configureRequestEvent(&e->xconfigurerequest);
} else {
if (validateWindow(e->xconfigurerequest.window)) {
XWindowChanges xwc;
@ -354,13 +315,10 @@ void Blackbox::process_event(XEvent *e) {
case UnmapNotify: {
BlackboxWindow *win = (BlackboxWindow *) 0;
Slit *slit = (Slit *) 0;
BScreen *screen = (BScreen *) 0;
if ((win = searchWindow(e->xunmap.window))) {
win->unmapNotifyEvent(&e->xunmap);
} else if ((slit = searchSlit(e->xunmap.window))) {
slit->unmapNotifyEvent(&e->xunmap);
} else if ((screen = searchSystrayWindow(e->xunmap.window))) {
screen->removeSystrayWindow(e->xunmap.window);
}
@ -370,14 +328,11 @@ void Blackbox::process_event(XEvent *e) {
case DestroyNotify: {
BlackboxWindow *win = (BlackboxWindow *) 0;
Slit *slit = (Slit *) 0;
BScreen *screen = (BScreen *) 0;
BWindowGroup *group = (BWindowGroup *) 0;
if ((win = searchWindow(e->xdestroywindow.window))) {
win->destroyNotifyEvent(&e->xdestroywindow);
} else if ((slit = searchSlit(e->xdestroywindow.window))) {
slit->removeClient(e->xdestroywindow.window, False);
} else if ((group = searchGroup(e->xdestroywindow.window))) {
delete group;
} else if ((screen = searchSystrayWindow(e->xunmap.window))) {
@ -395,13 +350,8 @@ void Blackbox::process_event(XEvent *e) {
to an already unmapped window.
*/
BlackboxWindow *win = searchWindow(e->xreparent.window);
if (win) {
if (win)
win->reparentNotifyEvent(&e->xreparent);
} else {
Slit *slit = searchSlit(e->xreparent.window);
if (slit && slit->getWindowID() != e->xreparent.parent)
slit->removeClient(e->xreparent.window, True);
}
break;
}
@ -428,12 +378,9 @@ void Blackbox::process_event(XEvent *e) {
last_time = e->xmotion.time;
BlackboxWindow *win = (BlackboxWindow *) 0;
Basemenu *menu = (Basemenu *) 0;
if ((win = searchWindow(e->xmotion.window)))
win->motionNotifyEvent(&e->xmotion);
else if ((menu = searchMenu(e->xmotion.window)))
menu->motionNotifyEvent(&e->xmotion);
break;
}
@ -456,9 +403,6 @@ void Blackbox::process_event(XEvent *e) {
BScreen *screen = (BScreen *) 0;
BlackboxWindow *win = (BlackboxWindow *) 0;
Basemenu *menu = (Basemenu *) 0;
Toolbar *tbar = (Toolbar *) 0;
Slit *slit = (Slit *) 0;
if (e->xcrossing.mode == NotifyGrab) break;
@ -468,12 +412,6 @@ void Blackbox::process_event(XEvent *e) {
} else if ((win = searchWindow(e->xcrossing.window))) {
if (! no_focus)
win->enterNotifyEvent(&e->xcrossing);
} else if ((menu = searchMenu(e->xcrossing.window))) {
menu->enterNotifyEvent(&e->xcrossing);
} else if ((tbar = searchToolbar(e->xcrossing.window))) {
tbar->enterNotifyEvent(&e->xcrossing);
} else if ((slit = searchSlit(e->xcrossing.window))) {
slit->enterNotifyEvent(&e->xcrossing);
}
break;
}
@ -482,18 +420,9 @@ void Blackbox::process_event(XEvent *e) {
last_time = e->xcrossing.time;
BlackboxWindow *win = (BlackboxWindow *) 0;
Basemenu *menu = (Basemenu *) 0;
Toolbar *tbar = (Toolbar *) 0;
Slit *slit = (Slit *) 0;
if ((menu = searchMenu(e->xcrossing.window)))
menu->leaveNotifyEvent(&e->xcrossing);
else if ((win = searchWindow(e->xcrossing.window)))
if ((win = searchWindow(e->xcrossing.window)))
win->leaveNotifyEvent(&e->xcrossing);
else if ((tbar = searchToolbar(e->xcrossing.window)))
tbar->leaveNotifyEvent(&e->xcrossing);
else if ((slit = searchSlit(e->xcrossing.window)))
slit->leaveNotifyEvent(&e->xcrossing);
break;
}
@ -526,25 +455,14 @@ void Blackbox::process_event(XEvent *e) {
e->xexpose.height = ey2 - ey1 + 1;
BlackboxWindow *win = (BlackboxWindow *) 0;
Basemenu *menu = (Basemenu *) 0;
Toolbar *tbar = (Toolbar *) 0;
if ((win = searchWindow(e->xexpose.window)))
win->exposeEvent(&e->xexpose);
else if ((menu = searchMenu(e->xexpose.window)))
menu->exposeEvent(&e->xexpose);
else if ((tbar = searchToolbar(e->xexpose.window)))
tbar->exposeEvent(&e->xexpose);
break;
}
case KeyPress: {
Toolbar *tbar = searchToolbar(e->xkey.window);
if (tbar && tbar->isEditing())
tbar->keyPressEvent(&e->xkey);
break;
}
@ -916,28 +834,6 @@ void Blackbox::process_event(XEvent *e) {
}
}
}
} else if (e->xclient.message_type ==
xatom->getAtom(XAtom::openbox_show_root_menu) ||
e->xclient.message_type ==
xatom->getAtom(XAtom::openbox_show_workspace_menu)) {
// find the screen the mouse is on
int x, y;
ScreenList::iterator it, end = screenList.end();
for (it = screenList.begin(); it != end; ++it) {
Window w;
int i;
unsigned int m;
if (XQueryPointer(getXDisplay(), (*it)->getRootWindow(),
&w, &w, &x, &y, &i, &i, &m))
break;
}
if (it != end) {
if (e->xclient.message_type ==
xatom->getAtom(XAtom::openbox_show_root_menu))
(*it)->showRootMenu(x, y);
else
(*it)->showWorkspaceMenu(x, y);
}
}
}
@ -975,7 +871,6 @@ bool Blackbox::handleSignal(int sig) {
break;
case SIGUSR2:
rereadMenu();
break;
case SIGPIPE:
@ -1045,33 +940,6 @@ BWindowGroup *Blackbox::searchGroup(Window window) {
}
Basemenu *Blackbox::searchMenu(Window window) {
MenuLookup::iterator it = menuSearchList.find(window);
if (it != menuSearchList.end())
return it->second;
return (Basemenu*) 0;
}
Toolbar *Blackbox::searchToolbar(Window window) {
ToolbarLookup::iterator it = toolbarSearchList.find(window);
if (it != toolbarSearchList.end())
return it->second;
return (Toolbar*) 0;
}
Slit *Blackbox::searchSlit(Window window) {
SlitLookup::iterator it = slitSearchList.find(window);
if (it != slitSearchList.end())
return it->second;
return (Slit*) 0;
}
void Blackbox::saveSystrayWindowSearch(Window window, BScreen *screen) {
systraySearchList.insert(WindowScreenLookupPair(window, screen));
}
@ -1087,21 +955,6 @@ void Blackbox::saveGroupSearch(Window window, BWindowGroup *data) {
}
void Blackbox::saveMenuSearch(Window window, Basemenu *data) {
menuSearchList.insert(MenuLookupPair(window, data));
}
void Blackbox::saveToolbarSearch(Window window, Toolbar *data) {
toolbarSearchList.insert(ToolbarLookupPair(window, data));
}
void Blackbox::saveSlitSearch(Window window, Slit *data) {
slitSearchList.insert(SlitLookupPair(window, data));
}
void Blackbox::removeSystrayWindowSearch(Window window) {
systraySearchList.erase(window);
}
@ -1117,21 +970,6 @@ void Blackbox::removeGroupSearch(Window window) {
}
void Blackbox::removeMenuSearch(Window window) {
menuSearchList.erase(window);
}
void Blackbox::removeToolbarSearch(Window window) {
toolbarSearchList.erase(window);
}
void Blackbox::removeSlitSearch(Window window) {
slitSearchList.erase(window);
}
void Blackbox::restart(const char *prog) {
shutdown();
@ -1318,10 +1156,6 @@ void Blackbox::reconfigure(void) {
void Blackbox::real_reconfigure(void) {
load_rc();
std::for_each(menuTimestamps.begin(), menuTimestamps.end(),
PointerAssassin());
menuTimestamps.clear();
gcCache()->purge();
std::for_each(screenList.begin(), screenList.end(),
@ -1329,42 +1163,6 @@ void Blackbox::real_reconfigure(void) {
}
void Blackbox::checkMenu(void) {
bool reread = False;
MenuTimestampList::iterator it = menuTimestamps.begin();
for(; it != menuTimestamps.end(); ++it) {
MenuTimestamp *tmp = *it;
struct stat buf;
if (! stat(tmp->filename.c_str(), &buf)) {
if (tmp->timestamp != buf.st_ctime)
reread = True;
} else {
reread = True;
}
}
if (reread) rereadMenu();
}
void Blackbox::rereadMenu(void) {
reread_menu_wait = True;
if (! timer->isTiming()) timer->start();
}
void Blackbox::real_rereadMenu(void) {
std::for_each(menuTimestamps.begin(), menuTimestamps.end(),
PointerAssassin());
menuTimestamps.clear();
std::for_each(screenList.begin(), screenList.end(),
std::mem_fun(&BScreen::rereadMenu));
}
void Blackbox::saveStyleFilename(const string& filename) {
assert(! filename.empty());
resource.style_file = filename;
@ -1372,37 +1170,11 @@ void Blackbox::saveStyleFilename(const string& filename) {
}
void Blackbox::addMenuTimestamp(const string& filename) {
assert(! filename.empty());
bool found = False;
MenuTimestampList::iterator it = menuTimestamps.begin();
for (; it != menuTimestamps.end() && ! found; ++it) {
if ((*it)->filename == filename) found = True;
}
if (! found) {
struct stat buf;
if (! stat(filename.c_str(), &buf)) {
MenuTimestamp *ts = new MenuTimestamp;
ts->filename = filename;
ts->timestamp = buf.st_ctime;
menuTimestamps.push_back(ts);
}
}
}
void Blackbox::timeout(void) {
if (reconfigure_wait)
real_reconfigure();
if (reread_menu_wait)
real_rereadMenu();
reconfigure_wait = reread_menu_wait = False;
reconfigure_wait = False;
}
@ -1453,12 +1225,10 @@ void Blackbox::setFocusedWindow(BlackboxWindow *win) {
}
if (active_screen && active_screen->isScreenManaged()) {
active_screen->getToolbar()->redrawWindowLabel(True);
active_screen->updateNetizenWindowFocus();
}
if (old_screen && old_screen != active_screen) {
old_screen->getToolbar()->redrawWindowLabel(True);
old_screen->updateNetizenWindowFocus();
}
}

View file

@ -88,11 +88,6 @@ class BScreen;
class Blackbox;
class BlackboxWindow;
class BWindowGroup;
class Basemenu;
class Toolbar;
class Slit;
extern I18n i18n;
class Blackbox : public BaseDisplay, public TimeoutHandler {
private:
@ -101,11 +96,6 @@ private:
};
BCursor cursor;
struct MenuTimestamp {
std::string filename;
time_t timestamp;
};
struct BResource {
Time double_click_interval;
@ -134,21 +124,6 @@ private:
typedef GroupLookup::value_type GroupLookupPair;
GroupLookup groupSearchList;
typedef std::map<Window, Basemenu*> MenuLookup;
typedef MenuLookup::value_type MenuLookupPair;
MenuLookup menuSearchList;
typedef std::map<Window, Toolbar*> ToolbarLookup;
typedef ToolbarLookup::value_type ToolbarLookupPair;
ToolbarLookup toolbarSearchList;
typedef std::map<Window, Slit*> SlitLookup;
typedef SlitLookup::value_type SlitLookupPair;
SlitLookup slitSearchList;
typedef std::list<MenuTimestamp*> MenuTimestampList;
MenuTimestampList menuTimestamps;
typedef std::list<BScreen*> ScreenList;
ScreenList screenList;
@ -158,33 +133,29 @@ private:
Configuration config;
XAtom *xatom;
bool no_focus, reconfigure_wait, reread_menu_wait;
bool no_focus, reconfigure_wait;
Time last_time;
char **argv;
std::string menu_file, rc_file;
std::string rc_file;
Blackbox(const Blackbox&);
Blackbox& operator=(const Blackbox&);
void load_rc(void);
void save_rc(void);
void real_rereadMenu(void);
void real_reconfigure(void);
virtual void process_event(XEvent *);
public:
Blackbox(char **m_argv, char *dpy_name = 0, char *rc = 0, char *menu = 0);
Blackbox(char **m_argv, char *dpy_name = 0, char *rc = 0);
virtual ~Blackbox(void);
Basemenu *searchMenu(Window window);
BWindowGroup *searchGroup(Window window);
BScreen *searchSystrayWindow(Window window);
BlackboxWindow *searchWindow(Window window);
BScreen *searchScreen(Window window);
Toolbar *searchToolbar(Window);
Slit *searchSlit(Window);
#ifdef XINERAMA
inline bool doXineramaPlacement(void) const
@ -199,18 +170,12 @@ public:
void saveXineramaSnapping(bool x);
#endif // XINERAMA
void saveMenuSearch(Window window, Basemenu *data);
void saveSystrayWindowSearch(Window window, BScreen *screen);
void saveWindowSearch(Window window, BlackboxWindow *data);
void saveGroupSearch(Window window, BWindowGroup *data);
void saveToolbarSearch(Window window, Toolbar *data);
void saveSlitSearch(Window window, Slit *data);
void removeMenuSearch(Window window);
void removeSystrayWindowSearch(Window window);
void removeWindowSearch(Window window);
void removeGroupSearch(Window window);
void removeToolbarSearch(Window window);
void removeSlitSearch(Window window);
inline XAtom *getXAtom(void) { return xatom; }
@ -224,8 +189,6 @@ public:
inline const char *getStyleFilename(void) const
{ return resource.style_file.c_str(); }
inline const char *getMenuFilename(void) const
{ return menu_file.c_str(); }
inline int getColorsPerChannel(void) const
{ return resource.colors_per_channel; }
@ -263,11 +226,8 @@ public:
void setChangingWindow(BlackboxWindow *win);
void shutdown(void);
void saveStyleFilename(const std::string& filename);
void addMenuTimestamp(const std::string& filename);
void restart(const char *prog = 0);
void reconfigure(void);
void rereadMenu(void);
void checkMenu(void);
bool validateWindow(Window window);
@ -275,9 +235,7 @@ public:
virtual void timeout(void);
#ifndef HAVE_STRFTIME
enum { B_AmericanDate = 1, B_EuropeanDate };
#endif // HAVE_STRFTIME
};

View file

@ -45,7 +45,6 @@ using std::endl;
string BFont::_fallback_font = "fixed";
#ifdef XFT
BFont::BFont(Display *d, BScreen *screen, const string &family, int size,
bool bold, bool italic, bool shadow, unsigned char offset,
unsigned char tint, bool antialias) :
@ -60,10 +59,7 @@ BFont::BFont(Display *d, BScreen *screen, const string &family, int size,
_shadow(shadow),
_offset(offset),
_tint(tint),
_xftfont(0),
_font(0),
_fontset(0),
_fontset_extents(0) {
_xftfont(0) {
_valid = False;
_xftfont = XftFontOpen(_display, _screen->getScreenNumber(),
@ -80,177 +76,13 @@ BFont::BFont(Display *d, BScreen *screen, const string &family, int size,
if (! _xftfont)
return; // failure
_font = XLoadQueryFont(_display, buildXlfd().c_str());
if (! _font)
return; // failure
_valid = True;
}
#endif
BFont::BFont(Display *d, BScreen *screen, const string &xlfd) :
_display(d),
_screen(screen),
#ifdef XFT
_antialias(False),
_shadow(False),
_xftfont(0),
#endif // XFT
_font(0),
_fontset(0),
_fontset_extents(0) {
string int_xlfd;
if (xlfd.empty())
int_xlfd = _fallback_font;
else
int_xlfd = xlfd;
if ((_valid = createXFont(int_xlfd)))
return; // success
if (int_xlfd != _fallback_font) {
// try the fallback
cerr << "BFont::BFont(): couldn't load font '" << _family << "'" << endl <<
"Falling back to default '" << _fallback_font << "'" << endl;
if ((_valid = createXFont(_fallback_font)))
return; // success
}
cerr << "BFont::BFont(): couldn't load font '" << _family << "'" << endl <<
"Giving up!" << endl;
return; // failure
}
bool BFont::createXFont(const std::string &xlfd) {
/*
Even though this is only used for font sets (multibyte), it is still parsed
out so that the bold/italic/etc information is still available from the
class when using non-multibyte.
This is where _simplename, _bold, _italic, and _size are initialized, since
they are not initialized in the constructor. This needs to occur before
calling any Xlfd-building functions.
*/
if (! parseXlfd(xlfd))
return False;
if (i18n.multibyte()) {
char **missing, *def = "-";
int nmissing;
_fontset = XCreateFontSet(_display, buildMultibyteXlfd().c_str(),
&missing, &nmissing, &def);
if (nmissing) XFreeStringList(missing);
if (_fontset)
_fontset_extents = XExtentsOfFontSet(_fontset);
else
return False;
assert(_fontset_extents);
}
_font = XLoadQueryFont(_display, xlfd.c_str());
if (! _font)
return False;
return True;
}
BFont::~BFont(void) {
#ifdef XFT
if (_xftfont)
XftFontClose(_display, _xftfont);
#endif // XFT
if (i18n.multibyte() && _fontset)
XFreeFontSet(_display, _fontset);
if (_font)
XFreeFont(_display, _font);
}
/*
* Takes _family, _size, _bold, _italic, etc and builds them into a full XLFD.
*/
string BFont::buildXlfd(void) const {
if (_simplename)
return _family;
string weight = _bold ? "bold" : "medium";
string slant = _italic ? "i" : "r";
string sizestr= _size ? itostring(_size * 10) : "*";
return "-*-" + _family + "-" + weight + "-" + slant + "-*-*-*-" + sizestr +
"-*-*-*-*-*-*";
}
/*
* Takes _family, _size, _bold, _italic, etc and builds them into a full XLFD.
*/
string BFont::buildMultibyteXlfd(void) const {
string weight = _bold ? "bold" : "medium";
string slant = _italic ? "i" : "r";
string sizestr= _size ? itostring(_size) : "*";
return _family + ','
+ "-*-*-" + weight + "-" + slant + "-*-*-*-" + sizestr +
"-*-*-*-*-*-*" + ','
+ "-*-*-*-*-*-*-*-" + sizestr + "-*-*-*-*-*-*" + ',' +
+ "*";
}
/*
* Takes a full X font name and parses it out so we know if we're bold, our
* size, etc.
*/
bool BFont::parseXlfd(const string &xlfd) {
if (xlfd.empty() || xlfd[0] != '-') {
_family = xlfd;
_simplename = True;
_bold = False;
_italic = False;
_size = 0;
} else {
_simplename = False;
string weight,
slant,
sizestr;
int i = 0;
string::const_iterator it = xlfd.begin(), end = xlfd.end();
while(1) {
string::const_iterator tmp = it; // current string.begin()
it = std::find(tmp, end, '-'); // look for comma between tmp and end
if (i == 2) _family = string(tmp, it); // s[tmp:it]
if (i == 3) weight = string(tmp, it);
if (i == 4) slant = string(tmp, it);
if (i == 7 && string(tmp, it) != "*") sizestr = string(tmp, it);
if (sizestr.empty() &&
i == 8 && string(tmp, it) != "*") sizestr = string(tmp, it);
if (it == end || i >= 8)
break;
++it;
++i;
}
if (i < 3) // no name even! can't parse that
return False;
_bold = weight == "bold" || weight == "demibold";
_italic = slant == "i" || slant == "o";
_size = atoi(sizestr.c_str()) / 10;
}
// min/max size restrictions for sanity, but 0 is the font's "default size"
if (_size && _size < 3)
_size = 3;
else if (_size > 97)
_size = 97;
return True;
}
@ -258,117 +90,60 @@ void BFont::drawString(Drawable d, int x, int y, const BColor &color,
const string &string) const {
assert(_valid);
#ifdef XFT
if (_xftfont) {
XftDraw *draw = XftDrawCreate(_display, d, _screen->getVisual(),
_screen->getColormap());
assert(draw);
XftDraw *draw = XftDrawCreate(_display, d, _screen->getVisual(),
_screen->getColormap());
assert(draw);
if (_shadow) {
XftColor c;
c.color.red = 0;
c.color.green = 0;
c.color.blue = 0;
c.color.alpha = _tint | _tint << 8; // transparent shadow
c.pixel = BlackPixel(_display, _screen->getScreenNumber());
#ifdef XFT_UTF8
XftDrawStringUtf8(
#else
XftDrawString8(
#endif
draw, &c, _xftfont, x + _offset,
_xftfont->ascent + y + _offset, (XftChar8 *) string.c_str(),
string.size());
}
if (_shadow) {
XftColor c;
c.color.red = color.red() | color.red() << 8;
c.color.green = color.green() | color.green() << 8;
c.color.blue = color.blue() | color.blue() << 8;
c.pixel = color.pixel();
c.color.alpha = 0xff | 0xff << 8; // no transparency in BColor yet
c.color.red = 0;
c.color.green = 0;
c.color.blue = 0;
c.color.alpha = _tint | _tint << 8; // transparent shadow
c.pixel = BlackPixel(_display, _screen->getScreenNumber());
#ifdef XFT_UTF8
XftDrawStringUtf8(
#else
XftDrawString8(
#endif
draw, &c, _xftfont, x, _xftfont->ascent + y,
(XftChar8 *) string.c_str(), string.size());
XftDrawDestroy(draw);
return;
XftDrawStringUtf8(draw, &c, _xftfont, x + _offset,
_xftfont->ascent + y + _offset,
(XftChar8 *) string.c_str(),
string.size());
}
#endif // XFT
XftColor c;
c.color.red = color.red() | color.red() << 8;
c.color.green = color.green() | color.green() << 8;
c.color.blue = color.blue() | color.blue() << 8;
c.pixel = color.pixel();
c.color.alpha = 0xff | 0xff << 8; // no transparency in BColor yet
BPen pen(color, _font);
XftDrawStringUtf8(draw, &c, _xftfont, x, _xftfont->ascent + y,
(XftChar8 *) string.c_str(), string.size());
if (i18n.multibyte())
XmbDrawString(_display, d, _fontset, pen.gc(),
x, y - _fontset_extents->max_ink_extent.y,
string.c_str(), string.size());
else
XDrawString(_display, d, pen.gc(),
x, _font->ascent + y,
string.c_str(), string.size());
XftDrawDestroy(draw);
return;
}
unsigned int BFont::measureString(const string &string) const {
assert(_valid);
#ifdef XFT
if (_xftfont) {
XGlyphInfo info;
XGlyphInfo info;
#ifdef XFT_UTF8
XftTextExtentsUtf8(
#else
XftTextExtents8(
#endif
_display, _xftfont, (XftChar8 *) string.c_str(),
string.size(), &info);
XftTextExtentsUtf8(_display, _xftfont, (XftChar8 *) string.c_str(),
string.size(), &info);
return info.xOff + (_shadow ? _offset : 0);
}
#endif // XFT
if (i18n.multibyte()) {
XRectangle ink, logical;
XmbTextExtents(_fontset, string.c_str(), string.size(), &ink, &logical);
return logical.width;
} else {
return XTextWidth(_font, string.c_str(), string.size());
}
return info.xOff + (_shadow ? _offset : 0);
}
unsigned int BFont::height(void) const {
assert(_valid);
#ifdef XFT
if (_xftfont)
return _xftfont->height + (_shadow ? _offset : 0);
#endif // XFT
if (i18n.multibyte())
return _fontset_extents->max_ink_extent.height;
else
return _font->ascent + _font->descent;
return _xftfont->height + (_shadow ? _offset : 0);
}
unsigned int BFont::maxCharWidth(void) const {
assert(_valid);
#ifdef XFT
if (_xftfont)
return _xftfont->max_advance_width;
#endif // XFT
if (i18n.multibyte())
return _fontset_extents->max_logical_extent.width;
else
return _font->max_bounds.rbearing - _font->min_bounds.lbearing;
return _xftfont->max_advance_width;
}

View file

@ -27,9 +27,7 @@
extern "C" {
#include <X11/Xlib.h>
#ifdef XFT
# include <X11/Xft/Xft.h>
#endif
#include <X11/Xft/Xft.h>
}
#include <assert.h>
@ -69,7 +67,6 @@ private:
bool _bold;
bool _italic;
#ifdef XFT
bool _antialias;
bool _shadow;
unsigned char _offset;
@ -78,31 +75,14 @@ private:
XftFont *_xftfont;
bool createXftFont(void);
#endif
// standard
XFontStruct *_font;
// multibyte
XFontSet _fontset;
XFontSetExtents *_fontset_extents;
std::string buildXlfd(void) const;
std::string buildMultibyteXlfd(void) const;
bool createXFont(const std::string &xlfd);
bool parseXlfd(const std::string &xlfd);
bool _valid;
public:
#ifdef XFT
// loads an Xft font
BFont(Display *d, BScreen *screen, const std::string &family, int size,
bool bold, bool italic, bool shadow, unsigned char offset,
unsigned char tint, bool antialias = True);
#endif
// loads a standard X font
BFont(Display *d, BScreen *screen, const std::string &xlfd);
virtual ~BFont(void);
inline bool valid(void) const { return _valid; }

View file

@ -87,8 +87,7 @@ Pixmap BImage::render_solid(const BTexture &texture) {
control->getDrawable(), width,
height, control->getDepth());
if (pixmap == None) {
fprintf(stderr, i18n(ImageSet, ImageErrorCreatingSolidPixmap,
"BImage::render_solid: error creating pixmap\n"));
fprintf(stderr, "BImage::render_solid: error creating pixmap\n");
return None;
}
@ -454,8 +453,7 @@ XImage *BImage::renderXImage(void) {
width, height, 32, 0);
if (! image) {
fprintf(stderr, i18n(ImageSet, ImageErrorCreatingXImage,
"BImage::renderXImage: error creating XImage\n"));
fprintf(stderr, "BImage::renderXImage: error creating XImage\n");
return (XImage *) 0;
}
@ -550,8 +548,7 @@ XImage *BImage::renderXImage(void) {
}
if (unsupported) {
fprintf(stderr, i18n(ImageSet, ImageUnsupVisual,
"BImage::renderXImage: unsupported visual\n"));
fprintf(stderr, "BImage::renderXImage: unsupported visual\n");
delete [] d;
XDestroyImage(image);
return (XImage *) 0;
@ -569,8 +566,7 @@ Pixmap BImage::renderPixmap(void) {
control->getDrawable(), width, height, control->getDepth());
if (pixmap == None) {
fprintf(stderr, i18n(ImageSet, ImageErrorCreatingPixmap,
"BImage::renderPixmap: error creating pixmap\n"));
fprintf(stderr, "BImage::renderPixmap: error creating pixmap\n");
return None;
}

View file

@ -138,9 +138,7 @@ private:
bool dither;
BaseDisplay *basedisplay;
const ScreenInfo *screeninfo;
#ifdef TIMEDCACHE
BTimer *timer;
#endif // TIMEDCACHE
Colormap colormap;

View file

@ -73,7 +73,6 @@ BImageControl::BImageControl(BaseDisplay *dpy, const ScreenInfo *scrn,
setColorsPerChannel(_cpc);
cache_max = cmax;
#ifdef TIMEDCACHE
if (cache_timeout) {
timer = new BTimer(basedisplay, this);
timer->setTimeout(cache_timeout);
@ -81,7 +80,6 @@ BImageControl::BImageControl(BaseDisplay *dpy, const ScreenInfo *scrn,
} else {
timer = (BTimer *) 0;
}
#endif // TIMEDCACHE
colors = (XColor *) 0;
ncolors = 0;
@ -151,9 +149,8 @@ BImageControl::BImageControl(BaseDisplay *dpy, const ScreenInfo *scrn,
if (colors_per_channel < 2 || ncolors > (1 << screen_depth)) {
fprintf(stderr,
i18n(ImageSet, ImageInvalidColormapSize,
"BImageControl::BImageControl: invalid colormap size %d "
"(%d/%d/%d) - reducing"),
"BImageControl::BImageControl: invalid colormap size %d "
"(%d/%d/%d) - reducing",
ncolors, colors_per_channel, colors_per_channel,
colors_per_channel);
@ -162,9 +159,8 @@ BImageControl::BImageControl(BaseDisplay *dpy, const ScreenInfo *scrn,
colors = new XColor[ncolors];
if (! colors) {
fprintf(stderr, i18n(ImageSet, ImageErrorAllocatingColormap,
"BImageControl::BImageControl: error allocating "
"colormap\n"));
fprintf(stderr, "BImageControl::BImageControl: error allocating "
"colormap\n");
exit(1);
}
@ -193,8 +189,7 @@ BImageControl::BImageControl(BaseDisplay *dpy, const ScreenInfo *scrn,
for (i = 0; i < ncolors; i++) {
if (! XAllocColor(basedisplay->getXDisplay(), colormap, &colors[i])) {
fprintf(stderr, i18n(ImageSet, ImageColorAllocFail,
"couldn't alloc color %i %i %i\n"),
fprintf(stderr, "couldn't alloc color %i %i %i\n",
colors[i].red, colors[i].green, colors[i].blue);
colors[i].flags = 0;
} else {
@ -259,9 +254,8 @@ BImageControl::BImageControl(BaseDisplay *dpy, const ScreenInfo *scrn,
if (colors_per_channel < 2 || ncolors > (1 << screen_depth)) {
fprintf(stderr,
i18n(ImageSet, ImageInvalidColormapSize,
"BImageControl::BImageControl: invalid colormap size %d "
"(%d/%d/%d) - reducing"),
"BImageControl::BImageControl: invalid colormap size %d "
"(%d/%d/%d) - reducing",
ncolors, colors_per_channel, colors_per_channel,
colors_per_channel);
@ -271,8 +265,7 @@ BImageControl::BImageControl(BaseDisplay *dpy, const ScreenInfo *scrn,
colors = new XColor[ncolors];
if (! colors) {
fprintf(stderr,
i18n(ImageSet, ImageErrorAllocatingColormap,
"BImageControl::BImageControl: error allocating colormap\n"));
"BImageControl::BImageControl: error allocating colormap\n");
exit(1);
}
@ -291,8 +284,7 @@ BImageControl::BImageControl(BaseDisplay *dpy, const ScreenInfo *scrn,
if (! XAllocColor(basedisplay->getXDisplay(), colormap,
&colors[i])) {
fprintf(stderr, i18n(ImageSet, ImageColorAllocFail,
"couldn't alloc color %i %i %i\n"),
fprintf(stderr, "couldn't alloc color %i %i %i\n",
colors[i].red, colors[i].green, colors[i].blue);
colors[i].flags = 0;
} else {
@ -343,9 +335,7 @@ BImageControl::BImageControl(BaseDisplay *dpy, const ScreenInfo *scrn,
}
default:
fprintf(stderr,
i18n(ImageSet, ImageUnsupVisual,
"BImageControl::BImageControl: unsupported visual %d\n"),
fprintf(stderr, "BImageControl::BImageControl: unsupported visual %d\n",
getVisual()->c_class);
exit(1);
}
@ -372,21 +362,18 @@ BImageControl::~BImageControl(void) {
if (! cache.empty()) {
//#ifdef DEBUG
fprintf(stderr, i18n(ImageSet, ImagePixmapRelease,
"BImageContol::~BImageControl: pixmap cache - "
"releasing %d pixmaps\n"), cache.size());
fprintf(stderr, "BImageContol::~BImageControl: pixmap cache - "
"releasing %d pixmaps\n", cache.size());
//#endif
CacheContainer::iterator it = cache.begin();
const CacheContainer::iterator end = cache.end();
for (; it != end; ++it)
XFreePixmap(basedisplay->getXDisplay(), it->pixmap);
}
#ifdef TIMEDCACHE
if (timer) {
timer->stop();
delete timer;
}
#endif // TIMEDCACHE
}
@ -449,9 +436,8 @@ Pixmap BImageControl::renderImage(unsigned int width, unsigned int height,
if (cache.size() > cache_max) {
#ifdef DEBUG
fprintf(stderr, i18n(ImageSet, ImagePixmapCacheLarge,
"BImageControl::renderImage: cache is large, "
"forcing cleanout\n"));
fprintf(stderr, "BImageControl::renderImage: cache is large, "
"forcing cleanout\n");
#endif // DEBUG
timeout();
@ -473,9 +459,7 @@ void BImageControl::removeImage(Pixmap pixmap) {
tmp.count--;
}
#ifdef TIMEDCACHE
if (! timer)
#endif // TIMEDCACHE
timeout();
}

View file

@ -55,58 +55,52 @@ using std::string;
#include "blackbox.hh"
I18n i18n; // initialized in main
static void showHelp(int exitval) {
// print program usage and command line options
printf(i18n(mainSet, mainUsage,
"Openbox %s : (c) 2002 - 2002 Ben Jansens\n"
" 2001 - 2002 Sean 'Shaleh' Perry\n"
" 1997 - 2000, 2002 Brad Hughes\n\n"
" -display <string>\t\tuse display connection.\n"
" -rc <string>\t\t\tuse alternate resource file.\n"
" -menu <string>\t\tuse alternate menu file.\n"
" -version\t\t\tdisplay version and exit.\n"
" -help\t\t\t\tdisplay this help text and exit.\n\n"),
printf("Openbox %s : (c) 2002 - 2002 Ben Jansens\n"
" -display <string>\t\tuse display connection.\n"
" -rc <string>\t\t\tuse alternate resource file.\n"
" -menu <string>\t\tuse alternate menu file.\n"
" -version\t\t\tdisplay version and exit.\n"
" -help\t\t\t\tdisplay this help text and exit.\n\n",
OPENBOX_VERSION);
// some people have requested that we print out compile options
// as well
printf(i18n(mainSet, mainCompileOptions,
"Compile time options:\n"
" Debugging:\t\t\t%s\n"
" Shape:\t\t\t%s\n"
" Xft:\t\t\t\t%s\n"
" Xinerama:\t\t\t%s\n"
" 8bpp Ordered Dithering:\t%s\n\n"),
printf("Compile time options:\n"
" Debugging:\t\t\t%s\n"
" Shape:\t\t\t%s\n"
" Xft:\t\t\t\t%s\n"
" Xinerama:\t\t\t%s\n"
" 8bpp Ordered Dithering:\t%s\n\n",
#ifdef DEBUG
i18n(CommonSet, CommonYes, "yes"),
"yes",
#else // !DEBUG
i18n(CommonSet, CommonNo, "no"),
"no",
#endif // DEBUG
#ifdef SHAPE
i18n(CommonSet, CommonYes, "yes"),
"yes",
#else // !SHAPE
i18n(CommonSet, CommonNo, "no"),
"no",
#endif // SHAPE
#ifdef XFT
i18n(CommonSet, CommonYes, "yes"),
"yes",
#else // !XFT
i18n(CommonSet, CommonNo, "no"),
"no",
#endif // XFT
#ifdef XINERAMA
i18n(CommonSet, CommonYes, "yes"),
"yes",
#else // !XINERAMA
i18n(CommonSet, CommonNo, "no"),
"no",
#endif // XINERAMA
#ifdef ORDEREDPSEUDO
i18n(CommonSet, CommonYes, "yes")
"yes"
#else // !ORDEREDPSEUDO
i18n(CommonSet, CommonNo, "no")
"no"
#endif // ORDEREDPSEUDO
);
@ -118,16 +112,12 @@ int main(int argc, char **argv) {
char *rc_file = (char *) 0;
char *menu_file = (char *) 0;
i18n.openCatalog("openbox.cat");
for (int i = 1; i < argc; ++i) {
if (! strcmp(argv[i], "-rc")) {
// look for alternative rc file to use
if ((++i) >= argc) {
fprintf(stderr,
i18n(mainSet, mainRCRequiresArg,
"error: '-rc' requires and argument\n"));
fprintf(stderr, "error: '-rc' requires and argument\n");
::exit(1);
}
@ -137,9 +127,7 @@ int main(int argc, char **argv) {
// look for alternative menu file to use
if ((++i) >= argc) {
fprintf(stderr,
i18n(mainSet, mainMENURequiresArg,
"error: '-menu' requires and argument\n"));
fprintf(stderr, "error: '-menu' requires and argument\n");
::exit(1);
}
@ -150,9 +138,7 @@ int main(int argc, char **argv) {
// set by the environment variable DISPLAY
if ((++i) >= argc) {
fprintf(stderr,
i18n(mainSet, mainDISPLAYRequiresArg,
"error: '-display' requires an argument\n"));
fprintf(stderr, "error: '-display' requires an argument\n");
::exit(1);
}
@ -162,15 +148,13 @@ int main(int argc, char **argv) {
dtmp += session_display;
if (putenv(const_cast<char*>(dtmp.c_str()))) {
fprintf(stderr, i18n(mainSet, mainWarnDisplaySet,
"warning: couldn't set environment variable 'DISPLAY'\n"));
fprintf(stderr,
"warning: couldn't set environment variable 'DISPLAY'\n");
perror("putenv()");
}
} else if (! strcmp(argv[i], "-version")) {
// print current version string
printf("Openbox %s : (c) 2002 - 2002 Ben Jansens\n"
" 2001 - 2002 Sean 'Shaleh' Perry\n"
" 1997 - 2000, 2002 Brad Hughes\n\n",
printf("Openbox %s : (c) 2002 - 2002 Ben Jansens\n",
OPENBOX_VERSION);
::exit(0);
@ -185,7 +169,7 @@ int main(int argc, char **argv) {
_chdir2(getenv("X11ROOT"));
#endif // __EMX__
Blackbox blackbox(argv, session_display, rc_file, menu_file);
Blackbox blackbox(argv, session_display, rc_file);
blackbox.eventLoop();
return(0);

File diff suppressed because it is too large Load diff

View file

@ -45,13 +45,8 @@ extern "C" {
#include "color.hh"
#include "texture.hh"
#include "image.hh"
#include "configmenu.hh"
#include "iconmenu.hh"
#include "netizen.hh"
#include "rootmenu.hh"
#include "timer.hh"
#include "workspace.hh"
#include "workspacemenu.hh"
#include "blackbox.hh"
class Slit; // forward reference
@ -86,36 +81,6 @@ struct WindowStyle {
unsigned int max_length, unsigned int modifier) const;
};
struct ToolbarStyle {
BColor l_text, w_text, c_text, b_pic;
BTexture toolbar, label, window, button, pressed, clock;
#ifdef BITMAPBUTTONS
PixmapMask left_button, right_button;
#endif // BITMAPBUTTONS
BFont *font;
TextJustify justify;
void doJustify(const std::string &text, int &start_pos,
unsigned int max_length, unsigned int modifier) const;
};
struct MenuStyle {
BColor t_text, f_text, h_text, d_text;
BTexture title, frame, hilite;
#ifdef BITMAPBUTTONS
PixmapMask bullet_image, tick_image;
#endif // BITMAPBUTTONS
BFont *t_font, *f_font;
TextJustify t_justify, f_justify;
int bullet, bullet_pos;
};
class BScreen : public ScreenInfo {
private:
bool root_colormap_installed, managed, geom_visible;
@ -125,26 +90,15 @@ private:
Blackbox *blackbox;
BImageControl *image_control;
Configmenu *configmenu;
Iconmenu *iconmenu;
Rootmenu *rootmenu;
Configuration *config;
XAtom *xatom;
typedef std::list<Rootmenu*> RootmenuList;
RootmenuList rootmenuList;
typedef std::list<Netizen*> NetizenList;
NetizenList netizenList;
BlackboxWindowList iconList, windowList;
typedef std::vector<Window> WindowList;
WindowList specialWindowList, desktopWindowList, systrayWindowList;
Slit *slit;
Toolbar *toolbar;
Workspace *current_workspace;
Workspacemenu *workspacemenu;
unsigned int geom_w, geom_h;
unsigned long event_mask;
@ -161,12 +115,10 @@ private:
struct screen_resource {
WindowStyle wstyle;
ToolbarStyle tstyle;
MenuStyle mstyle;
bool sloppy_focus, auto_raise, auto_edge_balance, ordered_dither,
opaque_move, full_max, focus_new, focus_last, click_raise,
allow_scroll_lock, hide_toolbar, window_corner_snap, aa_fonts,
allow_scroll_lock, window_corner_snap, aa_fonts,
ignore_shaded, ignore_maximized, workspace_warping, shadow_fonts;
int snap_to_windows, snap_to_edges;
@ -175,21 +127,14 @@ private:
BColor border_color;
unsigned int workspaces;
int toolbar_placement, toolbar_width_percent, placement_policy,
int placement_policy,
snap_threshold, row_direction, col_direction, root_scroll,
resistance_size;
unsigned int handle_width, bevel_width, frame_width, border_width,
resize_zones;
unsigned int root_menu_button, workspace_menu_button;
#ifdef HAVE_STRFTIME
std::string strftime_format;
#else // !HAVE_STRFTIME
bool clock24hour;
int date_format;
#endif // HAVE_STRFTIME
} resource;
std::string screenstr;
@ -197,8 +142,6 @@ private:
BScreen(const BScreen&);
BScreen& operator=(const BScreen&);
bool parseMenuFile(FILE *file, Rootmenu *menu);
#ifdef BITMAPBUTTONS
void readDatabaseMask(const std::string &rname,
PixmapMask &pixmapMask,
@ -215,11 +158,16 @@ private:
BFont *readDatabaseFont(const std::string &rbasename,
const Configuration &style);
void InitMenu(void);
void LoadStyle(void);
void updateWorkArea(void);
public:
// XXX: temporary
void updateNetizenWorkspaceCount();
void updateNetizenWindowFocus();
enum { WindowNoSnap = 0, WindowSnap, WindowResistance };
enum { RowSmartPlacement = 1, ColSmartPlacement, CascadePlacement,
UnderMousePlacement, ClickMousePlacement, LeftRight, RightLeft,
@ -248,7 +196,6 @@ public:
inline bool doFullMax(void) const { return resource.full_max; }
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 int getWindowToWindowSnap(void) const
{ return resource.snap_to_windows; }
inline int getWindowToEdgeSnap(void) const
@ -259,27 +206,17 @@ public:
inline bool doWorkspaceWarping(void) const
{ return resource.workspace_warping; }
inline int rootScrollDirection(void) const { return resource.root_scroll; }
inline unsigned int rootMenuButton(void) const
{ return resource.root_menu_button; }
inline unsigned int workspaceMenuButton(void) const
{ return resource.workspace_menu_button; }
inline const GC &getOpGC(void) const { return opGC; }
inline Blackbox *getBlackbox(void) { return blackbox; }
inline BColor *getBorderColor(void) { return &resource.border_color; }
inline BImageControl *getImageControl(void) { return image_control; }
inline Rootmenu *getRootmenu(void) { return rootmenu; }
inline Slit *getSlit(void) { return slit; }
inline Toolbar *getToolbar(void) { return toolbar; }
Workspace *getWorkspace(unsigned int index) const;
inline Workspace *getCurrentWorkspace(void) { return current_workspace; }
inline Workspacemenu *getWorkspacemenu(void) { return workspacemenu; }
inline unsigned int getHandleWidth(void) const
{ return resource.handle_width; }
inline unsigned int getBevelWidth(void) const
@ -335,7 +272,6 @@ public:
void saveFullMax(bool f);
void saveFocusNew(bool f);
void saveFocusLast(bool f);
void saveHideToolbar(bool h);
void saveWindowToEdgeSnap(int s);
void saveWindowToWindowSnap(int s);
void saveWindowCornerSnap(bool s);
@ -345,24 +281,12 @@ public:
void saveAllowScrollLock(bool a);
void saveWorkspaceWarping(bool w);
void saveRootScrollDirection(int d);
void saveRootMenuButton(unsigned int b);
void saveWorkspaceMenuButton(unsigned int b);
inline void iconUpdate(void) { iconmenu->update(); }
#ifdef HAVE_STRFTIME
inline const char *getStrftimeFormat(void)
{ return resource.strftime_format.c_str(); }
void saveStrftimeFormat(const std::string& format);
#else // !HAVE_STRFTIME
inline int getDateFormat(void) { return resource.date_format; }
inline void saveDateFormat(int f);
inline bool isClock24Hour(void) { return resource.clock24hour; }
inline void saveClock24Hour(bool c);
#endif // HAVE_STRFTIME
inline WindowStyle *getWindowStyle(void) { return &resource.wstyle; }
inline MenuStyle *getMenuStyle(void) { return &resource.mstyle; }
inline ToolbarStyle *getToolbarStyle(void) { return &resource.tstyle; }
BlackboxWindow *getIcon(unsigned int index);
@ -381,9 +305,6 @@ public:
void changeWorkspaceID(unsigned int id);
void saveWorkspaceNames(void);
void addNetizen(Netizen *n);
void removeNetizen(Window w);
void addSystrayWindow(Window window);
void removeSystrayWindow(Window window);
@ -406,26 +327,13 @@ public:
void save_rc(void);
void reconfigure(void);
void toggleFocusModel(FocusModel model);
void rereadMenu(void);
void shutdown(void);
void showPosition(int x, int y);
void showGeometry(unsigned int gx, unsigned int gy);
void hideGeometry(void);
void showWorkspaceMenu(int x, int y);
void showRootMenu(int x, int y);
void buttonPressEvent(const XButtonEvent *xbutton);
void propertyNotifyEvent(const XPropertyEvent *pe);
void updateNetizenCurrentWorkspace(void);
void updateNetizenWorkspaceCount(void);
void updateNetizenWindowFocus(void);
void updateNetizenWindowAdd(Window w, unsigned long p);
void updateNetizenWindowDel(Window w);
void updateNetizenConfigNotify(XEvent *e);
void updateNetizenWindowRaise(Window w);
void updateNetizenWindowLower(Window w);
};

View file

@ -45,18 +45,13 @@ extern "C" {
}
#include "blackbox.hh"
#include "clientmenu.hh"
#include "font.hh"
#include "gccache.hh"
#include "iconmenu.hh"
#include "image.hh"
#include "screen.hh"
#include "toolbar.hh"
#include "util.hh"
#include "window.hh"
#include "windowmenu.hh"
#include "workspace.hh"
#include "slit.hh"
using std::string;
using std::abs;
@ -149,8 +144,6 @@ BlackboxWindow::BlackboxWindow(Blackbox *b, Window w, BScreen *s) {
current_state = NormalState;
windowmenu = 0;
/*
set the initial size and location of client window (relative to the
_root window_). This position is the reference point used with the
@ -331,9 +324,6 @@ BlackboxWindow::BlackboxWindow(Blackbox *b, Window w, BScreen *s) {
if (flags.maximized && (functions & Func_Maximize))
remaximize();
// create this last so it only needs to be configured once
windowmenu = new Windowmenu(this);
}
@ -359,8 +349,6 @@ BlackboxWindow::~BlackboxWindow(void) {
delete timer;
delete windowmenu;
if (client.window_group) {
BWindowGroup *group = blackbox->searchGroup(client.window_group);
if (group) group->removeWindow(this);
@ -974,11 +962,6 @@ void BlackboxWindow::reconfigure(void) {
ungrabButtons();
grabButtons();
if (windowmenu) {
windowmenu->move(windowmenu->getX(), frame.rect.y() + frame.title_h);
windowmenu->reconfigure();
}
}
@ -1161,7 +1144,7 @@ void BlackboxWindow::getWMName(void) {
return;
}
// fall back to an internal default
client.title = i18n(WindowSet, WindowUnnamed, "Unnamed");
client.title = "Unnamed";
xatom->setValue(client.window, XAtom::net_wm_visible_name, XAtom::utf8,
client.title);
@ -1215,8 +1198,6 @@ void BlackboxWindow::getWMProtocols(void) {
functions |= Func_Close;
} else if (proto[i] == xatom->getAtom(XAtom::wm_take_focus))
flags.send_focus_message = True;
else if (proto[i] == xatom->getAtom(XAtom::blackbox_structure_messages))
screen->addNetizen(new Netizen(screen, client.window));
}
XFree(proto);
@ -1669,7 +1650,6 @@ void BlackboxWindow::configure(int dx, int dy,
XSendEvent(blackbox->getXDisplay(), client.window, False,
StructureNotifyMask, &event);
screen->updateNetizenConfigNotify(&event);
XFlush(blackbox->getXDisplay());
}
}
@ -1783,8 +1763,6 @@ void BlackboxWindow::iconify(void) {
if (flags.moving)
endMove();
if (windowmenu) windowmenu->hide();
/*
* we don't want this XUnmapWindow call to generate an UnmapNotify event, so
* we need to clear the event mask on client.window for a split second.
@ -1921,8 +1899,6 @@ void BlackboxWindow::withdraw(void) {
XSelectInput(blackbox->getXDisplay(), client.window, event_mask);
XUngrabServer(blackbox->getXDisplay());
if (windowmenu) windowmenu->hide();
}
@ -1934,9 +1910,6 @@ void BlackboxWindow::maximize(unsigned int button) {
if (flags.moving)
endMove();
// handle case where menu is open then the max button is used instead
if (windowmenu && windowmenu->isVisible()) windowmenu->hide();
if (flags.maximized) {
flags.maximized = 0;
@ -2257,15 +2230,6 @@ void BlackboxWindow::setFocusFlag(bool focus) {
if (flags.focused)
blackbox->setFocusedWindow(this);
if (! flags.iconic) {
// iconic windows arent in a workspace menu!
if (flags.stuck)
screen->getCurrentWorkspace()->setFocused(this, isFocused());
else
screen->getWorkspace(blackbox_attrib.workspace)->
setFocused(this, flags.focused);
}
}
@ -2994,7 +2958,6 @@ void BlackboxWindow::propertyNotifyEvent(const XPropertyEvent *pe) {
positionButtons(True);
XMapSubwindows(blackbox->getXDisplay(), frame.title);
}
if (windowmenu) windowmenu->reconfigure();
}
} else if (pe->atom == xatom->getAtom(XAtom::net_wm_strut)) {
updateStrut();
@ -3116,8 +3079,6 @@ void BlackboxWindow::buttonPressEvent(const XButtonEvent *be) {
} else if (frame.stick_button == be->window) {
redrawStickyButton(True);
} else if (frame.plate == be->window) {
if (windowmenu && windowmenu->isVisible()) windowmenu->hide();
screen->getWorkspace(blackbox_attrib.workspace)->raiseWindow(this);
XAllowEvents(blackbox->getXDisplay(), ReplayPointer, be->time);
@ -3133,58 +3094,12 @@ void BlackboxWindow::buttonPressEvent(const XButtonEvent *be) {
}
}
if (windowmenu && windowmenu->isVisible()) windowmenu->hide();
screen->getWorkspace(blackbox_attrib.workspace)->raiseWindow(this);
}
} else if (be->button == 2 && (be->window != frame.iconify_button) &&
(be->window != frame.close_button) &&
(be->window != frame.stick_button)) {
screen->getWorkspace(blackbox_attrib.workspace)->lowerWindow(this);
} else if (windowmenu && be->button == 3 &&
(frame.title == be->window || frame.label == be->window ||
frame.handle == be->window || frame.window == be->window)) {
if (windowmenu->isVisible()) {
windowmenu->hide();
} else {
int mx = be->x_root - windowmenu->getWidth() / 2,
my = be->y_root - windowmenu->getHeight() / 2;
// snap the window menu into a corner/side if necessary
int left_edge, right_edge, top_edge, bottom_edge;
/*
the " + (frame.border_w * 2) - 1" bits are to get the proper width
and height of the menu, as the sizes returned by it do not include
the borders.
*/
left_edge = frame.rect.x();
right_edge = frame.rect.right() -
(windowmenu->getWidth() + (frame.border_w * 2) - 1);
top_edge = client.rect.top() - (frame.border_w + frame.mwm_border_w);
bottom_edge = client.rect.bottom() -
(windowmenu->getHeight() + (frame.border_w * 2) - 1) +
(frame.border_w + frame.mwm_border_w);
if (mx < left_edge)
mx = left_edge;
else if (mx > right_edge)
mx = right_edge;
if (my < top_edge)
my = top_edge;
else if (my > bottom_edge)
my = bottom_edge;
if (my + windowmenu->getHeight() > screen->getHeight())
my = screen->getHeight() - windowmenu->getHeight() -
(screen->getBorderWidth() * 2);
windowmenu->move(mx, my);
windowmenu->show();
XRaiseWindow(blackbox->getXDisplay(), windowmenu->getWindowID());
XRaiseWindow(blackbox->getXDisplay(),
windowmenu->getSendToMenu()->getWindowID());
}
// mouse wheel up
} else if (be->button == 4) {
if ((be->window == frame.label ||
@ -3276,9 +3191,6 @@ void BlackboxWindow::beginMove(int x_root, int y_root) {
GrabModeAsync, GrabModeAsync,
None, blackbox->getMoveCursor(), CurrentTime);
if (windowmenu && windowmenu->isVisible())
windowmenu->hide();
flags.moving = True;
blackbox->setChangingWindow(this);
@ -3431,25 +3343,6 @@ void BlackboxWindow::doWindowSnapping(int &dx, int &dy) {
if (*st_it != this) // don't snap to ourself
rectlist.push_back( (*st_it)->frameRect() );
// add the toolbar and the slit to the rect list.
// (only if they are not hidden)
Toolbar *tbar = screen->getToolbar();
Slit *slit = screen->getSlit();
Rect tbar_rect, slit_rect;
unsigned int bwidth = screen->getBorderWidth() * 2;
if (! (screen->doHideToolbar() || tbar->isHidden())) {
tbar_rect.setRect(tbar->getX(), tbar->getY(), tbar->getWidth() + bwidth,
tbar->getHeight() + bwidth);
rectlist.push_back(tbar_rect);
}
if (! slit->isHidden()) {
slit_rect.setRect(slit->getX(), slit->getY(), slit->getWidth() + bwidth,
slit->getHeight() + bwidth);
rectlist.push_back(slit_rect);
}
RectList::const_iterator it, end = rectlist.end();
for (it = rectlist.begin(); it != end; ++it) {
bool snapped = False;

View file

@ -37,7 +37,6 @@ extern "C" {
#include "basedisplay.hh"
#include "timer.hh"
#include "util.hh"
#include "windowmenu.hh"
#define MwmHintsFunctions (1l << 0)
#define MwmHintsDecorations (1l << 1)
@ -130,7 +129,6 @@ private:
BlackboxAttributes blackbox_attrib;
Time lastButtonPressTime; // used for double clicks, when were we clicked
Windowmenu *windowmenu;
unsigned int window_number;
unsigned long current_state;
@ -290,11 +288,11 @@ private:
void redrawWindowFrame(void) const;
void redrawLabel(void) const;
void redrawAllButtons(void) const;
void BlackboxWindow::redrawButton(bool pressed, Window win,
Pixmap fppix, unsigned long fppixel,
Pixmap uppix, unsigned long uppixel,
Pixmap fpix, unsigned long fpixel,
Pixmap upix, unsigned long upixel) const;
void redrawButton(bool pressed, Window win,
Pixmap fppix, unsigned long fppixel,
Pixmap uppix, unsigned long uppixel,
Pixmap fpix, unsigned long fpixel,
Pixmap upix, unsigned long upixel) const;
void redrawCloseButton(bool pressed) const;
void redrawIconifyButton(bool pressed) const;
void redrawMaximizeButton(bool pressed) const;
@ -353,8 +351,6 @@ public:
inline Window getClientWindow(void) const { return client.window; }
inline Window getGroupWindow(void) const { return client.window_group; }
inline Windowmenu * getWindowmenu(void) const { return windowmenu; }
inline const char *getTitle(void) const
{ return client.title.c_str(); }
inline const char *getIconTitle(void) const

View file

@ -46,15 +46,11 @@ extern "C" {
using std::string;
#include "blackbox.hh"
#include "clientmenu.hh"
#include "font.hh"
#include "netizen.hh"
#include "screen.hh"
#include "toolbar.hh"
#include "util.hh"
#include "window.hh"
#include "workspace.hh"
#include "windowmenu.hh"
#include "xatom.hh"
@ -69,8 +65,6 @@ Workspace::Workspace(BScreen *scrn, unsigned int i) {
id = i;
clientmenu = new Clientmenu(this);
lastfocus = (BlackboxWindow *) 0;
readName();
@ -99,12 +93,6 @@ void Workspace::addWindow(BlackboxWindow *w, bool place, bool sticky) {
windowList.push_back(w);
clientmenu->insert(w->getTitle());
clientmenu->update();
if (! sticky)
screen->updateNetizenWindowAdd(w->getClientWindow(), id);
if (screen->doFocusNew() || (w->isTransient() && w->getTransientFor() &&
w->getTransientFor()->isFocused())) {
if (id != screen->getCurrentWorkspaceID()) {
@ -146,12 +134,7 @@ void Workspace::removeWindow(BlackboxWindow *w, bool sticky) {
assert(it != end);
windowList.erase(it);
clientmenu->remove(i);
clientmenu->update();
if (! sticky) {
screen->updateNetizenWindowDel(w->getClientWindow());
BlackboxWindowList::iterator it = windowList.begin();
const BlackboxWindowList::iterator end = windowList.end();
unsigned int i = 0;
@ -213,19 +196,6 @@ void Workspace::focusFallback(const BlackboxWindow *old_window) {
}
void Workspace::setFocused(const BlackboxWindow *w, bool focused) {
BlackboxWindowList::iterator it, end = windowList.end();
int i;
for (i = 0, it = windowList.begin(); it != end; ++it, ++i)
if (*it == w)
break;
// if its == end, then a window thats not in the windowList
// got focused, such as a !isNormal() window.
if (it != end)
clientmenu->setItemSelected(i, focused);
}
void Workspace::removeAll(void) {
while (! windowList.empty())
windowList.front()->iconify();
@ -296,7 +266,6 @@ void Workspace::raiseTransients(const BlackboxWindow * const win,
for (it = win->getTransients().begin(); it != end; ++it) {
BlackboxWindow *w = *it;
*stack++ = w->getFrameWindow();
screen->updateNetizenWindowRaise(w->getClientWindow());
if (! w->isIconic()) {
Workspace *wkspc = screen->getWorkspace(w->getWorkspaceNumber());
@ -325,7 +294,6 @@ void Workspace::lowerTransients(const BlackboxWindow * const win,
for (it = win->getTransients().rbegin(); it != end; ++it) {
BlackboxWindow *w = *it;
*stack++ = w->getFrameWindow();
screen->updateNetizenWindowLower(w->getClientWindow());
if (! w->isIconic()) {
Workspace *wkspc = screen->getWorkspace(w->getWorkspaceNumber());
@ -353,7 +321,6 @@ void Workspace::raiseWindow(BlackboxWindow *w) {
StackVector::iterator stack = stack_vector.begin();
*(stack++) = win->getFrameWindow();
screen->updateNetizenWindowRaise(win->getClientWindow());
if (! (win->isIconic() || win->isDesktop())) {
Workspace *wkspc = screen->getWorkspace(win->getWorkspaceNumber());
wkspc->stackingList.remove(win);
@ -383,7 +350,6 @@ void Workspace::lowerWindow(BlackboxWindow *w) {
lowerTransients(win, stack);
*(stack++) = win->getFrameWindow();
screen->updateNetizenWindowLower(win->getClientWindow());
if (! (win->isIconic() || win->isDesktop())) {
Workspace *wkspc = screen->getWorkspace(win->getWorkspaceNumber());
wkspc->stackingList.remove(win);
@ -395,7 +361,6 @@ void Workspace::lowerWindow(BlackboxWindow *w) {
void Workspace::reconfigure(void) {
clientmenu->reconfigure();
std::for_each(windowList.begin(), windowList.end(),
std::mem_fun(&BlackboxWindow::reconfigure));
}
@ -445,14 +410,6 @@ BlackboxWindow* Workspace::getTopWindowOnStack(void) const {
}
void Workspace::sendWindowList(Netizen &n) {
BlackboxWindowList::iterator it = windowList.begin(),
end = windowList.end();
for(; it != end; ++it)
n.sendWindowAdd((*it)->getClientWindow(), getID());
}
unsigned int Workspace::getCount(void) const {
return windowList.size();
}
@ -494,16 +451,13 @@ void Workspace::readName(void) {
namesList.size() > id) {
name = namesList[id];
clientmenu->setLabel(name);
clientmenu->update();
} else {
/*
Use a default name. This doesn't actually change the class. That will
happen after the setName changes the root property, and that change
makes its way back to this function.
*/
string tmp =i18n(WorkspaceSet, WorkspaceDefaultNameFormat,
"Workspace %d");
string tmp = "Workspace %d";
assert(tmp.length() < 32);
char default_name[32];
sprintf(default_name, tmp.c_str(), id + 1);

View file

@ -32,11 +32,11 @@ extern "C" {
#include <string>
#include <vector>
#include "xatom.hh"
class BScreen;
class Clientmenu;
class Workspace;
class BlackboxWindow;
class Netizen;
typedef std::list<BlackboxWindow*> BlackboxWindowList;
typedef std::vector<Window> StackVector;
@ -45,7 +45,6 @@ class Workspace {
private:
BScreen *screen;
BlackboxWindow *lastfocus;
Clientmenu *clientmenu;
XAtom *xatom;
BlackboxWindowList stackingList, windowList;
@ -80,8 +79,6 @@ public:
inline BlackboxWindow *getLastFocusedWindow(void) { return lastfocus; }
inline Clientmenu *getMenu(void) { return clientmenu; }
inline const std::string& getName(void) const { return name; }
inline unsigned int getID(void) const { return id; }
@ -95,9 +92,7 @@ public:
BlackboxWindow* getNextWindowInList(BlackboxWindow *w);
BlackboxWindow* getPrevWindowInList(BlackboxWindow *w);
BlackboxWindow* getTopWindowOnStack(void) const;
void sendWindowList(Netizen &n);
void focusFallback(const BlackboxWindow *old_window);
void setFocused(const BlackboxWindow *w, bool focused);
bool isCurrent(void) const;
bool isLastWindow(const BlackboxWindow* w) const;