]> Dogcows Code - chaz/openbox/blobdiff - src/frame.hh
more compressing
[chaz/openbox] / src / frame.hh
index 1c398932c30033af881d41701c69305d050d1d76..9e3f3822b93f172874e73e8d09a4e0de517a45ba 100644 (file)
@@ -9,35 +9,56 @@ extern "C" {
 #include <X11/Xlib.h>
 }
 
-#include <string>
-
+#include "client.hh"
 #include "otk/strut.hh"
 #include "otk/rect.hh"
 #include "otk/screeninfo.hh"
 #include "otk/style.hh"
+#include "otk/widget.hh"
+#include "otk/button.hh"
+#include "otk/focuswidget.hh"
+#include "otk/focuslabel.hh"
 
-namespace ob {
+#include <string>
 
-class OBClient;
+namespace ob {
 
 //! Holds and decorates a frame around an OBClient (client window)
 /*!
 */
-class OBFrame {
+class OBFrame : public otk::OtkWidget {
 private:
-  const OBClient *_client;
+  OBClient *_client;
   const otk::ScreenInfo *_screen;
 
   //! The style to use for size and display the decorations
-  const otk::Style *_style;
+  otk::Style *_style;
 
-  //! The window id of the base frame window
-  Window _window;
   //! The size of the frame on each side of the client window
   otk::Strut _size;
 
+  // decoration windows
+  otk::OtkFocusWidget _titlebar;
+  otk::OtkButton      _button_close;
+  otk::OtkButton      _button_iconify;
+  otk::OtkButton      _button_max;
+  otk::OtkButton      _button_stick;
+  otk::OtkFocusLabel  _label;
+  otk::OtkFocusWidget _handle;
+  otk::OtkButton      _grip_left;
+  otk::OtkButton      _grip_right;
+
+  //! The decorations to display on the window.
+  /*!
+    This is by default the same value as in the OBClient::decorations, but it
+    is duplicated here so that it can be overridden per-window by the user.
+  */
+  OBClient::DecorationFlags _decorations;
+
   //! Creates the base frame window
   Window createFrame();
+  //! Creates a child frame decoration element window
+  Window createChild(Window parent, Cursor cursor);
 
   //! Reparents the client window from the root window onto the frame
   void grabClient();
@@ -53,21 +74,17 @@ public:
     @param client The client window which will be decorated by the new OBFrame
     @param style The style to use to decorate the frame
   */
-  OBFrame(const OBClient *client, const otk::Style *style);
+  OBFrame(OBClient *client, otk::Style *style);
   //! Destroys the OBFrame object
   virtual ~OBFrame();
 
-  //! Load a style to decorate the frame with
-  void loadStyle(const otk::Style *style);
+  //! Set the style to decorate the frame with
+  virtual void setStyle(otk::Style *style);
 
-  //! Size the frame to the client
-  void resize();
+  //! Update the frame to match the client
+  void adjust();
   //! Shape the frame window to the client window
-  void shape(); 
-  
-  //! Returns the frame's most-parent window, which is a child of the root
-  //! window
-  inline Window window() const { return _window; }
+  void adjustShape(); 
 };
 
 }
This page took 0.026559 seconds and 4 git commands to generate.