#ifndef BCWINDOWBASE_H
#define BCWINDOWBASE_H
-#if defined(HAVE_CONFIG_H)
-#include "config.h"
-#endif
-
-//#define HAVE_LIBXXF86VM
-
// Window types
#define MAIN_WINDOW 0
#define SUB_WINDOW 1
#include "bctimer.inc"
#include "bctitle.inc"
#include "bctoggle.inc"
+#include "bctrace.inc"
#include "bctumble.inc"
#include "bcwindow.inc"
#include "bcwindowbase.inc"
// Windows, subwindows, popupwindows inherit from this
-class BC_WindowBase
+class BC_WindowBase : public trace_info
{
public:
BC_WindowBase(int opts=0);
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; }
// Wait until event loop is running
void init_wait();
int is_running() { return window_running; }
+ int is_hidden() { return hidden; }
// Check if a hardware accelerated colormodel is available and reserve it
int accel_available(int color_model, int lock_it);
void get_input_context();
// 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_root_coordinates(int x, int y, int *abs_x, int *abs_y);
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);
// 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
void slide_right(int distance);
void slide_up(int distance);
void slide_down(int distance);
+ void flicker(int n=3, int ms=66);
int cycle_textboxes(int amount);
int trigger_tooltip();
int untrigger_tooltip();
void draw_tooltip();
- int arm_repeat(int64_t duration);
+ static XEvent *new_xevent();
// delete all repeater opjects for a close
int unset_all_repeaters();
int get_event_count();
// Put event in common events.
void put_event(XEvent *event);
+// remove events queued for win
+ void dequeue_events(Window win);
// Recursive event dispatchers
int dispatch_resize_event(int w, int h);
+ int dispatch_flash();
int dispatch_focus_in();
int dispatch_focus_out();
int dispatch_motion_event();
int dispatch_expose_event();
// Get the port ID for a color model or return -1 for failure
- int grab_port_id(BC_WindowBase *window, int color_model);
+ int grab_port_id(int color_model);
int find_next_textbox(BC_WindowBase **first_textbox, BC_WindowBase **next_textbox, int &result);
int find_prev_textbox(BC_WindowBase **last_textbox, BC_WindowBase **prev_textbox, int &result);
+ void xft_draw_string(XftColor *xft_color, XftFont *xft_font, int x, int y,
+ const FcChar32 *fc, int len, BC_Pixmap *pixmap=0);
void translate_coordinates(Window src_w, Window dest_w,
int src_x, int src_y, int *dest_x_return, int *dest_y_return);
int light1, light2, medium, dark1, dark2, bg_color;
// Type of window defined above
int window_type;
+// keypress/pointer active grab
+ BC_WindowBase* active_grab;
// Pointer to the active menubar in the window.
BC_MenuBar* active_menubar;
// pointer to the active popup menu in the window
#ifndef SINGLE_THREAD
// Array of repeaters for multiple repeating objects.
ArrayList<BC_Repeater*> repeaters;
+ int arm_repeat(int64_t duration);
#endif
// Text for tooltip if one exists
const char *tooltip_text;
// If this subwindow has already shown a tooltip since the last EnterNotify
int tooltip_done;
int options;
-
+ int flash_enabled;
// Font sets
// Depth given by the X Server
int default_depth;
Atom DelWinXAtom;
+ Atom DestroyAtom;
Atom ProtoXAtom;
Atom RepeaterXAtom;
Atom SetDoneXAtom;