#ifdef GDK_WINDOWING_X11
#include <gdk/gdkx.h>
+#include "wx/x11/private/wrapxkb.h"
#else
typedef guint KeySym;
#endif
// the trace mask used for the focus debugging messages
#define TRACE_FOCUS wxT("focus")
-//-----------------------------------------------------------------------------
-// "size_request" of m_widget
-//-----------------------------------------------------------------------------
-
-extern "C" {
-static void
-wxgtk_window_size_request_callback(GtkWidget * WXUNUSED(widget),
- GtkRequisition *requisition,
- wxWindow * win)
-{
- int w, h;
- win->GetSize( &w, &h );
- if (w < 2)
- w = 2;
- if (h < 2)
- h = 2;
-
- requisition->height = h;
- requisition->width = w;
-}
-}
-
//-----------------------------------------------------------------------------
// "expose_event" of m_wxwindow
//-----------------------------------------------------------------------------
wxLogTrace(TRACE_KEYS, wxT("\t-> keycode %d"), keycode);
+#ifdef HAVE_X11_XKBLIB_H
+ KeySym keysymNormalized = XkbKeycodeToKeysym(dpy, keycode, 0, 0);
+#else
KeySym keysymNormalized = XKeycodeToKeysym(dpy, keycode, 0);
+#endif
// use the normalized, i.e. lower register, keysym if we've
// got one
// We should let GTK+ IM filter key event first. According to GTK+ 2.0 API
// docs, if IM filter returns true, no further processing should be done.
// we should send the key_down event anyway.
- bool intercepted_by_IM = gtk_im_context_filter_keypress(win->m_imData->context, gdk_event);
+ bool intercepted_by_IM =
+ gtk_im_context_filter_keypress(win->m_imData->context, gdk_event) != 0;
win->m_imData->lastKeyEvent = NULL;
if (intercepted_by_IM)
{
child->m_x += pizza->m_scroll_x;
child->m_y += pizza->m_scroll_y;
- gtk_widget_set_size_request(
- child->m_widget, child->m_width, child->m_height);
- pizza->put(child->m_widget, child->m_x, child->m_y);
+ pizza->put(child->m_widget,
+ child->m_x, child->m_y, child->m_width, child->m_height);
}
//-----------------------------------------------------------------------------
}
#endif // GTK+ >= 2.8
- if ( GTKShouldConnectSizeRequest() )
- {
- // This is needed if we want to add our windows into native
- // GTK controls, such as the toolbar. With this callback, the
- // toolbar gets to know the correct size (the one set by the
- // programmer). Sadly, it misbehaves for wxComboBox.
- g_signal_connect (m_widget, "size_request",
- G_CALLBACK (wxgtk_window_size_request_callback),
- this);
- }
+ if (!WX_IS_PIZZA(gtk_widget_get_parent(m_widget)) && !GTK_IS_WINDOW(m_widget))
+ gtk_widget_set_size_request(m_widget, m_width, m_height);
InheritAttributes();
void wxWindowGTK::DoMoveWindow(int x, int y, int width, int height)
{
+ gtk_widget_set_size_request(m_widget, width, height);
GtkWidget* parent = gtk_widget_get_parent(m_widget);
if (WX_IS_PIZZA(parent))
- {
- WX_PIZZA(parent)->move(m_widget, x, y);
- gtk_widget_set_size_request(m_widget, width, height);
- }
+ WX_PIZZA(parent)->move(m_widget, x, y, width, height);
// With GTK3, gtk_widget_queue_resize() is ignored while a size-allocate
// is in progress. This situation is common in wxWidgets, since
gboolean rc;
g_signal_emit_by_name(parent->m_widget, "focus", dir, &rc);
- return rc == TRUE;
+ return rc != 0;
}
}
bool wxWindowGTK::IsDoubleBuffered() const
{
- return gtk_widget_get_double_buffered( m_wxwindow );
+ return gtk_widget_get_double_buffered( m_wxwindow ) != 0;
}
void wxWindowGTK::ClearBackground()
*reason = _("This program was compiled with a too old version of GTK+, "
"please rebuild with GTK+ 2.12 or newer.");
}
-#endif // wxGTK_HAS_COMPOSITING_SUPPORT/!wxGTK_HAS_COMPOSITING_SUPPORT
return false;
+#endif // wxGTK_HAS_COMPOSITING_SUPPORT/!wxGTK_HAS_COMPOSITING_SUPPORT
}
// ----------------------------------------------------------------------------