]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkhandlebox.h
use FALSE for size_only most of the time when calling
[~andy/gtk] / gtk / gtkhandlebox.h
index 10c98f7ab5db76670ee67fe5efbf318813aff63d..0eceef433833d43f4435484311fcf1282bbba6d6 100644 (file)
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * Modified by the GTK+ Team and others 1997-1999.  See the AUTHORS
+ * file for a list of people on the GTK+ Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
  */
 
 /* The GtkHandleBox is to allow widgets to be dragged in and out of
@@ -27,7 +35,7 @@
 
 
 #include <gdk/gdk.h>
-#include <gtk/gtkeventbox.h>
+#include <gtk/gtkbin.h>
 
 
 #ifdef __cplusplus
@@ -35,9 +43,12 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#define GTK_HANDLE_BOX(obj)          GTK_CHECK_CAST (obj, gtk_handle_box_get_type (), GtkHandleBox)
-#define GTK_HANDLE_BOX_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gtk_handle_box_get_type (), GtkHandleBoxClass)
-#define GTK_IS_HANDLE_BOX(obj)       GTK_CHECK_TYPE (obj, gtk_handle_box_get_type ())
+#define GTK_TYPE_HANDLE_BOX            (gtk_handle_box_get_type ())
+#define GTK_HANDLE_BOX(obj)            (GTK_CHECK_CAST ((obj), GTK_TYPE_HANDLE_BOX, GtkHandleBox))
+#define GTK_HANDLE_BOX_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_HANDLE_BOX, GtkHandleBoxClass))
+#define GTK_IS_HANDLE_BOX(obj)         (GTK_CHECK_TYPE ((obj), GTK_TYPE_HANDLE_BOX))
+#define GTK_IS_HANDLE_BOX_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_HANDLE_BOX))
+#define GTK_HANDLE_BOX_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_HANDLE_BOX, GtkHandleBoxClass))
 
 
 typedef struct _GtkHandleBox       GtkHandleBox;
@@ -45,27 +56,47 @@ typedef struct _GtkHandleBoxClass  GtkHandleBoxClass;
 
 struct _GtkHandleBox
 {
-  GtkEventBox     event_box;
-  GtkWidget      *real_parent;
-  GtkRequisition  real_requisition;
-  gboolean        is_being_dragged;
-  gboolean        is_onroot;
+  GtkBin bin;
+
+  GdkWindow      *bin_window;  /* parent window for children */
+  GdkWindow      *float_window;
+  GtkShadowType   shadow_type;
+  guint                  handle_position : 2;
+  guint                  float_window_mapped : 1;
+  guint                  child_detached : 1;
+  guint                  in_drag : 1;
+  guint                  shrink_on_detach : 1;
+
+  gint            snap_edge : 3; /* -1 == unset */
+  
+  /* Variables used during a drag
+   */
+  gint deskoff_x, deskoff_y; /* Offset between root relative coordinates
+                             * and deskrelative coordinates */
+  GtkAllocation   attach_allocation;
+  GtkAllocation   float_allocation;
 };
 
 struct _GtkHandleBoxClass
 {
-  GtkEventBoxClass parent_class;
+  GtkBinClass parent_class;
+
+  void (*child_attached)       (GtkHandleBox   *handle_box,
+                                GtkWidget      *child);
+  void (*child_detached)       (GtkHandleBox   *handle_box,
+                                GtkWidget      *child);
 };
 
 
-guint          gtk_handle_box_get_type        (void);
-GtkWidget*     gtk_handle_box_new             (void);
-/* the x and y coordinates (relative to root window, of course)
-   are only needed if you pass in_root = TRUE */
-void           gtk_handle_box_set_location    (GtkWidget *widget,
-                                              gboolean   in_root,
-                                              gint       x,
-                                              gint       y);
+GtkType     gtk_handle_box_get_type        (void);
+GtkWidget*  gtk_handle_box_new             (void);
+void        gtk_handle_box_set_shadow_type      (GtkHandleBox    *handle_box,
+                                                 GtkShadowType    type);
+void        gtk_handle_box_set_handle_position  (GtkHandleBox    *handle_box,
+                                                GtkPositionType  position);
+void        gtk_handle_box_set_snap_edge        (GtkHandleBox    *handle_box,
+                                                GtkPositionType  edge);
+
 
 
 #ifdef __cplusplus