// Created: 06.01.01
// RCS-ID: $Id$
// Copyright: (c) 2001 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// License: wxWindows licence
+// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// ============================================================================
#ifdef __WXGTK__
#include <gtk/gtk.h>
+ #if GTK_CHECK_VERSION(2,0,0)
+ #include "wx/gtk/private/gtk2-compat.h"
+ #else
+ #define gtk_widget_get_window(x) x->window
+ #endif
#elif defined(__WXMSW__)
#include "wx/msw/private.h"
#elif defined(__WXX11__)
wxPopupTransientWindow *m_popup;
DECLARE_EVENT_TABLE()
- DECLARE_NO_COPY_CLASS(wxPopupWindowHandler)
+ wxDECLARE_NO_COPY_CLASS(wxPopupWindowHandler);
};
class wxPopupFocusHandler : public wxEvtHandler
protected:
void OnKillFocus(wxFocusEvent& event);
- void OnKeyDown(wxKeyEvent& event);
+ void OnChar(wxKeyEvent& event);
private:
wxPopupTransientWindow *m_popup;
DECLARE_EVENT_TABLE()
- DECLARE_NO_COPY_CLASS(wxPopupFocusHandler)
+ wxDECLARE_NO_COPY_CLASS(wxPopupFocusHandler);
};
// ----------------------------------------------------------------------------
BEGIN_EVENT_TABLE(wxPopupFocusHandler, wxEvtHandler)
EVT_KILL_FOCUS(wxPopupFocusHandler::OnKillFocus)
- EVT_KEY_DOWN(wxPopupFocusHandler::OnKeyDown)
+ EVT_CHAR(wxPopupFocusHandler::OnChar)
END_EVENT_TABLE()
BEGIN_EVENT_TABLE(wxPopupTransientWindow, wxPopupWindow)
-#if defined( __WXMSW__ ) || defined( __WXMAC__)
+#if defined( __WXMSW__ ) || ( defined( __WXMAC__ ) && wxOSX_USE_CARBON )
EVT_IDLE(wxPopupTransientWindow::OnIdle)
#endif
END_EVENT_TABLE()
// is there enough space to put the popup below the window (where we put it
// by default)?
wxCoord y = ptOrigin.y + size.y;
- if ( y + sizeSelf.y > sizeScreen.y )
+ if ( y + sizeSelf.y > posScreen.y + sizeScreen.y )
{
// check if there is enough space above
if ( ptOrigin.y > sizeSelf.y )
x += size.x;
- if ( x + sizeSelf.x > sizeScreen.x )
+ if ( x + sizeSelf.x > posScreen.x + sizeScreen.x )
{
// check if there is enough space to the left
if ( ptOrigin.x > sizeSelf.x )
Show();
- // There is is a problem if these are still in use
+ // There is a problem if these are still in use
wxASSERT(!m_handlerFocus || !m_handlerFocus->GetNextHandler());
wxASSERT(!m_handlerPopup || !m_handlerPopup->GetNextHandler());
m_focus->SetFocus();
}
-#if defined( __WXMSW__ ) || defined( __WXMAC__)
+#if defined( __WXMSW__ ) || (defined( __WXMAC__) && wxOSX_USE_CARBON)
// MSW doesn't allow to set focus to the popup window, but we need to
// subclass the window which has the focus, and not winFocus passed in or
// otherwise everything else breaks down
{
gtk_grab_add( m_widget );
- gdk_pointer_grab( m_widget->window, TRUE,
+ gdk_pointer_grab( gtk_widget_get_window(m_widget), true,
(GdkEventMask)
(GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK |
return false;
}
-#if defined( __WXMSW__ ) || defined( __WXMAC__)
+#if defined( __WXMSW__ ) || ( defined( __WXMAC__ ) && wxOSX_USE_CARBON )
void wxPopupTransientWindow::OnIdle(wxIdleEvent& event)
{
event.Skip();
void wxPopupComboWindow::OnDismiss()
{
- m_combo->OnPopupDismiss();
+ m_combo->OnPopupDismiss(true);
}
void wxPopupComboWindow::OnKeyDown(wxKeyEvent& event)
default:
// forgot to update the switch after adding a new hit test code?
- wxFAIL_MSG( _T("unexpected HitTest() return value") );
+ wxFAIL_MSG( wxT("unexpected HitTest() return value") );
// fall through
case wxHT_WINDOW_CORNER:
m_popup->DismissAndNotify();
}
-void wxPopupFocusHandler::OnKeyDown(wxKeyEvent& event)
+void wxPopupFocusHandler::OnChar(wxKeyEvent& event)
{
// we can be associated with the popup itself in which case we should avoid
// infinite recursion