all repos — openbox @ a3d036f60ed2333622ee9b61dbddcdc8fbc497c3

openbox fork - make it a bit more like ryudo

added otkapplication and event stuff, changed other files to accomodate for this, changed the test.
no idea if anything runs yet. it compiles =)
Marius Nita marius@cs.pdx.edu
commit

a3d036f60ed2333622ee9b61dbddcdc8fbc497c3

parent

e53fbcf092c40b22ccc4c5f23795e12c9862c338

M otk/Makefile.amotk/Makefile.am

@@ -7,7 +7,8 @@

libotk_a_SOURCES= color.cc display.cc font.cc gccache.cc image.cc property.cc \ imagecontrol.cc rect.cc screeninfo.cc texture.cc timer.cc \ timerqueuemanager.cc style.cc configuration.cc util.cc \ - widget.cc focuswidget.cc button.cc + widget.cc focuswidget.cc button.cc eventhandler.cc \ + eventdispatcher.cc application.cc MAINTAINERCLEANFILES= Makefile.in

@@ -55,3 +56,6 @@ util.o: util.cc util.hh

widget.o: widget.cc widget.hh rect.hh point.hh texture.hh color.hh \ util.hh style.hh font.hh image.hh screeninfo.hh timer.hh \ configuration.hh display.hh assassin.hh +eventhandler.o: eventhandler.cc eventhandler.hh +eventdispatcher.o: eventdispatcher.cc eventdispatcher.hh +application.o: application.cc application.hh
M otk/button.ccotk/button.cc

@@ -66,17 +66,17 @@

_dirty = false; } -bool OtkButton::expose(const XExposeEvent &e) +int OtkButton::exposeHandler(const XExposeEvent &e) { _dirty = true; - return OtkFocusWidget::expose(e); + return OtkFocusWidget::exposeHandler(e); } -bool OtkButton::configure(const XConfigureEvent &e) +int OtkButton::configureHandler(const XConfigureEvent &e) { if (!(e.width == width() && e.height == height())) _dirty = true; - return OtkFocusWidget::configure(e); + return OtkFocusWidget::configureHandler(e); } }
M otk/button.hhotk/button.hh

@@ -1,3 +1,6 @@

+#ifndef __button_hh +#define __button_hh + #include "focuswidget.hh" //#include "pixmap.hh"

@@ -33,9 +36,9 @@ inline bool isPressed(void) const { return _pressed; }

void press(void); void release(void); - virtual void update(void); - virtual bool expose(const XExposeEvent &e); - virtual bool configure(const XConfigureEvent &e); + void update(void); + int exposeHandler(const XExposeEvent &e); + int configureHandler(const XConfigureEvent &e); private:

@@ -52,3 +55,5 @@ BTexture *_unpr_unfocus_tx;

}; } + +#endif
M otk/focuswidget.ccotk/focuswidget.cc

@@ -8,10 +8,21 @@ {

_focus_texture = parent->getTexture(); } +OtkFocusWidget::OtkFocusWidget(OtkApplication *app, Direction direction, + Cursor cursor, int bevel_width) + : OtkWidget(app, direction, cursor, bevel_width), + _unfocus_texture(0), _focused(true) +{ +} + OtkFocusWidget::OtkFocusWidget(Style *style, Direction direction, Cursor cursor, int bevel_width) : OtkWidget(style, direction, cursor, bevel_width), _unfocus_texture(0), _focused(true) +{ +} + +OtkFocusWidget::~OtkFocusWidget() { }
M otk/focuswidget.hhotk/focuswidget.hh

@@ -2,6 +2,7 @@ #ifndef __focuswidget_hh

#define __focuswidget_hh #include "widget.hh" +#include "application.hh" namespace otk {

@@ -10,8 +11,11 @@

public: OtkFocusWidget(OtkWidget *parent, Direction = Horizontal); + OtkFocusWidget(OtkApplication *app, Direction direction = Horizontal, + Cursor cursor = 0, int bevel_width = 1); OtkFocusWidget(Style *style, Direction direction = Horizontal, Cursor cursor = 0, int bevel_width = 1); + virtual ~OtkFocusWidget(); virtual void focus(void); virtual void unfocus(void);
M otk/otk_test.ccotk/otk_test.cc

@@ -1,32 +1,15 @@

+#include "application.hh" #include "focuswidget.hh" #include "button.hh" -#include "display.hh" -#include "configuration.hh" -#include "timerqueuemanager.hh" -#include "image.hh" -#include "style.hh" -#include <iostream> -int main(void) { - otk::OBDisplay::initialize(NULL); - otk::Configuration style_conf(False); - otk::OBTimerQueueManager *tm = new otk::OBTimerQueueManager(); - const otk::ScreenInfo *s_info = - otk::OBDisplay::screenInfo(DefaultScreen(otk::OBDisplay::display)); - otk::BImageControl *ctrl = new otk::BImageControl(tm, s_info, True, 4, 5, 200); +int main(int argc, char **argv) { + otk::OtkApplication app(argc, argv); - otk::Style *my_style = new otk::Style(ctrl); - - style_conf.setFile("/usr/local/share/openbox/styles/artwiz"); - style_conf.load(); - - my_style->load(style_conf); - - otk::OtkFocusWidget foo(my_style); + otk::OtkFocusWidget foo(&app); foo.resize(600, 500); - foo.setTexture(my_style->getTitleFocus()); - foo.setUnfocusTexture(my_style->getTitleUnfocus()); + foo.setTexture(app.getStyle()->getTitleFocus()); + foo.setUnfocusTexture(app.getStyle()->getTitleUnfocus()); foo.setBevelWidth(2); foo.setDirection(otk::OtkWidget::Horizontal);

@@ -37,15 +20,15 @@

left.setDirection(otk::OtkWidget::Horizontal); left.setStretchableVert(true); left.setStretchableHorz(true); - left.setTexture(my_style->getTitleFocus()); - left.setUnfocusTexture(my_style->getTitleUnfocus()); + left.setTexture(app.getStyle()->getTitleFocus()); + left.setUnfocusTexture(app.getStyle()->getTitleUnfocus()); right.setDirection(otk::OtkWidget::Vertical); right.setBevelWidth(10); right.setStretchableVert(true); right.setWidth(300); - right.setTexture(my_style->getTitleFocus()); - right.setUnfocusTexture(my_style->getTitleUnfocus()); + right.setTexture(app.getStyle()->getTitleFocus()); + right.setUnfocusTexture(app.getStyle()->getTitleUnfocus()); otk::OtkButton iconb(&left); otk::OtkFocusWidget label(&left);

@@ -60,8 +43,8 @@ // fix width to 60 and let the height be calculated by its parent

//label.setHeight(20); label.setStretchableVert(true); label.setStretchableHorz(true); - label.setTexture(my_style->getLabelFocus()); - label.setUnfocusTexture(my_style->getLabelUnfocus()); + label.setTexture(app.getStyle()->getLabelFocus()); + label.setUnfocusTexture(app.getStyle()->getLabelUnfocus()); // fixed size maxb.setText("bar");

@@ -75,34 +58,18 @@ otk::OtkButton rbutt2(&right);

rblef.setStretchableHorz(true); rblef.setHeight(50); - rblef.setTexture(my_style->getHandleFocus()); - rblef.setUnfocusTexture(my_style->getHandleUnfocus()); + rblef.setTexture(app.getStyle()->getHandleFocus()); + rblef.setUnfocusTexture(app.getStyle()->getHandleUnfocus()); rbutt1.setText("this is fucking tight"); rbutt2.setText("heh, WOOP"); // will recursively unfocus its children //foo.unfocus(); - foo.update(); - foo.show(); - while (1) { - if (XPending(otk::OBDisplay::display)) { - XEvent e; - XNextEvent(otk::OBDisplay::display, &e); - if (e.type == Expose) { - foo.expose(e.xexpose); - } else if (e.type == ConfigureNotify) { - foo.configure(e.xconfigure); - } - } - } - - delete my_style; - delete tm; - delete ctrl; + foo.show(); - otk::OBDisplay::destroy(); + app.exec(); return 0; }
M otk/widget.ccotk/widget.cc

@@ -9,7 +9,8 @@

namespace otk { OtkWidget::OtkWidget(OtkWidget *parent, Direction direction) - : _parent(parent), _style(parent->getStyle()), _direction(direction), + : OtkEventHandler(), + _parent(parent), _style(parent->getStyle()), _direction(direction), _cursor(parent->getCursor()), _bevel_width(parent->getBevelWidth()), _ignore_config(0), _visible(false), _focused(false), _grabbed_mouse(false),

@@ -22,9 +23,25 @@ parent->addChild(this);

create(); } +OtkWidget::OtkWidget(OtkApplication *app, Direction direction, + Cursor cursor, int bevel_width) + : OtkEventHandler(), + _parent(0), _style(app->getStyle()), _direction(direction), _cursor(cursor), + _bevel_width(bevel_width), _ignore_config(0), _visible(false), + _focused(false), _grabbed_mouse(false), _grabbed_keyboard(false), + _stretchable_vert(false), _stretchable_horz(false), _texture(0), + _bg_pixmap(0), _bg_pixel(0), _screen(app->getStyle()->getScreen()), + _fixed_width(false), _fixed_height(false), _dirty(false) +{ + assert(app); + create(); + app->registerHandler(_window, this); +} + OtkWidget::OtkWidget(Style *style, Direction direction, Cursor cursor, int bevel_width) - : _parent(0), _style(style), _direction(direction), _cursor(cursor), + : OtkEventHandler(), + _parent(0), _style(style), _direction(direction), _cursor(cursor), _bevel_width(bevel_width), _ignore_config(0), _visible(false), _focused(false), _grabbed_mouse(false), _grabbed_keyboard(false), _stretchable_vert(false), _stretchable_horz(false), _texture(0),

@@ -396,8 +413,9 @@ if (it != _children.end())

_children.erase(it); } -bool OtkWidget::expose(const XExposeEvent &e) +int OtkWidget::exposeHandler(const XExposeEvent &e) { + OtkEventHandler::exposeHandler(e); if (e.window == _window) { _dirty = true; update();

@@ -405,14 +423,15 @@ return true;

} else { OtkWidgetList::iterator it = _children.begin(), end = _children.end(); for (; it != end; ++it) - if ((*it)->expose(e)) + if ((*it)->exposeHandler(e)) return true; } return false; } -bool OtkWidget::configure(const XConfigureEvent &e) +int OtkWidget::configureHandler(const XConfigureEvent &e) { + OtkEventHandler::configureHandler(e); if (e.window == _window) { if (_ignore_config) { _ignore_config--;

@@ -428,7 +447,7 @@ return true;

} else { OtkWidgetList::iterator it = _children.begin(), end = _children.end(); for (; it != end; ++it) - if ((*it)->configure(e)) + if ((*it)->configureHandler(e)) return true; } return false;
M otk/widget.hhotk/widget.hh

@@ -1,5 +1,5 @@

-#ifndef __focus_hh -#define __focus_hh +#ifndef __widget_hh +#define __widget_hh #include <string> #include <list>

@@ -8,10 +8,12 @@ #include "rect.hh"

#include "point.hh" #include "texture.hh" #include "style.hh" +#include "eventhandler.hh" +#include "application.hh" namespace otk { -class OtkWidget { +class OtkWidget : public OtkEventHandler { public:

@@ -20,6 +22,8 @@

typedef std::list<OtkWidget *> OtkWidgetList; OtkWidget(OtkWidget *parent, Direction = Horizontal); + OtkWidget(OtkApplication *app, Direction direction = Horizontal, + Cursor cursor = 0, int bevel_width = 1); OtkWidget(Style *style, Direction direction = Horizontal, Cursor cursor = 0, int bevel_width = 1);

@@ -27,8 +31,8 @@ virtual ~OtkWidget();

virtual void update(void); - virtual bool expose(const XExposeEvent &e); - virtual bool configure(const XConfigureEvent &e); + int exposeHandler(const XExposeEvent &e); + int configureHandler(const XConfigureEvent &e); inline Window getWindow(void) const { return _window; } inline const OtkWidget *getParent(void) const { return _parent; }