process pending wx events before sending idle events
[wxWidgets.git] / include / wx / gtk / app.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/gtk/app.h
3 // Purpose:
4 // Author: Robert Roebling
5 // Id: $Id$
6 // Copyright: (c) 1998 Robert Roebling, Julian Smart
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
9
10 #ifndef _WX_GTK_APP_H_
11 #define _WX_GTK_APP_H_
12
13 //-----------------------------------------------------------------------------
14 // classes
15 //-----------------------------------------------------------------------------
16
17 #if wxUSE_THREADS
18 class WXDLLIMPEXP_BASE wxMutex;
19 #endif
20
21 //-----------------------------------------------------------------------------
22 // wxApp
23 //-----------------------------------------------------------------------------
24
25 class WXDLLIMPEXP_CORE wxApp: public wxAppBase
26 {
27 public:
28 wxApp();
29 virtual ~wxApp();
30
31 /* override for altering the way wxGTK intializes the GUI
32 * (palette/visual/colorcube). under wxMSW, OnInitGui() does nothing by
33 * default. when overriding this method, the code in it is likely to be
34 * platform dependent, otherwise use OnInit(). */
35 virtual bool OnInitGui();
36
37 // override base class (pure) virtuals
38 virtual bool Yield(bool onlyIfNeeded = FALSE);
39 virtual void WakeUpIdle();
40
41 virtual bool Initialize(int& argc, wxChar **argv);
42 virtual void CleanUp();
43
44 #ifdef __WXDEBUG__
45 virtual void OnAssertFailure(const wxChar *file,
46 int line,
47 const wxChar *func,
48 const wxChar *cond,
49 const wxChar *msg);
50 #endif // __WXDEBUG__
51
52 // GTK-specific methods
53 // -------------------
54
55 // this can be overridden to return a specific visual to be used for GTK+
56 // instead of the default one (it's used by wxGLApp)
57 //
58 // must return XVisualInfo pointer (it is not freed by caller)
59 virtual void *GetXVisualInfo() { return NULL; }
60
61
62 // implementation only from now on
63 // -------------------------------
64
65 // This returns the current visual: either that used by wxRootWindow
66 // or the XVisualInfo* for SGI.
67 GdkVisual *GetGdkVisual();
68
69 // check for pending events, without interference from our idle source
70 bool EventsPending();
71 bool DoIdle();
72
73 private:
74 // true if we're inside an assert modal dialog
75 #ifdef __WXDEBUG__
76 bool m_isInAssert;
77 #endif // __WXDEBUG__
78 #if wxUSE_THREADS
79 wxMutex* m_idleMutex;
80 #endif
81 guint m_idleSourceId;
82
83 DECLARE_DYNAMIC_CLASS(wxApp)
84 };
85
86 #endif // _WX_GTK_APP_H_