X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbcwindowbase.h;h=767427dc2a7a63c45d6eaeec75b0092f083d3071;hb=72a6abf751403bd91464e77ff2cece01c9756a6b;hp=2acfe5c3b9b6006d5bbd43fd493b64702cdfdab5;hpb=f110e7626d433b4724befe0871a3a35f9f81f264;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/bcwindowbase.h b/cinelerra-5.1/guicast/bcwindowbase.h index 2acfe5c3..767427dc 100644 --- a/cinelerra-5.1/guicast/bcwindowbase.h +++ b/cinelerra-5.1/guicast/bcwindowbase.h @@ -93,6 +93,7 @@ #endif #include #ifdef HAVE_GL +#define GL_GLEXT_PROTOTYPES #include #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,10 +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_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. @@ -451,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 @@ -499,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); @@ -627,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 @@ -816,6 +834,7 @@ private: Cursor downright_resize_cursor; Cursor hourglass_cursor; Cursor transparent_cursor; + Cursor grabbed_cursor; int xvideo_port_id; ArrayList resize_history;