all repos — openbox @ 6f5e60f0337e60d904a8f549aeaa631afefc8033

openbox fork - make it a bit more like ryudo

fixed bugs, got otkapp to select on a fd, modded widget to make use of otkapp, press/release events on buttons
Marius Nita marius@cs.pdx.edu
commit

6f5e60f0337e60d904a8f549aeaa631afefc8033

parent

0680daeef57748af17e0462def4852d408a62eb6

M otk/application.ccotk/application.cc

@@ -1,6 +1,8 @@

#include "application.hh" #include "eventhandler.hh" +#include <iostream> + namespace otk { OtkApplication::OtkApplication(int argc, char **argv)

@@ -35,12 +37,23 @@ {

// find the style name as a property _style_conf->setFile("/usr/local/share/openbox/styles/artwiz"); _style_conf->load(); - _style->load(_style_conf); + _style->load(*_style_conf); } void OtkApplication::exec(void) { - dispatchEvents(); + const int xfd = ConnectionNumber(OBDisplay::display); + fd_set rfds; + timeval *timeout = 0; + + while (1) { + dispatchEvents(); + + FD_ZERO(&rfds); + FD_SET(xfd, &rfds); + + select(xfd + 1, &rfds, 0, 0, timeout); + } } }
M otk/button.ccotk/button.cc

@@ -1,3 +1,4 @@

+#include <iostream> #include "button.hh" namespace otk {

@@ -64,6 +65,22 @@ } else

OtkFocusWidget::update(); _dirty = false; +} + +int OtkButton::buttonPressHandler(const XButtonEvent &e) +{ + press(); + _dirty = true; + update(); + return OtkFocusWidget::buttonPressHandler(e); +} + +int OtkButton::buttonReleaseHandler(const XButtonEvent &e) +{ + release(); + _dirty = true; + update(); + return OtkFocusWidget::buttonReleaseHandler(e); } int OtkButton::exposeHandler(const XExposeEvent &e)
M otk/button.hhotk/button.hh

@@ -39,6 +39,8 @@

void update(void); int exposeHandler(const XExposeEvent &e); int configureHandler(const XConfigureEvent &e); + int buttonPressHandler(const XButtonEvent &e); + int buttonReleaseHandler(const XButtonEvent &e); private:
M otk/eventdispatcher.ccotk/eventdispatcher.cc

@@ -1,9 +1,11 @@

#include "eventdispatcher.hh" #include "display.hh" +#include <iostream> namespace otk { OtkEventDispatcher::OtkEventDispatcher() + : _fallback(0) { }
M otk/eventhandler.ccotk/eventhandler.cc

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

#include "eventhandler.hh" +#include <iostream> namespace otk {

@@ -14,71 +15,71 @@

int OtkEventHandler::handle(const XEvent &e) { - switch(e.type){ - case KeyPress: - return keyPressHandler(e.xkey); - case KeyRelease: - return keyReleaseHandler(e.xkey); - case ButtonPress: - return buttonPressHandler(e.xbutton); - case ButtonRelease: - return buttonReleaseHandler(e.xbutton); - case EnterNotify: - return enterHandler(e.xcrossing); - case LeaveNotify: - return leaveHandler(e.xcrossing); - case FocusIn: - return focusHandler(e.xfocus); - case FocusOut: - return unfocusHandler(e.xfocus); - case Expose: - return exposeHandler(e.xexpose); - case GraphicsExpose: - return graphicsExposeHandler(e.xgraphicsexpose); - case NoExpose: - return noExposeEventHandler(e.xnoexpose); - case CirculateRequest: - return circulateRequestHandler(e.xcirculaterequest); - case ConfigureRequest: - return configureRequestHandler(e.xconfigurerequest); - case MapRequest: - return mapRequestHandler(e.xmaprequest); - case ResizeRequest: - return resizeRequestHandler(e.xresizerequest); - case CirculateNotify: - return circulateHandler(e.xcirculate); - case ConfigureNotify: - return configureHandler(e.xconfigure); - case CreateNotify: - return createHandler(e.xcreatewindow); - case DestroyNotify: - return destroyHandler(e.xdestroywindow); - case GravityNotify: - return gravityHandler(e.xgravity); - case MapNotify: - return mapHandler(e.xmap); - case MappingNotify: - return mappingHandler(e.xmapping); - case ReparentNotify: - return reparentHandler(e.xreparent); - case UnmapNotify: - return unmapHandler(e.xunmap); - case VisibilityNotify: - return visibilityHandler(e.xvisibility); - case ColormapNotify: - return colorMapHandler(e.xcolormap); - case ClientMessage: - return clientMessageHandler(e.xclient); - case PropertyNotify: - return propertyHandler(e.xproperty); - case SelectionClear: - return selectionClearHandler(e.xselectionclear); - case SelectionNotify: - return selectionHandler(e.xselection); - case SelectionRequest: - return selectionRequestHandler(e.xselectionrequest); - }; - return 0; + switch(e.type){ + case KeyPress: + return keyPressHandler(e.xkey); + case KeyRelease: + return keyReleaseHandler(e.xkey); + case ButtonPress: + return buttonPressHandler(e.xbutton); + case ButtonRelease: + return buttonReleaseHandler(e.xbutton); + case EnterNotify: + return enterHandler(e.xcrossing); + case LeaveNotify: + return leaveHandler(e.xcrossing); + case FocusIn: + return focusHandler(e.xfocus); + case FocusOut: + return unfocusHandler(e.xfocus); + case Expose: + return exposeHandler(e.xexpose); + case GraphicsExpose: + return graphicsExposeHandler(e.xgraphicsexpose); + case NoExpose: + return noExposeEventHandler(e.xnoexpose); + case CirculateRequest: + return circulateRequestHandler(e.xcirculaterequest); + case ConfigureRequest: + return configureRequestHandler(e.xconfigurerequest); + case MapRequest: + return mapRequestHandler(e.xmaprequest); + case ResizeRequest: + return resizeRequestHandler(e.xresizerequest); + case CirculateNotify: + return circulateHandler(e.xcirculate); + case ConfigureNotify: + return configureHandler(e.xconfigure); + case CreateNotify: + return createHandler(e.xcreatewindow); + case DestroyNotify: + return destroyHandler(e.xdestroywindow); + case GravityNotify: + return gravityHandler(e.xgravity); + case MapNotify: + return mapHandler(e.xmap); + case MappingNotify: + return mappingHandler(e.xmapping); + case ReparentNotify: + return reparentHandler(e.xreparent); + case UnmapNotify: + return unmapHandler(e.xunmap); + case VisibilityNotify: + return visibilityHandler(e.xvisibility); + case ColormapNotify: + return colorMapHandler(e.xcolormap); + case ClientMessage: + return clientMessageHandler(e.xclient); + case PropertyNotify: + return propertyHandler(e.xproperty); + case SelectionClear: + return selectionClearHandler(e.xselectionclear); + case SelectionNotify: + return selectionHandler(e.xselection); + case SelectionRequest: + return selectionRequestHandler(e.xselectionrequest); + }; + return 0; } }
M otk/eventhandler.hhotk/eventhandler.hh

@@ -10,7 +10,7 @@

class OtkEventHandler{ public: //! Dispatches events to one of the other handlers based on their type. - int handle(const XEvent &e); + virtual int handle(const XEvent &e); //! Called whenever any key is pressed. virtual int keyPressHandler(const XKeyEvent &) {return 1;}
M otk/style.ccotk/style.cc

@@ -3,8 +3,9 @@ #include "../config.h"

#endif // HAVE_CONFIG_H #include <assert.h> +#include <iostream> + #include "display.hh" - #include "util.hh" #include "style.hh"

@@ -256,7 +257,7 @@ }

BFont *Style::readDatabaseFont(const std::string &rbasename, - const Configuration &style) { + const Configuration &style) { std::string fontname; std::string s;
M otk/style.hhotk/style.hh

@@ -123,6 +123,11 @@ inline unsigned int getFrameWidth(void) const { return frame_width; }

inline unsigned int getBorderWidth(void) const { return border_width; } inline const BFont &getFont() const { return *font; } + + inline void setShadowFonts(bool fonts) { shadow_fonts = fonts; } + inline bool hasShadowFonts(void) const { return shadow_fonts; } + + inline void setAAFonts(bool fonts) { aa_fonts = fonts; } inline bool hasAAFonts(void) const { return aa_fonts; } inline TextJustify textJustify(void) { return justify; }
M otk/widget.ccotk/widget.cc

@@ -17,10 +17,11 @@ _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(parent->getScreen()), _fixed_width(false), _fixed_height(false), - _dirty(false) + _dirty(false), _event_dispatcher(parent->getEventDispatcher()) { parent->addChild(this); create(); + _event_dispatcher->registerHandler(_window, this); } OtkWidget::OtkWidget(OtkApplication *app, Direction direction,

@@ -31,11 +32,12 @@ _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) + _fixed_width(false), _fixed_height(false), _dirty(false), + _event_dispatcher(app) { assert(app); create(); - app->registerHandler(_window, this); + _event_dispatcher->registerHandler(_window, this); } OtkWidget::OtkWidget(Style *style, Direction direction,

@@ -413,6 +415,14 @@ if (it != _children.end())

_children.erase(it); } +void OtkWidget::setEventDispatcher(OtkEventDispatcher *disp) +{ + if (_event_dispatcher) + _event_dispatcher->clearHandler(_window); + _event_dispatcher = disp; + _event_dispatcher->registerHandler(_window, this); +} + int OtkWidget::exposeHandler(const XExposeEvent &e) { OtkEventHandler::exposeHandler(e);

@@ -420,11 +430,6 @@ if (e.window == _window) {

_dirty = true; update(); return true; - } else { - OtkWidgetList::iterator it = _children.begin(), end = _children.end(); - for (; it != end; ++it) - if ((*it)->exposeHandler(e)) - return true; } return false; }

@@ -436,7 +441,6 @@ if (e.window == _window) {

if (_ignore_config) { _ignore_config--; } else { - std::cout << "configure\n"; if (!(e.width == _rect.width() && e.height == _rect.height())) { _dirty = true; _rect.setSize(e.width, e.height);

@@ -444,12 +448,8 @@ }

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

@@ -96,6 +96,10 @@

inline Style *getStyle(void) const { return _style; } void setStyle(Style *style) { _style = style; } + inline OtkEventDispatcher *getEventDispatcher(void) + { return _event_dispatcher; } + void setEventDispatcher(OtkEventDispatcher *disp); + private: void create(void);

@@ -136,6 +140,8 @@ bool _fixed_width;

bool _fixed_height; bool _dirty; + + OtkEventDispatcher *_event_dispatcher; }; }