projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add support for auto-orientable toolbars to AUI.
[wxWidgets.git]
/
src
/
gtk1
/
window.cpp
diff --git
a/src/gtk1/window.cpp
b/src/gtk1/window.cpp
index eb6d484896cade8008974a31eabd9f0f23359a26..2618e11b8c69eee42ec3e6dee37fa58df1bd70bc 100644
(file)
--- a/
src/gtk1/window.cpp
+++ b/
src/gtk1/window.cpp
@@
-49,7
+49,7
@@
#include "wx/fontutil.h"
#include "wx/fontutil.h"
-#if
def __WXDEBUG__
+#if
wxDEBUG_LEVEL
#include "wx/thread.h"
#endif
#include "wx/thread.h"
#endif
@@
-207,19
+207,19
@@
static GdkGC *g_eraseGC = NULL;
// mouse capture state: the window which has it and if the mouse is currently
// inside it
// mouse capture state: the window which has it and if the mouse is currently
// inside it
-static wxWindowGTK *g_captureWindow =
(wxWindowGTK*)
NULL;
+static wxWindowGTK *g_captureWindow = NULL;
static bool g_captureWindowHasMouse = false;
static bool g_captureWindowHasMouse = false;
-wxWindowGTK *g_focusWindow =
(wxWindowGTK*)
NULL;
+wxWindowGTK *g_focusWindow = NULL;
// the last window which had the focus - this is normally never NULL (except
// if we never had focus at all) as even when g_focusWindow is NULL it still
// keeps its previous value
// the last window which had the focus - this is normally never NULL (except
// if we never had focus at all) as even when g_focusWindow is NULL it still
// keeps its previous value
-wxWindowGTK *g_focusWindowLast =
(wxWindowGTK*)
NULL;
+wxWindowGTK *g_focusWindowLast = NULL;
// If a window get the focus set but has not been realized
// yet, defer setting the focus to idle time.
// If a window get the focus set but has not been realized
// yet, defer setting the focus to idle time.
-wxWindowGTK *g_delayedFocus =
(wxWindowGTK*)
NULL;
+wxWindowGTK *g_delayedFocus = NULL;
// hack: we need something to pass to gtk_menu_popup, so we store the time of
// the last click here (extern: used from gtk/menu.cpp)
// hack: we need something to pass to gtk_menu_popup, so we store the time of
// the last click here (extern: used from gtk/menu.cpp)
@@
-227,7
+227,7
@@
guint32 wxGtkTimeLastClick = 0;
// global variables because GTK+ DnD want to have the
// mouse event that caused it
// global variables because GTK+ DnD want to have the
// mouse event that caused it
-GdkEvent *g_lastMouseEvent =
(GdkEvent*)
NULL;
+GdkEvent *g_lastMouseEvent = NULL;
int g_lastButtonNumber = 0;
extern bool g_mainThreadLocked;
int g_lastButtonNumber = 0;
extern bool g_mainThreadLocked;
@@
-236,19
+236,16
@@
extern bool g_mainThreadLocked;
// debug
//-----------------------------------------------------------------------------
// debug
//-----------------------------------------------------------------------------
-#ifdef __WXDEBUG__
-
#if wxUSE_THREADS
#if wxUSE_THREADS
-# define DEBUG_MAIN_THREAD if (wxThread::IsMain() && g_mainThreadLocked) printf("gui reentrance");
+# define DEBUG_MAIN_THREAD \
+ wxASSERT_MSG( !g_mainThreadLocked || !wxThread::IsMain(), \
+ "GUI reentrancy detected" );
#else
# define DEBUG_MAIN_THREAD
#endif
#else
# define DEBUG_MAIN_THREAD
#endif
-#else
-#define DEBUG_MAIN_THREAD
-#endif // Debug
// the trace mask used for the focus debugging messages
// the trace mask used for the focus debugging messages
-#define TRACE_FOCUS
_
T("focus")
+#define TRACE_FOCUS
wx
T("focus")
//-----------------------------------------------------------------------------
// missing gdk functions
//-----------------------------------------------------------------------------
// missing gdk functions
@@
-294,7
+291,7
@@
wxWindow *wxFindFocusedChild(wxWindowGTK *win)
{
wxWindow *winFocus = wxWindowGTK::FindFocus();
if ( !winFocus )
{
wxWindow *winFocus = wxWindowGTK::FindFocus();
if ( !winFocus )
- return
(wxWindow *)
NULL;
+ return NULL;
if ( winFocus == win )
return (wxWindow *)win;
if ( winFocus == win )
return (wxWindow *)win;
@@
-308,7
+305,7
@@
wxWindow *wxFindFocusedChild(wxWindowGTK *win)
return child;
}
return child;
}
- return
(wxWindow *)
NULL;
+ return NULL;
}
static void draw_frame( GtkWidget *widget, wxWindowGTK *win )
}
static void draw_frame( GtkWidget *widget, wxWindowGTK *win )
@@
-371,7
+368,7
@@
static void draw_frame( GtkWidget *widget, wxWindowGTK *win )
return;
}
return;
}
- if (win->HasFlag(wxSUNKEN_BORDER))
+ if (win->HasFlag(wxSUNKEN_BORDER)
|| win->HasFlag(wxBORDER_THEME)
)
{
gtk_draw_shadow( widget->style,
widget->window,
{
gtk_draw_shadow( widget->style,
widget->window,
@@
-428,7
+425,7
@@
static void gtk_window_own_draw_callback( GtkWidget *widget, GdkRectangle *WXUNU
// make it extern because wxStaticText needs to disconnect this one
extern "C" {
// make it extern because wxStaticText needs to disconnect this one
extern "C" {
-void wxgtk_window_size_request_callback(GtkWidget *
widget
,
+void wxgtk_window_size_request_callback(GtkWidget *
WXUNUSED(widget)
,
GtkRequisition *requisition,
wxWindow *win)
{
GtkRequisition *requisition,
wxWindow *win)
{
@@
-446,7
+443,7
@@
void wxgtk_window_size_request_callback(GtkWidget *widget,
extern "C" {
static
extern "C" {
static
-void wxgtk_combo_size_request_callback(GtkWidget *
widget
,
+void wxgtk_combo_size_request_callback(GtkWidget *
WXUNUSED(widget)
,
GtkRequisition *requisition,
wxComboBox *win)
{
GtkRequisition *requisition,
wxComboBox *win)
{
@@
-478,7
+475,7
@@
void wxgtk_combo_size_request_callback(GtkWidget *widget,
//-----------------------------------------------------------------------------
extern "C" {
//-----------------------------------------------------------------------------
extern "C" {
-static int gtk_window_expose_callback( GtkWidget *
widget
,
+static int gtk_window_expose_callback( GtkWidget *
WXUNUSED(widget)
,
GdkEventExpose *gdk_event,
wxWindow *win )
{
GdkEventExpose *gdk_event,
wxWindow *win )
{
@@
-611,7
+608,7
@@
static void gtk_window_draw_callback( GtkWidget *widget,
GdkRectangle child_area;
if (gtk_widget_intersect (child->widget, rect, &child_area))
{
GdkRectangle child_area;
if (gtk_widget_intersect (child->widget, rect, &child_area))
{
- gtk_widget_draw (child->widget, &child_area /*
(GdkRectangle*)
NULL*/ );
+ gtk_widget_draw (child->widget, &child_area /* NULL*/ );
}
}
#endif
}
}
#endif
@@
-623,7
+620,7
@@
static void gtk_window_draw_callback( GtkWidget *widget,
//-----------------------------------------------------------------------------
// set WXTRACE to this to see the key event codes on the console
//-----------------------------------------------------------------------------
// set WXTRACE to this to see the key event codes on the console
-#define TRACE_KEYS
_
T("keyevent")
+#define TRACE_KEYS
wx
T("keyevent")
// translates an X key symbol to WXK_XXX value
//
// translates an X key symbol to WXK_XXX value
//
@@
-923,11
+920,13
@@
static void wxFillOtherKeyEventFields(wxKeyEvent& event,
event.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK) != 0;
event.m_altDown = (gdk_event->state & GDK_MOD1_MASK) != 0;
event.m_metaDown = (gdk_event->state & GDK_MOD2_MASK) != 0;
event.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK) != 0;
event.m_altDown = (gdk_event->state & GDK_MOD1_MASK) != 0;
event.m_metaDown = (gdk_event->state & GDK_MOD2_MASK) != 0;
- event.m_scanCode = gdk_event->keyval;
event.m_rawCode = (wxUint32) gdk_event->keyval;
event.m_rawFlags = 0;
#if wxUSE_UNICODE
event.m_rawCode = (wxUint32) gdk_event->keyval;
event.m_rawFlags = 0;
#if wxUSE_UNICODE
- event.m_uniChar = gdk_keyval_to_unicode(gdk_event->keyval);
+#if 0
+ // this is not gtk1.x
+ event.m_uniChar = gdk_keyval_to_unicode(gdk_event->keyval);
+#endif
#endif
wxGetMousePosition( &x, &y );
win->ScreenToClient( &x, &y );
#endif
wxGetMousePosition( &x, &y );
win->ScreenToClient( &x, &y );
@@
-955,9
+954,9
@@
wxTranslateGTKKeyEventToWx(wxKeyEvent& event,
KeySym keysym = gdk_event->keyval;
KeySym keysym = gdk_event->keyval;
- wxLogTrace(TRACE_KEYS,
_
T("Key %s event: keysym = %ld"),
- event.GetEventType() == wxEVT_KEY_UP ?
_
T("release")
- :
_
T("press"),
+ wxLogTrace(TRACE_KEYS,
wx
T("Key %s event: keysym = %ld"),
+ event.GetEventType() == wxEVT_KEY_UP ?
wx
T("release")
+ :
wx
T("press"),
keysym);
long key_code = wxTranslateKeySymToWXKey(keysym, false /* !isChar */);
keysym);
long key_code = wxTranslateKeySymToWXKey(keysym, false /* !isChar */);
@@
-986,7
+985,7
@@
wxTranslateGTKKeyEventToWx(wxKeyEvent& event,
Display *dpy = (Display *)wxGetDisplay();
KeyCode keycode = XKeysymToKeycode(dpy, keysym);
Display *dpy = (Display *)wxGetDisplay();
KeyCode keycode = XKeysymToKeycode(dpy, keysym);
- wxLogTrace(TRACE_KEYS,
_
T("\t-> keycode %d"), keycode);
+ wxLogTrace(TRACE_KEYS,
wx
T("\t-> keycode %d"), keycode);
KeySym keysymNormalized = XKeycodeToKeysym(dpy, keycode, 0);
KeySym keysymNormalized = XKeycodeToKeysym(dpy, keycode, 0);
@@
-1025,7
+1024,7
@@
wxTranslateGTKKeyEventToWx(wxKeyEvent& event,
}
}
}
}
- wxLogTrace(TRACE_KEYS,
_
T("\t-> wxKeyCode %ld"), key_code);
+ wxLogTrace(TRACE_KEYS,
wx
T("\t-> wxKeyCode %ld"), key_code);
// sending unknown key events doesn't really make sense
if ( !key_code )
// sending unknown key events doesn't really make sense
if ( !key_code )
@@
-1063,7
+1062,7
@@
static gint gtk_window_key_press_callback( GtkWidget *widget,
if ( wxTranslateGTKKeyEventToWx(event, win, gdk_event) )
{
// Emit KEY_DOWN event
if ( wxTranslateGTKKeyEventToWx(event, win, gdk_event) )
{
// Emit KEY_DOWN event
- ret = win->
GetEventHandler()->Process
Event( event );
+ ret = win->
HandleWindow
Event( event );
}
else
{
}
else
{
@@
-1119,12
+1118,12
@@
static gint gtk_window_key_press_callback( GtkWidget *widget,
if (parent)
{
event.SetEventType( wxEVT_CHAR_HOOK );
if (parent)
{
event.SetEventType( wxEVT_CHAR_HOOK );
- ret = parent->
GetEventHandler()->Process
Event( event );
+ ret = parent->
HandleWindow
Event( event );
}
if (!ret)
{
event.SetEventType(wxEVT_CHAR);
}
if (!ret)
{
event.SetEventType(wxEVT_CHAR);
- win->
GetEventHandler()->Process
Event( event );
+ win->
HandleWindow
Event( event );
}
}
return true;
}
}
return true;
@@
-1143,7
+1142,7
@@
static gint gtk_window_key_press_callback( GtkWidget *widget,
if (command != -1)
{
wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command );
if (command != -1)
{
wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command );
- ret = ancestor->
GetEventHandler()->Process
Event( command_event );
+ ret = ancestor->
HandleWindow
Event( command_event );
break;
}
if (ancestor->IsTopLevel())
break;
}
if (ancestor->IsTopLevel())
@@
-1177,7
+1176,7
@@
static gint gtk_window_key_press_callback( GtkWidget *widget,
if ( key_code )
{
if ( key_code )
{
- wxLogTrace(TRACE_KEYS,
_
T("Char event: %ld"), key_code);
+ wxLogTrace(TRACE_KEYS,
wx
T("Char event: %ld"), key_code);
event.m_keyCode = key_code;
event.m_keyCode = key_code;
@@
-1188,13
+1187,13
@@
static gint gtk_window_key_press_callback( GtkWidget *widget,
if (parent)
{
event.SetEventType( wxEVT_CHAR_HOOK );
if (parent)
{
event.SetEventType( wxEVT_CHAR_HOOK );
- ret = parent->
GetEventHandler()->Process
Event( event );
+ ret = parent->
HandleWindow
Event( event );
}
if (!ret)
{
event.SetEventType(wxEVT_CHAR);
}
if (!ret)
{
event.SetEventType(wxEVT_CHAR);
- ret = win->
GetEventHandler()->Process
Event( event );
+ ret = win->
HandleWindow
Event( event );
}
}
}
}
}
}
@@
-1224,7
+1223,7
@@
static gint gtk_window_key_press_callback( GtkWidget *widget,
// CTRL-TAB changes the (parent) window, i.e. switch notebook page
new_event.SetWindowChange( (gdk_event->state & GDK_CONTROL_MASK) );
new_event.SetCurrentFocus( win );
// CTRL-TAB changes the (parent) window, i.e. switch notebook page
new_event.SetWindowChange( (gdk_event->state & GDK_CONTROL_MASK) );
new_event.SetCurrentFocus( win );
- ret = win->GetParent()->
GetEventHandler()->Process
Event( new_event );
+ ret = win->GetParent()->
HandleWindow
Event( new_event );
}
// generate wxID_CANCEL if <esc> has been pressed (typically in dialogs)
}
// generate wxID_CANCEL if <esc> has been pressed (typically in dialogs)
@@
-1260,7
+1259,7
@@
static gint gtk_window_key_press_callback( GtkWidget *widget,
{
wxCommandEvent eventClick(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL);
eventClick.SetEventObject(btnCancel);
{
wxCommandEvent eventClick(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL);
eventClick.SetEventObject(btnCancel);
- ret = btnCancel->
GetEventHandler()->Process
Event(eventClick);
+ ret = btnCancel->
HandleWindow
Event(eventClick);
}
}
}
}
@@
-1301,7
+1300,7
@@
static gint gtk_window_key_release_callback( GtkWidget *widget,
return FALSE;
}
return FALSE;
}
- if ( !win->
GetEventHandler()->Process
Event( event ) )
+ if ( !win->
HandleWindow
Event( event ) )
return FALSE;
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_release_event" );
return FALSE;
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_release_event" );
@@
-1430,7
+1429,7
@@
wxWindowGTK *FindWindowForMouseEvent(wxWindowGTK *win, wxCoord& x, wxCoord& y)
}
else
{
}
else
{
- if ((child->m_wxwindow ==
(GtkWidget*)
NULL) &&
+ if ((child->m_wxwindow == NULL) &&
(child->m_x <= xx) &&
(child->m_y <= yy) &&
(child->m_x+child->m_width >= xx) &&
(child->m_x <= xx) &&
(child->m_y <= yy) &&
(child->m_x+child->m_width >= xx) &&
@@
-1475,7
+1474,7
@@
static gint gtk_window_button_press_callback( GtkWidget *widget,
g_lastButtonNumber = gdk_event->button;
g_lastButtonNumber = gdk_event->button;
- if (win->m_wxwindow && (g_focusWindow != win) && win->
CanAcceptFocus
())
+ if (win->m_wxwindow && (g_focusWindow != win) && win->
IsFocusable
())
{
gtk_widget_grab_focus( win->m_wxwindow );
/*
{
gtk_widget_grab_focus( win->m_wxwindow );
/*
@@
-1583,7
+1582,7
@@
static gint gtk_window_button_press_callback( GtkWidget *widget,
}
g_lastMouseEvent = (GdkEvent*) gdk_event;
}
g_lastMouseEvent = (GdkEvent*) gdk_event;
-
+
wxMouseEvent event( event_type );
InitMouseEvent( win, event, gdk_event );
wxMouseEvent event( event_type );
InitMouseEvent( win, event, gdk_event );
@@
-1613,7
+1612,7
@@
static gint gtk_window_button_press_callback( GtkWidget *widget,
}
}
}
}
- if (win->
GetEventHandler()->Process
Event( event ))
+ if (win->
HandleWindow
Event( event ))
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "button_press_event" );
g_lastMouseEvent = NULL;
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "button_press_event" );
g_lastMouseEvent = NULL;
@@
-1635,7
+1634,7
@@
static gint gtk_window_button_press_callback( GtkWidget *widget,
win->GetId(),
win->ClientToScreen(event.GetPosition()));
evtCtx.SetEventObject(win);
win->GetId(),
win->ClientToScreen(event.GetPosition()));
evtCtx.SetEventObject(win);
- return win->
GetEventHandler()->Process
Event(evtCtx);
+ return win->
HandleWindow
Event(evtCtx);
}
return FALSE;
}
return FALSE;
@@
-1686,7
+1685,7
@@
static gint gtk_window_button_release_callback( GtkWidget *widget,
}
g_lastMouseEvent = (GdkEvent*) gdk_event;
}
g_lastMouseEvent = (GdkEvent*) gdk_event;
-
+
wxMouseEvent event( event_type );
InitMouseEvent( win, event, gdk_event );
wxMouseEvent event( event_type );
InitMouseEvent( win, event, gdk_event );
@@
-1698,7
+1697,7
@@
static gint gtk_window_button_release_callback( GtkWidget *widget,
if ( !g_captureWindow )
win = FindWindowForMouseEvent(win, event.m_x, event.m_y);
if ( !g_captureWindow )
win = FindWindowForMouseEvent(win, event.m_x, event.m_y);
- if (win->
GetEventHandler()->Process
Event( event ))
+ if (win->
HandleWindow
Event( event ))
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "button_release_event" );
return TRUE;
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "button_release_event" );
return TRUE;
@@
-1768,7
+1767,7
@@
static gint gtk_window_motion_notify_callback( GtkWidget *widget,
: wxEVT_LEAVE_WINDOW);
InitMouseEvent(win, eventM, gdk_event);
eventM.SetEventObject(win);
: wxEVT_LEAVE_WINDOW);
InitMouseEvent(win, eventM, gdk_event);
eventM.SetEventObject(win);
- win->
GetEventHandler()->Process
Event(eventM);
+ win->
HandleWindow
Event(eventM);
}
}
else // no capture
}
}
else // no capture
@@
-1776,7
+1775,7
@@
static gint gtk_window_motion_notify_callback( GtkWidget *widget,
win = FindWindowForMouseEvent(win, event.m_x, event.m_y);
}
win = FindWindowForMouseEvent(win, event.m_x, event.m_y);
}
- bool ret = win->
GetEventHandler()->Process
Event( event );
+ bool ret = win->
HandleWindow
Event( event );
g_lastMouseEvent = NULL;
if ( ret )
g_lastMouseEvent = NULL;
if ( ret )
@@
-1799,12
+1798,12
@@
static bool DoSendFocusEvents(wxWindow *win)
// Notify the parent keeping track of focus for the kbd navigation
// purposes that we got it.
wxChildFocusEvent eventChildFocus(win);
// Notify the parent keeping track of focus for the kbd navigation
// purposes that we got it.
wxChildFocusEvent eventChildFocus(win);
- (void)win->
GetEventHandler()->Process
Event(eventChildFocus);
+ (void)win->
HandleWindow
Event(eventChildFocus);
wxFocusEvent eventFocus(wxEVT_SET_FOCUS, win->GetId());
eventFocus.SetEventObject(win);
wxFocusEvent eventFocus(wxEVT_SET_FOCUS, win->GetId());
eventFocus.SetEventObject(win);
- return win->
GetEventHandler()->Process
Event(eventFocus);
+ return win->
HandleWindow
Event(eventFocus);
}
extern "C" {
}
extern "C" {
@@
-1821,7
+1820,7
@@
static gint gtk_window_focus_in_callback( GtkWidget *widget,
g_focusWindow = win;
wxLogTrace(TRACE_FOCUS,
g_focusWindow = win;
wxLogTrace(TRACE_FOCUS,
-
_
T("%s: focus in"), win->GetName().c_str());
+
wx
T("%s: focus in"), win->GetName().c_str());
#ifdef HAVE_XIM
if (win->m_ic)
#ifdef HAVE_XIM
if (win->m_ic)
@@
-1859,7
+1858,9
@@
static gint gtk_window_focus_in_callback( GtkWidget *widget,
//-----------------------------------------------------------------------------
extern "C" {
//-----------------------------------------------------------------------------
extern "C" {
-static gint gtk_window_focus_out_callback( GtkWidget *widget, GdkEventFocus *gdk_event, wxWindowGTK *win )
+static gint gtk_window_focus_out_callback( GtkWidget *WXUNUSED(widget),
+ GdkEventFocus *WXUNUSED(gdk_event),
+ wxWindowGTK *win )
{
DEBUG_MAIN_THREAD
{
DEBUG_MAIN_THREAD
@@
-1867,14
+1868,14
@@
static gint gtk_window_focus_out_callback( GtkWidget *widget, GdkEventFocus *gdk
wxapp_install_idle_handler();
wxLogTrace( TRACE_FOCUS,
wxapp_install_idle_handler();
wxLogTrace( TRACE_FOCUS,
-
_
T("%s: focus out"), win->GetName().c_str() );
+
wx
T("%s: focus out"), win->GetName().c_str() );
wxWindowGTK *winFocus = wxFindFocusedChild(win);
if ( winFocus )
win = winFocus;
wxWindowGTK *winFocus = wxFindFocusedChild(win);
if ( winFocus )
win = winFocus;
- g_focusWindow =
(wxWindowGTK *)
NULL;
+ g_focusWindow = NULL;
#ifdef HAVE_XIM
if (win->m_ic)
#ifdef HAVE_XIM
if (win->m_ic)
@@
-1903,7
+1904,7
@@
static gint gtk_window_focus_out_callback( GtkWidget *widget, GdkEventFocus *gdk
// process it too as otherwise bad things happen, especially in GTK2
// where the text control simply aborts the program if it doesn't get
// the matching focus out event
// process it too as otherwise bad things happen, especially in GTK2
// where the text control simply aborts the program if it doesn't get
// the matching focus out event
- (void)win->
GetEventHandler()->Process
Event( event );
+ (void)win->
HandleWindow
Event( event );
}
return FALSE;
}
return FALSE;
@@
-1945,7
+1946,7
@@
gint gtk_window_enter_callback( GtkWidget *widget,
event.m_x = x + pt.x;
event.m_y = y + pt.y;
event.m_x = x + pt.x;
event.m_y = y + pt.y;
- if (win->
GetEventHandler()->Process
Event( event ))
+ if (win->
HandleWindow
Event( event ))
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "enter_notify_event" );
return TRUE;
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "enter_notify_event" );
return TRUE;
@@
-1997,7
+1998,7
@@
static gint gtk_window_leave_callback( GtkWidget *widget, GdkEventCrossing *gdk_
event.m_x = x + pt.x;
event.m_y = y + pt.y;
event.m_x = x + pt.x;
event.m_y = y + pt.y;
- if (win->
GetEventHandler()->Process
Event( event ))
+ if (win->
HandleWindow
Event( event ))
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "leave_notify_event" );
return TRUE;
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "leave_notify_event" );
return TRUE;
@@
-2037,7
+2038,7
@@
static void gtk_window_vscroll_callback( GtkAdjustment *adjust,
wxScrollWinEvent event( command, value, wxVERTICAL );
event.SetEventObject( win );
wxScrollWinEvent event( command, value, wxVERTICAL );
event.SetEventObject( win );
- win->
GetEventHandler()->Process
Event( event );
+ win->
HandleWindow
Event( event );
}
}
}
}
@@
-2070,7
+2071,7
@@
static void gtk_window_hscroll_callback( GtkAdjustment *adjust,
wxScrollWinEvent event( command, value, wxHORIZONTAL );
event.SetEventObject( win );
wxScrollWinEvent event( command, value, wxHORIZONTAL );
event.SetEventObject( win );
- win->
GetEventHandler()->Process
Event( event );
+ win->
HandleWindow
Event( event );
}
}
}
}
@@
-2136,7
+2137,7
@@
static gint gtk_scrollbar_button_release_callback( GtkRange *widget,
wxScrollWinEvent event( command, value, dir );
event.SetEventObject( win );
wxScrollWinEvent event( command, value, dir );
event.SetEventObject( win );
- win->
GetEventHandler()->Process
Event( event );
+ win->
HandleWindow
Event( event );
}
win->m_isScrolling = false;
}
win->m_isScrolling = false;
@@
-2165,7
+2166,7
@@
wxWindow *wxWindowBase::DoFindFocus()
extern "C" {
static gint
extern "C" {
static gint
-gtk_window_realized_callback( GtkWidget *
m_widget
, wxWindow *win )
+gtk_window_realized_callback( GtkWidget *
WXUNUSED(widget)
, wxWindow *win )
{
DEBUG_MAIN_THREAD
{
DEBUG_MAIN_THREAD
@@
-2174,7
+2175,7
@@
gtk_window_realized_callback( GtkWidget *m_widget, wxWindow *win )
wxWindowCreateEvent event( win );
event.SetEventObject( win );
wxWindowCreateEvent event( win );
event.SetEventObject( win );
- win->
GetEventHandler()->Process
Event( event );
+ win->
HandleWindow
Event( event );
return FALSE;
}
return FALSE;
}
@@
-2208,7
+2209,7
@@
void gtk_window_size_callback( GtkWidget *WXUNUSED(widget),
{
wxSizeEvent event( win->GetSize(), win->GetId() );
event.SetEventObject( win );
{
wxSizeEvent event( win->GetSize(), win->GetId() );
event.SetEventObject( win );
- win->
GetEventHandler()->Process
Event( event );
+ win->
HandleWindow
Event( event );
}
}
}
}
}
}
@@
-2225,7
+2226,7
@@
void gtk_window_size_callback( GtkWidget *WXUNUSED(widget),
extern "C" {
static
void gtk_wxwindow_size_callback( GtkWidget* WXUNUSED_UNLESS_XIM(widget),
extern "C" {
static
void gtk_wxwindow_size_callback( GtkWidget* WXUNUSED_UNLESS_XIM(widget),
- GtkAllocation* WXUNUSED
_UNLESS_XIM
(alloc),
+ GtkAllocation* WXUNUSED(alloc),
wxWindowGTK* WXUNUSED_UNLESS_XIM(win) )
{
if (g_isIdle)
wxWindowGTK* WXUNUSED_UNLESS_XIM(win) )
{
if (g_isIdle)
@@
-2419,9
+2420,9
@@
wxMouseState wxGetMouseState()
void wxWindowGTK::Init()
{
// GTK specific
void wxWindowGTK::Init()
{
// GTK specific
- m_widget =
(GtkWidget *)
NULL;
- m_wxwindow =
(GtkWidget *)
NULL;
- m_focusWidget =
(GtkWidget *)
NULL;
+ m_widget = NULL;
+ m_wxwindow = NULL;
+ m_focusWidget = NULL;
// position/size
m_x = 0;
// position/size
m_x = 0;
@@
-2432,7
+2433,6
@@
void wxWindowGTK::Init()
m_sizeSet = false;
m_hasVMT = false;
m_needParent = true;
m_sizeSet = false;
m_hasVMT = false;
m_needParent = true;
- m_isBeingDeleted = false;
m_noExpose = false;
m_nativeSizeEvent = false;
m_noExpose = false;
m_nativeSizeEvent = false;
@@
-2440,8
+2440,8
@@
void wxWindowGTK::Init()
m_hasScrolling = false;
m_isScrolling = false;
m_hasScrolling = false;
m_isScrolling = false;
- m_hAdjust =
(GtkAdjustment*)
NULL;
- m_vAdjust =
(GtkAdjustment*)
NULL;
+ m_hAdjust = NULL;
+ m_vAdjust = NULL;
m_oldHorizontalPos =
m_oldVerticalPos = 0.0;
m_oldClientWidth =
m_oldHorizontalPos =
m_oldVerticalPos = 0.0;
m_oldClientWidth =
@@
-2461,8
+2461,8
@@
void wxWindowGTK::Init()
m_cursor = *wxSTANDARD_CURSOR;
#ifdef HAVE_XIM
m_cursor = *wxSTANDARD_CURSOR;
#ifdef HAVE_XIM
- m_ic =
(GdkIC*)
NULL;
- m_icattr =
(GdkICAttr*)
NULL;
+ m_ic = NULL;
+ m_icattr = NULL;
#endif
}
#endif
}
@@
-2490,6
+2490,11
@@
bool wxWindowGTK::Create( wxWindow *parent,
long style,
const wxString &name )
{
long style,
const wxString &name )
{
+ // Get default border
+ wxBorder border = GetBorder(style);
+ style &= ~wxBORDER_MASK;
+ style |= border;
+
if (!PreCreation( parent, pos, size ) ||
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
{
if (!PreCreation( parent, pos, size ) ||
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
{
@@
-2499,7
+2504,7
@@
bool wxWindowGTK::Create( wxWindow *parent,
m_insertCallback = wxInsertChildInWindow;
m_insertCallback = wxInsertChildInWindow;
- m_widget = gtk_scrolled_window_new(
(GtkAdjustment *) NULL, (GtkAdjustment *)
NULL );
+ m_widget = gtk_scrolled_window_new(
NULL,
NULL );
GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(m_widget);
GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(m_widget);
@@
-2521,7
+2526,7
@@
bool wxWindowGTK::Create( wxWindow *parent,
{
gtk_pizza_set_shadow_type( pizza, GTK_MYSHADOW_OUT );
}
{
gtk_pizza_set_shadow_type( pizza, GTK_MYSHADOW_OUT );
}
- else if (HasFlag(wxSUNKEN_BORDER))
+ else if (HasFlag(wxSUNKEN_BORDER)
|| HasFlag(wxBORDER_THEME)
)
{
gtk_pizza_set_shadow_type( pizza, GTK_MYSHADOW_IN );
}
{
gtk_pizza_set_shadow_type( pizza, GTK_MYSHADOW_IN );
}
@@
-2603,7
+2608,6
@@
wxWindowGTK::~wxWindowGTK()
if ( g_delayedFocus == this )
g_delayedFocus = NULL;
if ( g_delayedFocus == this )
g_delayedFocus = NULL;
- m_isBeingDeleted = true;
m_hasVMT = false;
// destroy children before destroying this window itself
m_hasVMT = false;
// destroy children before destroying this window itself
@@
-2632,13
+2636,13
@@
wxWindowGTK::~wxWindowGTK()
if (m_wxwindow)
{
gtk_widget_destroy( m_wxwindow );
if (m_wxwindow)
{
gtk_widget_destroy( m_wxwindow );
- m_wxwindow =
(GtkWidget*)
NULL;
+ m_wxwindow = NULL;
}
if (m_widget)
{
gtk_widget_destroy( m_widget );
}
if (m_widget)
{
gtk_widget_destroy( m_widget );
- m_widget =
(GtkWidget*)
NULL;
+ m_widget = NULL;
}
}
}
}
@@
-2907,7
+2911,7
@@
void wxWindowGTK::DoSetSize( int x, int y, int width, int height, int sizeFlags
{
wxSizeEvent event( wxSize(m_width,m_height), GetId() );
event.SetEventObject( this );
{
wxSizeEvent event( wxSize(m_width,m_height), GetId() );
event.SetEventObject( this );
-
GetEventHandler()->Process
Event( event );
+
HandleWindow
Event( event );
}
m_resizing = false;
}
m_resizing = false;
@@
-2958,7
+2962,7
@@
void wxWindowGTK::OnInternalIdle()
}
}
}
}
- if (wxUpdateUIEvent::CanUpdate(this))
+ if (wxUpdateUIEvent::CanUpdate(this)
&& IsShownOnScreen()
)
UpdateWindowUI(wxUPDATE_UI_FROMIDLE);
}
UpdateWindowUI(wxUPDATE_UI_FROMIDLE);
}
@@
-2984,7
+2988,7
@@
void wxWindowGTK::DoSetClientSize( int width, int height )
int dh = 0;
#ifndef __WXUNIVERSAL__
int dh = 0;
#ifndef __WXUNIVERSAL__
- if (HasFlag(wxRAISED_BORDER) || HasFlag(wxSUNKEN_BORDER))
+ if (HasFlag(wxRAISED_BORDER) || HasFlag(wxSUNKEN_BORDER)
|| HasFlag(wxBORDER_THEME)
)
{
/* when using GTK 1.2 we set the shadow border size to 2 */
dw += 2 * 2;
{
/* when using GTK 1.2 we set the shadow border size to 2 */
dw += 2 * 2;
@@
-3048,7
+3052,7
@@
void wxWindowGTK::DoGetClientSize( int *width, int *height ) const
int dh = 0;
#ifndef __WXUNIVERSAL__
int dh = 0;
#ifndef __WXUNIVERSAL__
- if (HasFlag(wxRAISED_BORDER) || HasFlag(wxSUNKEN_BORDER))
+ if (HasFlag(wxRAISED_BORDER) || HasFlag(wxSUNKEN_BORDER)
|| HasFlag(wxBORDER_THEME)
)
{
/* when using GTK 1.2 we set the shadow border size to 2 */
dw += 2 * 2;
{
/* when using GTK 1.2 we set the shadow border size to 2 */
dw += 2 * 2;
@@
-3128,7
+3132,7
@@
void wxWindowGTK::DoClientToScreen( int *x, int *y ) const
if (!m_widget->window) return;
if (!m_widget->window) return;
- GdkWindow *source =
(GdkWindow *)
NULL;
+ GdkWindow *source = NULL;
if (m_wxwindow)
source = GTK_PIZZA(m_wxwindow)->bin_window;
else
if (m_wxwindow)
source = GTK_PIZZA(m_wxwindow)->bin_window;
else
@@
-3157,7
+3161,7
@@
void wxWindowGTK::DoScreenToClient( int *x, int *y ) const
if (!m_widget->window) return;
if (!m_widget->window) return;
- GdkWindow *source =
(GdkWindow *)
NULL;
+ GdkWindow *source = NULL;
if (m_wxwindow)
source = GTK_PIZZA(m_wxwindow)->bin_window;
else
if (m_wxwindow)
source = GTK_PIZZA(m_wxwindow)->bin_window;
else
@@
-3198,7
+3202,7
@@
bool wxWindowGTK::Show( bool show )
wxShowEvent eventShow(GetId(), show);
eventShow.SetEventObject(this);
wxShowEvent eventShow(GetId(), show);
eventShow.SetEventObject(this);
-
GetEventHandler()->Process
Event(eventShow);
+
HandleWindow
Event(eventShow);
return true;
}
return true;
}
@@
-3236,12
+3240,12
@@
int wxWindowGTK::GetCharWidth() const
return gdk_string_width( gfont, "g" );
}
return gdk_string_width( gfont, "g" );
}
-void wxWindowGTK::
GetTextExtent(
const wxString& string,
- int *x,
- int *y,
- int *descent,
- int *externalLeading,
-
const wxFont *theFont
) const
+void wxWindowGTK::
DoGetTextExtent(
const wxString& string,
+
int *x,
+
int *y,
+
int *descent,
+
int *externalLeading,
+
const wxFont *theFont
) const
{
wxFont fontToUse = theFont ? *theFont : GetFont();
{
wxFont fontToUse = theFont ? *theFont : GetFont();
@@
-3288,7
+3292,7
@@
void wxWindowGTK::SetFocus()
// it should be focused and will do it later, during the idle
// time, as soon as we can
wxLogTrace(TRACE_FOCUS,
// it should be focused and will do it later, during the idle
// time, as soon as we can
wxLogTrace(TRACE_FOCUS,
-
_
T("Delaying setting focus to %s(%s)"),
+
wx
T("Delaying setting focus to %s(%s)"),
GetClassInfo()->GetClassName(), GetLabel().c_str());
g_delayedFocus = this;
GetClassInfo()->GetClassName(), GetLabel().c_str());
g_delayedFocus = this;
@@
-3296,7
+3300,7
@@
void wxWindowGTK::SetFocus()
else
{
wxLogTrace(TRACE_FOCUS,
else
{
wxLogTrace(TRACE_FOCUS,
-
_
T("Setting focus to %s(%s)"),
+
wx
T("Setting focus to %s(%s)"),
GetClassInfo()->GetClassName(), GetLabel().c_str());
gtk_widget_grab_focus (m_widget);
GetClassInfo()->GetClassName(), GetLabel().c_str());
gtk_widget_grab_focus (m_widget);
@@
-3310,7
+3314,7
@@
void wxWindowGTK::SetFocus()
else
{
wxLogTrace(TRACE_FOCUS,
else
{
wxLogTrace(TRACE_FOCUS,
-
_
T("Can't set focus to %s(%s)"),
+
wx
T("Can't set focus to %s(%s)"),
GetClassInfo()->GetClassName(), GetLabel().c_str());
}
}
GetClassInfo()->GetClassName(), GetLabel().c_str());
}
}
@@
-3421,7
+3425,7
@@
void wxWindowGTK::WarpPointer( int x, int y )
// We provide this function ourselves as it is
// missing in GDK (top of this file).
// We provide this function ourselves as it is
// missing in GDK (top of this file).
- GdkWindow *window =
(GdkWindow*)
NULL;
+ GdkWindow *window = NULL;
if (m_wxwindow)
window = GTK_PIZZA(m_wxwindow)->bin_window;
else
if (m_wxwindow)
window = GTK_PIZZA(m_wxwindow)->bin_window;
else
@@
-3495,7
+3499,7
@@
void wxWindowGTK::Refresh( bool eraseBackground, const wxRect *rect )
}
else
{
}
else
{
- gtk_widget_draw( m_widget,
(GdkRectangle*)
NULL );
+ gtk_widget_draw( m_widget, NULL );
}
}
}
}
}
}
@@
-3573,20
+3577,16
@@
void wxWindowGTK::GtkSendPaintEvents()
}
}
}
}
}
}
- else
-
- // if (!m_clearRegion.IsEmpty()) // Always send an erase event under GTK 1.2
+ else // Always send an erase event under GTK 1.2
{
wxWindowDC dc( (wxWindow*)this );
{
wxWindowDC dc( (wxWindow*)this );
- if (m_clearRegion.IsEmpty())
- dc.SetClippingRegion( m_updateRegion );
- else
- dc.SetClippingRegion( m_clearRegion );
+ dc.SetDeviceClippingRegion( m_clearRegion.IsEmpty() ? m_updateRegion
+ : m_clearRegion );
wxEraseEvent erase_event( GetId(), &dc );
erase_event.SetEventObject( this );
wxEraseEvent erase_event( GetId(), &dc );
erase_event.SetEventObject( this );
- if (!
GetEventHandler()->Process
Event(erase_event) && GetBackgroundStyle() != wxBG_STYLE_CUSTOM)
+ if (!
HandleWindow
Event(erase_event) && GetBackgroundStyle() != wxBG_STYLE_CUSTOM)
{
if (!g_eraseGC)
{
{
if (!g_eraseGC)
{
@@
-3608,11
+3608,11
@@
void wxWindowGTK::GtkSendPaintEvents()
wxNcPaintEvent nc_paint_event( GetId() );
nc_paint_event.SetEventObject( this );
wxNcPaintEvent nc_paint_event( GetId() );
nc_paint_event.SetEventObject( this );
-
GetEventHandler()->Process
Event( nc_paint_event );
+
HandleWindow
Event( nc_paint_event );
wxPaintEvent paint_event( GetId() );
paint_event.SetEventObject( this );
wxPaintEvent paint_event( GetId() );
paint_event.SetEventObject( this );
-
GetEventHandler()->Process
Event( paint_event );
+
HandleWindow
Event( paint_event );
m_clipPaintRegion = false;
m_clipPaintRegion = false;
@@
-3689,7
+3689,7
@@
void wxWindowGTK::DoSetToolTip( wxToolTip *tip )
void wxWindowGTK::ApplyToolTip( GtkTooltips *tips, const wxChar *tip )
{
wxString tmp( tip );
void wxWindowGTK::ApplyToolTip( GtkTooltips *tips, const wxChar *tip )
{
wxString tmp( tip );
- gtk_tooltips_set_tip( tips, GetConnectWidget(), wxGTK_CONV(tmp),
(gchar*)
NULL );
+ gtk_tooltips_set_tip( tips, GetConnectWidget(), wxGTK_CONV(tmp), NULL );
}
#endif // wxUSE_TOOLTIPS
}
#endif // wxUSE_TOOLTIPS
@@
-3823,7
+3823,7
@@
bool wxWindowGTK::SetBackgroundStyle(wxBackgroundStyle style)
if (style == wxBG_STYLE_CUSTOM)
{
if (style == wxBG_STYLE_CUSTOM)
{
- GdkWindow *window =
(GdkWindow*)
NULL;
+ GdkWindow *window = NULL;
if (m_wxwindow)
window = GTK_PIZZA(m_wxwindow)->bin_window;
else
if (m_wxwindow)
window = GTK_PIZZA(m_wxwindow)->bin_window;
else
@@
-3907,13
+3907,13
@@
void wxWindowGTK::DoCaptureMouse()
{
wxCHECK_RET( m_widget != NULL, wxT("invalid window") );
{
wxCHECK_RET( m_widget != NULL, wxT("invalid window") );
- GdkWindow *window =
(GdkWindow*)
NULL;
+ GdkWindow *window = NULL;
if (m_wxwindow)
window = GTK_PIZZA(m_wxwindow)->bin_window;
else
window = GetConnectWidget()->window;
if (m_wxwindow)
window = GTK_PIZZA(m_wxwindow)->bin_window;
else
window = GetConnectWidget()->window;
- wxCHECK_RET( window,
_
T("CaptureMouse() failed") );
+ wxCHECK_RET( window,
wx
T("CaptureMouse() failed") );
const wxCursor* cursor = &m_cursor;
if (!cursor->Ok())
const wxCursor* cursor = &m_cursor;
if (!cursor->Ok())
@@
-3925,7
+3925,7
@@
void wxWindowGTK::DoCaptureMouse()
GDK_BUTTON_RELEASE_MASK |
GDK_POINTER_MOTION_HINT_MASK |
GDK_POINTER_MOTION_MASK),
GDK_BUTTON_RELEASE_MASK |
GDK_POINTER_MOTION_HINT_MASK |
GDK_POINTER_MOTION_MASK),
-
(GdkWindow *)
NULL,
+ NULL,
cursor->GetCursor(),
(guint32)GDK_CURRENT_TIME );
g_captureWindow = this;
cursor->GetCursor(),
(guint32)GDK_CURRENT_TIME );
g_captureWindow = this;
@@
-3938,9
+3938,9
@@
void wxWindowGTK::DoReleaseMouse()
wxCHECK_RET( g_captureWindow, wxT("can't release mouse - not captured") );
wxCHECK_RET( g_captureWindow, wxT("can't release mouse - not captured") );
- g_captureWindow =
(wxWindowGTK*)
NULL;
+ g_captureWindow = NULL;
- GdkWindow *window =
(GdkWindow*)
NULL;
+ GdkWindow *window = NULL;
if (m_wxwindow)
window = GTK_PIZZA(m_wxwindow)->bin_window;
else
if (m_wxwindow)
window = GTK_PIZZA(m_wxwindow)->bin_window;
else
@@
-4219,3
+4219,11
@@
void wxWinModule::OnExit()
if (g_eraseGC)
gdk_gc_unref( g_eraseGC );
}
if (g_eraseGC)
gdk_gc_unref( g_eraseGC );
}
+
+GdkWindow* wxWindowGTK::GTKGetDrawingWindow() const
+{
+ GdkWindow* window = NULL;
+ if (m_wxwindow)
+ window = GTK_PIZZA(m_wxwindow)->bin_window;
+ return window;
+}