]> Dogcows Code - chaz/openbox/blobdiff - src/frame.hh
make the 'toggle all desktops' button work
[chaz/openbox] / src / frame.hh
index ab1e1b0347eb5c82e4a90fa42cfbc5bc453e76fb..40c08199d012620160c25048524fb944a620f85a 100644 (file)
@@ -16,34 +16,30 @@ extern "C" {
 #include "otk/strut.hh"
 #include "otk/rect.hh"
 #include "otk/screeninfo.hh"
-#include "otk/style.hh"
+#include "otk/renderstyle.hh"
 #include "otk/widget.hh"
+#include "otk/ustring.hh"
 
 #include <string>
 
 namespace ob {
 
-//! Holds and decorates a frame around an OBClient (client window)
+//! Holds and decorates a frame around an Client (client window)
 /*!
   The frame is responsible for calling XSelectInput on the client window's new
   parent with the SubstructureRedirectMask so that structure events for the
   client are sent to the window manager.
 */
-class OBFrame : public otk::OtkWidget, public OBWidget {
+class Frame : public otk::Widget, public WidgetBase {
 public:
 
   //! The event mask to grab on frame windows
-  static const long event_mask = EnterWindowMask | LeaveWindowMask |
-                                 ButtonPressMask | ButtonReleaseMask |
-                                 ButtonMotionMask;
-
+  static const long event_mask = EnterWindowMask | LeaveWindowMask;
+   
 private:
-  OBClient *_client;
+  Client *_client;
   const otk::ScreenInfo *_screen;
 
-  //! The style to use for size and display the decorations
-  otk::Style *_style;
-
   //! The size of the frame on each side of the client window
   otk::Strut _size;
 
@@ -51,47 +47,39 @@ private:
   otk::Strut _innersize;
 
   // decoration windows
-  OBBackgroundWidget  _plate;   // sits entirely under the client window
-  OBBackgroundWidget  _titlebar;
-  OBButtonWidget      _button_close;
-  OBButtonWidget      _button_iconify;
-  OBButtonWidget      _button_max;
-  OBButtonWidget      _button_stick;
-  OBLabelWidget       _label;
-  OBBackgroundWidget  _handle;
-  OBButtonWidget      _grip_left;
-  OBButtonWidget      _grip_right;
+  BackgroundWidget  _plate;   // sits entirely under the client window
+  BackgroundWidget  _titlebar;
+  ButtonWidget      _button_close;
+  ButtonWidget      _button_iconify;
+  ButtonWidget      _button_max;
+  ButtonWidget      _button_stick;
+  LabelWidget       _label;
+  BackgroundWidget  _handle;
+  ButtonWidget      _grip_left;
+  ButtonWidget      _grip_right;
 
   //! The decorations to display on the window.
   /*!
-    This is by default the same value as in the OBClient::decorations, but it
+    This is by default the same value as in the Client::decorations, but it
     is duplicated here so that it can be overridden per-window by the user.
   */
-  OBClient::DecorationFlags _decorations;
-
-  //! Reparents the client window from the root window onto the frame
-  void grabClient();
-  //! Reparents the client window back to the root window
-  /*!
-    @param remap Re-map the client window when we're done reparenting?
-  */
-  void releaseClient(bool remap);
-
-  //! Shape the frame window to the client window
-  void adjustShape();
+  Client::DecorationFlags _decorations;
 
 public:
-  //! Constructs an OBFrame object, and reparents the client to itself
+  //! Constructs an Frame object, and reparents the client to itself
   /*!
-    @param client The client window which will be decorated by the new OBFrame
+    @param client The client window which will be decorated by the new Frame
     @param style The style to use to decorate the frame
   */
-  OBFrame(OBClient *client, otk::Style *style);
-  //! Destroys the OBFrame object
-  virtual ~OBFrame();
+  Frame(Client *client, otk::RenderStyle *style);
+  //! Destroys the Frame object
+  virtual ~Frame();
 
+  //! Returns the size of the frame on each side of the client
+  const otk::Strut& size() const { return _size; }
+  
   //! Set the style to decorate the frame with
-  virtual void setStyle(otk::Style *style);
+  virtual void setStyle(otk::RenderStyle *style);
 
   //! Empty overridden method to prevent automatic alignment of children
   virtual void adjust();
@@ -101,12 +89,22 @@ public:
   //! Displays unfocused decorations
   virtual void unfocus();
 
-  void setTitle(const std::string &text);
+  void setTitle(const otk::ustring &text);
  
+  //! Reparents the client window from the root window onto the frame
+  void grabClient();
+  //! Reparents the client window back to the root window
+  void releaseClient();
+
   //! Update the frame's size to match the client
   void adjustSize();
   //! Update the frame's position to match the client
   void adjustPosition();
+  //! Shape the frame window to the client window
+  void adjustShape();
+  //! Update the frame to match the client's new state (for things like toggle
+  //! buttons)
+  void adjustState();
 
   //! Applies gravity to the client's position to find where the frame should
   //! be positioned.
This page took 0.025034 seconds and 4 git commands to generate.