--- /dev/null
+#ifndef __BC_DRAGRECT_H__
+#define __BC_DRAGRECT_H__
+
+#include "bcwindowbase.inc"
+#include "bcdragbox.inc"
+#include "bcpopup.h"
+#include "thread.h"
+
+
+class BC_DragBox : public Thread
+{
+public:
+ BC_DragBox(BC_WindowBase *parent);
+ ~BC_DragBox();
+ void start_drag();
+ void run();
+ virtual int handle_done_event(int x0, int y0, int x1, int y1) { return 0; }
+
+ BC_Popup *edge[4];
+ BC_WindowBase *parent;
+ BC_DragBoxPopup *popup;
+ int done;
+};
+
+class BC_DragBoxPopup : public BC_Popup
+{
+public:
+ BC_DragBoxPopup(BC_DragBox *grab_thread);
+ ~BC_DragBoxPopup();
+ int grab_event(XEvent *event);
+ void update();
+ void draw_selection(int show);
+
+ BC_DragBox *grab_thread;
+ int dragging;
+ int grab_color;
+ int x0, y0, x1, y1;
+ int lx0, ly0, lx1, ly1;
+};
+
+#endif