]> Dogcows Code - chaz/openbox/commitdiff
fixed bugs, got otkapp to select on a fd, modded widget to make use of otkapp, press...
authorMarius Nita <marius@cs.pdx.edu>
Sat, 16 Nov 2002 09:59:37 +0000 (09:59 +0000)
committerMarius Nita <marius@cs.pdx.edu>
Sat, 16 Nov 2002 09:59:37 +0000 (09:59 +0000)
otk/application.cc
otk/button.cc
otk/button.hh
otk/eventdispatcher.cc
otk/eventhandler.cc
otk/eventhandler.hh
otk/style.cc
otk/style.hh
otk/widget.cc
otk/widget.hh

index 92d6dfd23456134593ccf68d6e4fc20bd73467d4..efe6ad85f9beaf8fd070d0e05ab17a0a1e82d0dd 100644 (file)
@@ -1,6 +1,8 @@
 #include "application.hh"
 #include "eventhandler.hh"
 
+#include <iostream>
+
 namespace otk {
 
 OtkApplication::OtkApplication(int argc, char **argv)
@@ -35,12 +37,23 @@ void OtkApplication::loadStyle(void)
   // 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);
+  }
 }
 
 }
index fd40f7d57485ce87799a7abc6e06f35019798c4f..3f283b00085ac9869a7e0d3b661995a34ede48ff 100644 (file)
@@ -1,3 +1,4 @@
+#include <iostream>
 #include "button.hh"
 
 namespace otk {
@@ -66,6 +67,22 @@ void OtkButton::update(void)
   _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)
 {
   _dirty = true;
index e73b1f12583f66574198cc65c2cd9fb2cd84f7de..e32cd028d4ed7d8a10a6cd54276b9d70cee7b34f 100644 (file)
@@ -39,6 +39,8 @@ public:
   void update(void);
   int exposeHandler(const XExposeEvent &e);
   int configureHandler(const XConfigureEvent &e);
+  int buttonPressHandler(const XButtonEvent &e);
+  int buttonReleaseHandler(const XButtonEvent &e);
 
 private:
 
index 0d861b3670ce286f4ca36539b8efc72697700535..2de283691bf1ed7229118da7cba4f5310efbaa73 100644 (file)
@@ -1,9 +1,11 @@
 #include "eventdispatcher.hh"
 #include "display.hh"
+#include <iostream>
 
 namespace otk {
 
 OtkEventDispatcher::OtkEventDispatcher()
+  : _fallback(0)
 {
 }
 
index 27ad5e736deb9e23ec2d860739d1c9f50b7f2c7b..cab95e17ce8db25daa865e4d58b4898ac672c310 100644 (file)
@@ -1,4 +1,5 @@
 #include "eventhandler.hh"
+#include <iostream>
 
 namespace otk {
 
@@ -14,71 +15,71 @@ OtkEventHandler::~OtkEventHandler()
 
 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;
 }
 
 }
index 000efb53ebc8067cc55f0060a41a9b1d94afb4c6..ea273ef4375e8f5cbc41fafc7bd4c0767a8edeb1 100644 (file)
@@ -10,7 +10,7 @@ namespace otk {
 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;}
index 6349a6bcf4a23694222f3663e0794b14b37765b6..3c40e24bb5fcc87773aac642c50b45b881c8de5d 100644 (file)
@@ -3,8 +3,9 @@
 #endif // HAVE_CONFIG_H
 
 #include <assert.h>
-#include "display.hh"
+#include <iostream>
 
+#include "display.hh"
 #include "util.hh"
 #include "style.hh"
 
@@ -256,7 +257,7 @@ BColor Style::readDatabaseColor(const std::string &rname,
 
 
 BFont *Style::readDatabaseFont(const std::string &rbasename,
-                                    const Configuration &style) {
+                               const Configuration &style) {
   std::string fontname;
 
   std::string s;
index 4128d93ef7f549c1dec3d3c18ccd611810394d92..ccf4e49a1bb0e6451b74d19a1037ea2a33c79303 100644 (file)
@@ -123,6 +123,11 @@ public:
   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; }
index 50314775ae80759939e54e255118a109dcfb770d..85b4206ee4d2c8db6b1a483332320d544f51a57b 100644 (file)
@@ -17,10 +17,11 @@ OtkWidget::OtkWidget(OtkWidget *parent, Direction direction)
     _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 @@ OtkWidget::OtkWidget(OtkApplication *app, Direction direction,
     _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 @@ void OtkWidget::removeChild(OtkWidget *child)
     _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 @@ int OtkWidget::exposeHandler(const XExposeEvent &e)
     _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 @@ int OtkWidget::configureHandler(const XConfigureEvent &e)
     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 @@ int OtkWidget::configureHandler(const XConfigureEvent &e)
       update();
     }
     return true;
-  } else {
-    OtkWidgetList::iterator it = _children.begin(), end = _children.end();
-    for (; it != end; ++it)
-      if ((*it)->configureHandler(e))
-        return true;
   }
+
   return false;
 }
 
index 473aa812588568d093cadffe8fd21fd6f8ab356d..a87877549142f0a87f91c65417f5a6bd48fa0bd9 100644 (file)
@@ -96,6 +96,10 @@ public:
   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 @@ private:
   bool _fixed_height;
 
   bool _dirty;
+
+  OtkEventDispatcher *_event_dispatcher;
 };
 
 }
This page took 0.038122 seconds and 4 git commands to generate.