summaryrefslogtreecommitdiff
path: root/src/frame.hh
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-11-10 04:08:26 +0000
committerDana Jansens <danakj@orodu.net>2002-11-10 04:08:26 +0000
commitb9cac2146e1dfe54cb6c0ce647d6c7d58d17de54 (patch)
treea304e1d573673762877cdf66be912c1f5afd5246 /src/frame.hh
parentf2ae1c3b176e02eeb109478d3cfbf89647d66100 (diff)
WINDOWS GET FRAMES FRAME SHOW UP THEY WORK HUZZAH SOON THEYLL BE LIKE OLD TIMES!
Diffstat (limited to 'src/frame.hh')
-rw-r--r--src/frame.hh75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/frame.hh b/src/frame.hh
new file mode 100644
index 00000000..1c398932
--- /dev/null
+++ b/src/frame.hh
@@ -0,0 +1,75 @@
+// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
+#ifndef __frame_hh
+#define __frame_hh
+
+/*! @file frame.hh
+*/
+
+extern "C" {
+#include <X11/Xlib.h>
+}
+
+#include <string>
+
+#include "otk/strut.hh"
+#include "otk/rect.hh"
+#include "otk/screeninfo.hh"
+#include "otk/style.hh"
+
+namespace ob {
+
+class OBClient;
+
+//! Holds and decorates a frame around an OBClient (client window)
+/*!
+*/
+class OBFrame {
+private:
+ const OBClient *_client;
+ const otk::ScreenInfo *_screen;
+
+ //! The style to use for size and display the decorations
+ const 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;
+
+ //! Creates the base frame window
+ Window createFrame();
+
+ //! 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);
+
+public:
+ //! Constructs an OBFrame object, and reparents the client to itself
+ /*!
+ @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);
+ //! Destroys the OBFrame object
+ virtual ~OBFrame();
+
+ //! Load a style to decorate the frame with
+ void loadStyle(const otk::Style *style);
+
+ //! Size the frame to the client
+ void resize();
+ //! 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; }
+};
+
+}
+
+#endif // __frame_hh