all repos — openbox @ 1cfc76577db97606893c1f238d589f4cd3f52d7a

openbox fork - make it a bit more like ryudo

reverting.. that was lame
Dana Jansens danakj@orodu.net
commit

1cfc76577db97606893c1f238d589f4cd3f52d7a

parent

c187fbdf60956f3bf6392bfd132ba960e43ef4ec

2 files changed, 0 insertions(+), 430 deletions(-)

jump to
D otk/basewidget.cc

@@ -1,301 +0,0 @@

-// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- - -#ifdef HAVE_CONFIG_H -# include "../config.h" -#endif // HAVE_CONFIG_H - -#include "basewidget.hh" -#include "display.hh" -#include "assassin.hh" -#include "screeninfo.hh" - -#include <algorithm> - -namespace otk { - -OtkBaseWidget::OtkBaseWidget(OtkBaseWidget *parent) - : OtkEventHandler(), - _dirty(false), - _parent(parent), _style(parent->getStyle()), - _cursor(parent->getCursor()), _bevel_width(parent->getBevelWidth()), - _ignore_config(0), _visible(false), _focused(false), _grabbed_mouse(false), - _grabbed_keyboard(false), _texture(0), _bg_pixmap(0), _bg_pixel(0), - _screen(parent->getScreen()) -{ - assert(parent); - parent->addChild(this); - create(); -} - -OtkBaseWidget::OtkBaseWidget(Style *style, Cursor cursor, int bevel_width) - : OtkEventHandler(), - _dirty(false), _parent(0), _style(style), _cursor(cursor), - _bevel_width(bevel_width), _ignore_config(0), _visible(false), - _focused(false), _grabbed_mouse(false), _grabbed_keyboard(false), - _texture(0), _bg_pixmap(0), _bg_pixel(0), _screen(style->getScreen()) -{ - assert(style); - create(); -} - -OtkBaseWidget::~OtkBaseWidget() -{ - if (_visible) - hide(); - - std::for_each(_children.begin(), _children.end(), PointerAssassin()); - - if (_parent) - _parent->removeChild(this); - - XDestroyWindow(otk::OBDisplay::display, _window); -} - -void OtkBaseWidget::create(void) -{ - const ScreenInfo *scr_info = otk::OBDisplay::screenInfo(_screen); - Window p_window = _parent ? _parent->getWindow() : scr_info->getRootWindow(); - - _rect.setRect(0, 0, 1, 1); // just some initial values - - XSetWindowAttributes attrib_create; - unsigned long create_mask = CWBackPixmap | CWBorderPixel | CWEventMask; - - attrib_create.background_pixmap = None; - attrib_create.colormap = scr_info->getColormap(); - attrib_create.event_mask = ButtonPressMask | ButtonReleaseMask | - ButtonMotionMask | ExposureMask | StructureNotifyMask; - - if (_cursor) { - create_mask |= CWCursor; - attrib_create.cursor = _cursor; - } - - _window = XCreateWindow(otk::OBDisplay::display, p_window, _rect.x(), - _rect.y(), _rect.width(), _rect.height(), 0, - scr_info->getDepth(), InputOutput, - scr_info->getVisual(), create_mask, &attrib_create); - _ignore_config++; -} - -void OtkBaseWidget::setWidth(int w) -{ - assert(w > 0); - setGeometry(_rect.x(), _rect.y(), w, _rect.height()); -} - -void OtkBaseWidget::setHeight(int h) -{ - assert(h > 0); - setGeometry(_rect.x(), _rect.y(), _rect.width(), h); -} - -void OtkBaseWidget::move(const Point &to) -{ - move(to.x(), to.y()); -} - -void OtkBaseWidget::move(int x, int y) -{ - _rect.setPos(x, y); - XMoveWindow(otk::OBDisplay::display, _window, x, y); - _ignore_config++; -} - -void OtkBaseWidget::resize(const Point &to) -{ - resize(to.x(), to.y()); -} - -void OtkBaseWidget::resize(int w, int h) -{ - assert(w > 0 && h > 0); - setGeometry(_rect.x(), _rect.y(), w, h); -} - -void OtkBaseWidget::setGeometry(const Rect &new_geom) -{ - setGeometry(new_geom.x(), new_geom.y(), new_geom.width(), new_geom.height()); -} - -void OtkBaseWidget::setGeometry(const Point &topleft, int width, int height) -{ - setGeometry(topleft.x(), topleft.y(), width, height); -} - -void OtkBaseWidget::setGeometry(int x, int y, int width, int height) -{ - _rect = Rect(x, y, width, height); - _dirty = true; - - XMoveResizeWindow(otk::OBDisplay::display, _window, x, y, width, height); - _ignore_config++; -} - -void OtkBaseWidget::show(bool recursive) -{ - if (_visible) - return; - - // make sure the internal state isn't mangled - if (_dirty) - update(); - - if (recursive) { - OtkBaseWidgetList::iterator it = _children.begin(), end = _children.end(); - for (; it != end; ++it) - (*it)->show(); - } - - XMapWindow(otk::OBDisplay::display, _window); - _visible = true; -} - -void OtkBaseWidget::hide(bool recursive) -{ - if (! _visible) - return; - - if (recursive) { - OtkBaseWidgetList::iterator it = _children.begin(), end = _children.end(); - for (; it != end; ++it) - (*it)->hide(); - } - - XUnmapWindow(otk::OBDisplay::display, _window); - _visible = false; -} - -void OtkBaseWidget::focus(void) -{ - if (! _visible) - return; - - XSetInputFocus(otk::OBDisplay::display, _window, RevertToPointerRoot, - CurrentTime); -} - -bool OtkBaseWidget::grabMouse(void) -{ - Status ret = XGrabPointer(otk::OBDisplay::display, _window, True, - (ButtonPressMask | ButtonReleaseMask | - ButtonMotionMask | EnterWindowMask | - LeaveWindowMask | PointerMotionMask), - GrabModeSync, GrabModeAsync, None, None, - CurrentTime); - _grabbed_mouse = (ret == GrabSuccess); - return _grabbed_mouse; -} - -void OtkBaseWidget::ungrabMouse(void) -{ - if (! _grabbed_mouse) - return; - - XUngrabPointer(otk::OBDisplay::display, CurrentTime); - _grabbed_mouse = false; -} - -bool OtkBaseWidget::grabKeyboard(void) -{ - Status ret = XGrabKeyboard(otk::OBDisplay::display, _window, True, - GrabModeSync, GrabModeAsync, CurrentTime); - _grabbed_keyboard = (ret == GrabSuccess); - return _grabbed_keyboard; - -} - -void OtkBaseWidget::ungrabKeyboard(void) -{ - if (! _grabbed_keyboard) - return; - - XUngrabKeyboard(otk::OBDisplay::display, CurrentTime); - _grabbed_keyboard = false; -} - -void OtkBaseWidget::render(void) -{ - if (!_texture) return; - - _bg_pixmap = _texture->render(_rect.width(), _rect.height(), _bg_pixmap); - - if (_bg_pixmap) - XSetWindowBackgroundPixmap(otk::OBDisplay::display, _window, _bg_pixmap); - else { - unsigned int pix = _texture->color().pixel(); - if (pix != _bg_pixel) { - _bg_pixel = pix; - XSetWindowBackground(otk::OBDisplay::display, _window, pix); - } - } -} - -void OtkBaseWidget::update(void) -{ - if (_dirty) { - render(); - XClearWindow(OBDisplay::display, _window); - } - - OtkBaseWidgetList::iterator it = _children.begin(), end = _children.end(); - for (; it != end; ++it) - (*it)->update(); - - _dirty = false; -} - -void OtkBaseWidget::addChild(OtkBaseWidget *child, bool front) -{ - assert(child); - if (front) - _children.push_front(child); - else - _children.push_back(child); -} - -void OtkBaseWidget::removeChild(OtkBaseWidget *child) -{ - assert(child); - OtkBaseWidgetList::iterator it, end = _children.end(); - for (it = _children.begin(); it != end; ++it) { - if ((*it) == child) - break; - } - - if (it != _children.end()) - _children.erase(it); -} - -void OtkBaseWidget::setStyle(Style *style) -{ - assert(style); - _style = style; - _dirty = true; - OtkBaseWidgetList::iterator it, end = _children.end(); - for (it = _children.begin(); it != end; ++it) - (*it)->setStyle(style); -} - -void OtkBaseWidget::exposeHandler(const XExposeEvent &e) -{ - OtkEventHandler::exposeHandler(e); - _dirty = true; - update(); -} - -void OtkBaseWidget::configureHandler(const XConfigureEvent &e) -{ - OtkEventHandler::configureHandler(e); - if (_ignore_config) { - _ignore_config--; - } else { - if (!(e.width == _rect.width() && e.height == _rect.height())) { - _dirty = true; - _rect.setSize(e.width, e.height); - } - update(); - } -} - -}
D otk/basewidget.hh

@@ -1,129 +0,0 @@

-#ifndef __basewidget_hh -#define __basewidget_hh - -#include "rect.hh" -#include "point.hh" -#include "texture.hh" -#include "style.hh" -#include "display.hh" -#include "eventdispatcher.hh" - -extern "C" { -#include <assert.h> -} - -#include <list> - -namespace otk { - -class OtkBaseWidget : public OtkEventHandler { - -public: - - typedef std::list<OtkBaseWidget *> OtkBaseWidgetList; - - OtkBaseWidget(OtkBaseWidget *parent); - OtkBaseWidget(Style *style, Cursor cursor = 0, int bevel_width = 1); - - virtual ~OtkBaseWidget(); - - //! Redraw the widget and all of its children - virtual void update(void); - - void exposeHandler(const XExposeEvent &e); - void configureHandler(const XConfigureEvent &e); - - inline Window getWindow(void) const { return _window; } - inline const OtkBaseWidget *getParent(void) const { return _parent; } - inline const OtkBaseWidgetList &getChildren(void) const { return _children; } - inline unsigned int getScreen(void) const { return _screen; } - inline const Rect &getRect(void) const { return _rect; } - - void move(const Point &to); - void move(int x, int y); - - virtual void setWidth(int); - virtual void setHeight(int); - - virtual int width() const { return _rect.width(); } - virtual int height() const { return _rect.height(); } - - virtual void resize(const Point &to); - virtual void resize(int x, int y); - - virtual void setGeometry(const Rect &new_geom); - virtual void setGeometry(const Point &topleft, int width, int height); - virtual void setGeometry(int x, int y, int width, int height); - - inline bool isVisible(void) const { return _visible; }; - virtual void show(bool recursive = false); - virtual void hide(bool recursive = false); - - inline bool isFocused(void) const { return _focused; }; - virtual void focus(void); - - inline bool hasGrabbedMouse(void) const { return _grabbed_mouse; } - bool grabMouse(void); - void ungrabMouse(void); - - inline bool hasGrabbedKeyboard(void) const { return _grabbed_keyboard; } - bool grabKeyboard(void); - void ungrabKeyboard(void); - - inline BTexture *getTexture(void) const { return _texture; } - virtual void setTexture(BTexture *texture) - { _texture = texture; _dirty = true; } - - virtual void addChild(OtkBaseWidget *child, bool front = false); - virtual void removeChild(OtkBaseWidget *child); - - inline Cursor getCursor(void) const { return _cursor; } - void setCursor(Cursor cursor) { - _cursor = cursor; - XDefineCursor(OBDisplay::display, _window, _cursor); - } - - inline int getBevelWidth(void) const { return _bevel_width; } - void setBevelWidth(int bevel_width) - { assert(bevel_width > 0); _bevel_width = bevel_width; } - - inline Style *getStyle(void) const { return _style; } - virtual void setStyle(Style *style); - -protected: - - //! If the widget needs to redraw itself. Watched by all subclasses too! - bool _dirty; - - Window _window; - - OtkBaseWidget *_parent; - OtkBaseWidgetList _children; - - Style *_style; - Cursor _cursor; - int _bevel_width; - int _ignore_config; - - bool _visible; - bool _focused; - - bool _grabbed_mouse; - bool _grabbed_keyboard; - - BTexture *_texture; - Pixmap _bg_pixmap; - unsigned int _bg_pixel; - - Rect _rect; - unsigned int _screen; - -private: - - void create(void); - void render(void); -}; - -} - -#endif // __basewidget_hh