//-----------------------------------------------------------------------------
// the trace mask used for the focus debugging messages
-#define TRACE_FOCUS _T("focus")
+#define TRACE_FOCUS wxT("focus")
//-----------------------------------------------------------------------------
// missing gdk functions
// set WXTRACE to this to see the key event codes on the console
-#define TRACE_KEYS _T("keyevent")
+#define TRACE_KEYS wxT("keyevent")
// translates an X key symbol to WXK_XXX value
//
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, wxT("Key %s event: keysym = %ld"),
+ event.GetEventType() == wxEVT_KEY_UP ? wxT("release")
+ : wxT("press"),
keysym);
long key_code = wxTranslateKeySymToWXKey(keysym, false /* !isChar */);
Display *dpy = (Display *)wxGetDisplay();
KeyCode keycode = XKeysymToKeycode(dpy, keysym);
- wxLogTrace(TRACE_KEYS, _T("\t-> keycode %d"), keycode);
+ wxLogTrace(TRACE_KEYS, wxT("\t-> keycode %d"), keycode);
KeySym keysymNormalized = XKeycodeToKeysym(dpy, keycode, 0);
}
}
- wxLogTrace(TRACE_KEYS, _T("\t-> wxKeyCode %ld"), key_code);
+ wxLogTrace(TRACE_KEYS, wxT("\t-> wxKeyCode %ld"), key_code);
// sending unknown key events doesn't really make sense
if ( !key_code )
win->m_imData->lastKeyEvent = NULL;
if (intercepted_by_IM)
{
- wxLogTrace(TRACE_KEYS, _T("Key event intercepted by IM"));
+ wxLogTrace(TRACE_KEYS, wxT("Key event intercepted by IM"));
return TRUE;
}
}
if ( key_code )
{
- wxLogTrace(TRACE_KEYS, _T("Char event: %ld"), key_code);
+ wxLogTrace(TRACE_KEYS, wxT("Char event: %ld"), key_code);
event.m_keyCode = key_code;
event.m_uniChar = *pstr;
// Backward compatible for ISO-8859-1
event.m_keyCode = *pstr < 256 ? event.m_uniChar : 0;
- wxLogTrace(TRACE_KEYS, _T("IM sent character '%c'"), event.m_uniChar);
+ wxLogTrace(TRACE_KEYS, wxT("IM sent character '%c'"), event.m_uniChar);
#else
event.m_keyCode = (char)*pstr;
#endif // wxUSE_UNICODE
gtk_im_context_set_client_window( win->m_imData->context,
widget->window);
}
-
+
// We cannot set colours and fonts before the widget
// been realized, so we do this directly after realization
// or otherwise in idle time
void wxWindowGTK::AddChildGTK(wxWindowGTK* child)
{
wxASSERT_MSG(m_wxwindow, "Cannot add a child to a window without a client area");
-
+
// the window might have been scrolled already, we
// have to adapt the position
wxPizza* pizza = WX_PIZZA(m_wxwindow);
void wxWindowGTK::DoMoveWindow(int x, int y, int width, int height)
{
gtk_widget_set_size_request(m_widget, width, height);
-
+
// inform the parent to perform the move
- wxASSERT_MSG(m_parent && m_parent->m_wxwindow,
+ wxASSERT_MSG(m_parent && m_parent->m_wxwindow,
"the parent window has no client area?");
WX_PIZZA(m_parent->m_wxwindow)->move(m_widget, x, y);
}
event.SetEventObject( this );
HandleWindowEvent( event );
}
- } else
+ } else
if (sizeFlags & wxSIZE_FORCE_EVENT)
{
wxSizeEvent event( wxSize(m_width,m_height), GetId() );
!GTK_WIDGET_CAN_FOCUS(widget) )
{
wxLogTrace(TRACE_FOCUS,
- _T("Setting focus to a child of %s(%p, %s)"),
+ wxT("Setting focus to a child of %s(%p, %s)"),
GetClassInfo()->GetClassName(), this, GetLabel().c_str());
gtk_widget_child_focus(widget, GTK_DIR_TAB_FORWARD);
}
else
{
wxLogTrace(TRACE_FOCUS,
- _T("Setting focus to %s(%p, %s)"),
+ wxT("Setting focus to %s(%p, %s)"),
GetClassInfo()->GetClassName(), this, GetLabel().c_str());
gtk_widget_grab_focus(widget);
}
/* static */
void wxWindowGTK::GTKSetLayout(GtkWidget *widget, wxLayoutDirection dir)
{
- wxASSERT_MSG( dir != wxLayout_Default, _T("invalid layout direction") );
+ wxASSERT_MSG( dir != wxLayout_Default, wxT("invalid layout direction") );
gtk_widget_set_direction(widget,
dir == wxLayout_RightToLeft ? GTK_TEXT_DIR_RTL
{
if ( flags & wxNavigationKeyEvent::WinChange )
{
- wxFAIL_MSG( _T("not implemented") );
+ wxFAIL_MSG( wxT("not implemented") );
return false;
}
else // navigate inside the container
{
wxWindow *parent = wxGetTopLevelParent((wxWindow *)this);
- wxCHECK_MSG( parent, false, _T("every window must have a TLW parent") );
+ wxCHECK_MSG( parent, false, wxT("every window must have a TLW parent") );
GtkDirectionType dir;
dir = flags & wxNavigationKeyEvent::IsForward ? GTK_DIR_TAB_FORWARD
GdkWindow *win = windowsThis[n];
if ( !win )
{
- wxFAIL_MSG(_T("NULL window returned by GTKGetWindow()?"));
+ wxFAIL_MSG(wxT("NULL window returned by GTKGetWindow()?"));
continue;
}
return (ScrollDir)dir;
}
- wxFAIL_MSG( _T("event from unknown scrollbar received") );
+ wxFAIL_MSG( wxT("event from unknown scrollbar received") );
return ScrollDir_Max;
}
gdk_display_sync(display);
gdk_window_process_updates(m_widget->window, TRUE);
-
+
// Flush again, but no need to wait for it to finish
gdk_display_flush(display);
}
wxWindowBase::DoSetToolTip(tip);
if (m_tooltip)
+ {
m_tooltip->GTKApply( (wxWindow *)this );
+ }
+ else
+ {
+ GtkWidget *w = GetConnectWidget();
+ wxToolTip::GTKApply(w, NULL);
+#if GTK_CHECK_VERSION(2, 12, 0)
+ // Just applying NULL doesn't work on 2.12.0, so also use
+ // gtk_widget_set_has_tooltip. It is part of the new GtkTooltip API
+ // but seems also to work with the old GtkTooltips.
+ if (gtk_check_version(2, 12, 0) == NULL)
+ gtk_widget_set_has_tooltip(w, FALSE);
+#endif
+ }
}
void wxWindowGTK::GTKApplyToolTip( GtkTooltips *tips, const gchar *tip )
else
window = GetConnectWidget()->window;
- wxCHECK_RET( window, _T("CaptureMouse() failed") );
+ wxCHECK_RET( window, wxT("CaptureMouse() failed") );
const wxCursor* cursor = &m_cursor;
if (!cursor->Ok())
{
const int dir = ScrollDirFromOrient(orient);
GtkRange* const sb = m_scrollBar[dir];
- wxCHECK_RET( sb, _T("this window is not scrollable") );
+ wxCHECK_RET( sb, wxT("this window is not scrollable") );
if (range <= 0)
{
{
const int dir = ScrollDirFromOrient(orient);
GtkRange * const sb = m_scrollBar[dir];
- wxCHECK_RET( sb, _T("this window is not scrollable") );
+ wxCHECK_RET( sb, wxT("this window is not scrollable") );
// This check is more than an optimization. Without it, the slider
// will not move smoothly while tracking when using wxScrollHelper.
int wxWindowGTK::GetScrollThumb(int orient) const
{
GtkRange * const sb = m_scrollBar[ScrollDirFromOrient(orient)];
- wxCHECK_MSG( sb, 0, _T("this window is not scrollable") );
+ wxCHECK_MSG( sb, 0, wxT("this window is not scrollable") );
return wxRound(sb->adjustment->page_size);
}
int wxWindowGTK::GetScrollPos( int orient ) const
{
GtkRange * const sb = m_scrollBar[ScrollDirFromOrient(orient)];
- wxCHECK_MSG( sb, 0, _T("this window is not scrollable") );
+ wxCHECK_MSG( sb, 0, wxT("this window is not scrollable") );
return wxRound(sb->adjustment->value);
}
int wxWindowGTK::GetScrollRange( int orient ) const
{
GtkRange * const sb = m_scrollBar[ScrollDirFromOrient(orient)];
- wxCHECK_MSG( sb, 0, _T("this window is not scrollable") );
+ wxCHECK_MSG( sb, 0, wxT("this window is not scrollable") );
return wxRound(sb->adjustment->upper);
}