colorpicker upgrades, titler fixes
[goodguy/history.git] / cinelerra-5.1 / guicast / bcwindowbase.h
index 4136b110fb8b423fe147d47847c0aafd242d9621..767427dc2a7a63c45d6eaeec75b0092f083d3071 100644 (file)
@@ -93,6 +93,7 @@
 #endif
 #include <X11/extensions/Xinerama.h>
 #ifdef HAVE_GL
+#define GL_GLEXT_PROTOTYPES
 #include <GL/glx.h>
 #endif
 
@@ -195,6 +196,7 @@ public:
        virtual int uses_text() { return 0; };
 // Only if opengl is enabled
        virtual int expose_event() { return 0; };
+       virtual int grab_event(XEvent *event) { return 0; };
        virtual void create_objects() { return; };
 
        int get_window_type() { return window_type; }
@@ -279,12 +281,15 @@ public:
        int get_screen_x(int lock_display, int screen);
        int get_screen_y(int lock_display, int screen);
 // Get current position
-       int get_abs_cursor_x(int lock_window);
-       int get_abs_cursor_y(int lock_window);
-       int get_pop_cursor_x(int lock_window);
-       int get_pop_cursor_y(int lock_window);
-       int get_relative_cursor_x();
-       int get_relative_cursor_y();
+       void get_abs_cursor_xy(int &abs_x, int &abs_y, int lock_window=0);
+       int get_abs_cursor_x(int lock_window=0);
+       int get_abs_cursor_y(int lock_window=0);
+       void get_pop_cursor_xy(int &px, int &py, int lock_window=0);
+       int get_pop_cursor_x(int lock_window=0);
+       int get_pop_cursor_y(int lock_window=0);
+       void get_relative_cursor_xy(int &x, int &y, int lock_window=0);
+       int get_relative_cursor_x(int lock_window=0);
+       int get_relative_cursor_y(int lock_window=0);
        void get_root_coordinates(int x, int y, int *abs_x, int *abs_y);
        void get_win_coordinates(int abs_x, int abs_y, int *x, int *y);
 // Return 1 if cursor is over an unobscured part of this window.
@@ -453,6 +458,14 @@ public:
        int get_id();
        void set_done(int return_value);
        void close(int return_value);
+// Reroute toplevel events
+       int grab(BC_WindowBase *window);
+       int ungrab(BC_WindowBase *window);
+// Grab button events
+       int grab_buttons();
+       void ungrab_buttons();
+       void grab_cursor();
+       void ungrab_cursor();
 // Get a bitmap to draw on the window with
        BC_Bitmap* new_bitmap(int w, int h, int color_model = -1);
 // Draw a bitmap on the window
@@ -501,6 +514,7 @@ public:
        int unset_repeat(int64_t duration);
        const char *get_tooltip();
        int set_tooltip(const char *text);
+       void set_tooltip_done(int v);
        int show_tooltip(int w = -1, int h = -1);
        int hide_tooltip();
        int set_icon(VFrame *data);
@@ -629,6 +643,8 @@ private:
        int light1, light2, medium, dark1, dark2, bg_color;
 // Type of window defined above
        int window_type;
+// keypress/pointer active grab
+       BC_WindowBase *active_grab, *grab_active;
 // Pointer to the active menubar in the window.
        BC_MenuBar* active_menubar;
 // pointer to the active popup menu in the window
@@ -818,6 +834,7 @@ private:
        Cursor downright_resize_cursor;
        Cursor hourglass_cursor;
        Cursor transparent_cursor;
+       Cursor grabbed_cursor;
 
        int xvideo_port_id;
        ArrayList<BC_ResizeCall*> resize_history;