From 26df4622fd3ce8d7dae67f6f24cda4771801935f Mon Sep 17 00:00:00 2001 From: fluxgen Date: Sat, 10 May 2003 22:50:19 +0000 Subject: root window --- src/FbRootWindow.cc | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/FbRootWindow.hh | 49 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 src/FbRootWindow.cc create mode 100644 src/FbRootWindow.hh diff --git a/src/FbRootWindow.cc b/src/FbRootWindow.cc new file mode 100644 index 0000000..d555f7f --- /dev/null +++ b/src/FbRootWindow.cc @@ -0,0 +1,63 @@ +// FbRootWindow.cc +// Copyright (c) 2003 Henrik Kinnunen (fluxgenusers.sourceforge.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. + +// $Id: FbRootWindow.cc,v 1.1 2003/05/10 22:50:19 fluxgen Exp $ + +#include "FbRootWindow.hh" +#include "App.hh" + +#include + +FbRootWindow::FbRootWindow(int screen_num): + FbTk::FbWindow(RootWindow(FbTk::App::instance()->display(), screen_num)), + m_visual(0), + m_colormap(0) { + + Display *disp = FbTk::App::instance()->display(); + + // search for a TrueColor Visual... if we can't find one... we will use the + // default visual for the screen + XVisualInfo vinfo_template, *vinfo_return; + int vinfo_nitems; + + vinfo_template.screen = screen_num; + vinfo_template.c_class = TrueColor; + if ((vinfo_return = XGetVisualInfo(disp, + VisualScreenMask | VisualClassMask, + &vinfo_template, &vinfo_nitems)) && + vinfo_nitems > 0) { + + for (int i = 0; i < vinfo_nitems; i++) { + if (DefaultDepth(disp, screen_num) < vinfo_return[i].depth) + m_visual = vinfo_return[i].visual; + } + + XFree(vinfo_return); + } + + if (m_visual) { + m_colormap = XCreateColormap(disp, window(), + m_visual, AllocNone); + } else { + m_visual = DefaultVisual(disp, screen_num); + m_colormap = DefaultColormap(disp, screen_num); + } +} diff --git a/src/FbRootWindow.hh b/src/FbRootWindow.hh new file mode 100644 index 0000000..687c234 --- /dev/null +++ b/src/FbRootWindow.hh @@ -0,0 +1,49 @@ +// FbRootWindow.hh for fluxbox +// Copyright (c) 2003 Henrik Kinnunen (fluxgen at users.sourceforge.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. + +// $Id: FbRootWindow.hh,v 1.1 2003/05/10 22:50:19 fluxgen Exp $ + +#ifndef FBROOTWINDOW_HH +#define FBROOTWINDOW_HH + +#include "FbWindow.hh" + +class FbRootWindow: public FbTk::FbWindow { +public: + explicit FbRootWindow(int screen_num); + // disable functions that we can't do on root window + void move(int x, int y) { } + void resize(unsigned int width, unsigned int height) { } + void moveResize(int x, int y, unsigned int width, unsigned int height) { } + void show() { } + void hide() { } + // we should not assign a new window to this + FbTk::FbWindow &operator = (Window win) { return *this; } + + inline Visual *visual() const { return m_visual; } + inline Colormap colormap() const { return m_colormap; } + +private: + Visual *m_visual; + Colormap m_colormap; +}; + +#endif // FBROOTWINDOW_HH -- cgit v0.11.2