]> Dogcows Code - chaz/openbox/blobdiff - src/frame.hh
add an OBBackgroundWidget and use it for setting colors so far.
[chaz/openbox] / src / frame.hh
index e1647a991e2e7243722d5d2a61617ecb764ef56b..450c86702638fa26ea94ed74a0f3d9984e525811 100644 (file)
@@ -10,6 +10,7 @@ extern "C" {
 }
 
 #include "client.hh"
+#include "backgroundwidget.hh"
 #include "otk/strut.hh"
 #include "otk/rect.hh"
 #include "otk/screeninfo.hh"
@@ -30,6 +31,11 @@ namespace ob {
   client are sent to the window manager.
 */
 class OBFrame : public otk::OtkWidget {
+public:
+
+  //! The event mask to grab on frame windows
+  static const long event_mask = EnterWindowMask | LeaveWindowMask;
+
 private:
   OBClient *_client;
   const otk::ScreenInfo *_screen;
@@ -44,14 +50,14 @@ private:
   otk::Strut _innersize;
 
   // decoration windows
-  otk::OtkFocusWidget _plate;   // sits entirely under the client window
-  otk::OtkFocusWidget _titlebar;
+  OBBackgroundWidget  _plate;   // sits entirely under the client window
+  OBBackgroundWidget  _titlebar;
   otk::OtkButton      _button_close;
   otk::OtkButton      _button_iconify;
   otk::OtkButton      _button_max;
   otk::OtkButton      _button_stick;
   otk::OtkFocusLabel  _label;
-  otk::OtkFocusWidget _handle;
+  OBBackgroundWidget  _handle;
   otk::OtkButton      _grip_left;
   otk::OtkButton      _grip_right;
 
@@ -70,6 +76,9 @@ private:
   */
   void releaseClient(bool remap);
 
+  //! Shape the frame window to the client window
+  void adjustShape();
+
 public:
   //! Constructs an OBFrame object, and reparents the client to itself
   /*!
@@ -83,18 +92,25 @@ public:
   //! Set the style to decorate the frame with
   virtual void setStyle(otk::Style *style);
 
-  //! Update the frame to match the client
-  void adjust();
-  //! Shape the frame window to the client window
-  void adjustShape();
+  //! Update the frame's size to match the client
+  void adjustSize();
+  //! Update the frame's position to match the client
+  void adjustPosition();
+
+  //! Applies gravity to the client's position to find where the frame should
+  //! be positioned.
+  /*!
+    @return The proper coordinates for the frame, based on the client.
+  */
+  void clientGravity(int &x, int &y);
 
-  //! Applies gravity for the client's gravity, moving the frame to the
-  //! appropriate place
-  void applyGravity();
+  //! Reversly applies gravity to the frame's position to find where the client
+  //! should be positioned.
+  /*!
+    @return The proper coordinates for the client, based on the frame.
+  */
+  void frameGravity(int &x, int &y);
 
-  //! Reversely applies gravity for the client's gravity, moving the frame so
-  //! that the client is in its pre-gravity position
-  void reverseGravity();
 };
 
 }
This page took 0.021297 seconds and 4 git commands to generate.