< prev index next >
modules/javafx.graphics/src/main/native-glass/gtk/glass_window.cpp
Print this page
*** 38,47 ****
--- 38,50 ----
#include <X11/extensions/shape.h>
#include <cairo.h>
#include <cairo-xlib.h>
#include <gdk/gdkx.h>
#include <gdk/gdk.h>
+ #ifdef GLASS_GTK3
+ #include <gtk/gtkx.h>
+ #endif
#include <string.h>
#include <iostream>
#include <algorithm>
*** 349,358 ****
--- 352,366 ----
jdouble dx = 0;
jdouble dy = 0;
// converting direction to change in pixels
switch (event->direction) {
+ #if GTK_CHECK_VERSION(3, 4, 0)
+ case GDK_SCROLL_SMOOTH:
+ //FIXME 3.4 ???
+ break;
+ #endif
case GDK_SCROLL_UP:
dy = 1;
break;
case GDK_SCROLL_DOWN:
dy = -1;
*** 414,424 ****
jcharArray jChars = NULL;
jchar key = gdk_keyval_to_unicode(event->keyval);
if (key >= 'a' && key <= 'z' && (event->state & GDK_CONTROL_MASK)) {
key = key - 'a' + 1; // map 'a' to ctrl-a, and so on.
} else {
! key = glass_gtk_fixup_typed_key(key, event->keyval);
}
if (key > 0) {
jChars = mainEnv->NewCharArray(1);
if (jChars) {
--- 422,446 ----
jcharArray jChars = NULL;
jchar key = gdk_keyval_to_unicode(event->keyval);
if (key >= 'a' && key <= 'z' && (event->state & GDK_CONTROL_MASK)) {
key = key - 'a' + 1; // map 'a' to ctrl-a, and so on.
} else {
! #ifdef GLASS_GTK2
! if (key == 0) {
! // Work around "bug" fixed in gtk-3.0:
! // http://mail.gnome.org/archives/commits-list/2011-March/msg06832.html
! switch (event->keyval) {
! case 0xFF08 /* Backspace */: key = '\b';
! case 0xFF09 /* Tab */: key = '\t';
! case 0xFF0A /* Linefeed */: key = '\n';
! case 0xFF0B /* Vert. Tab */: key = '\v';
! case 0xFF0D /* Return */: key = '\r';
! case 0xFF1B /* Escape */: key = '\033';
! case 0xFFFF /* Delete */: key = '\177';
! }
! }
! #endif
}
if (key > 0) {
jChars = mainEnv->NewCharArray(1);
if (jChars) {
*** 1452,1462 ****
WindowContextBase(),
parent()
{
jwindow = mainEnv->NewGlobalRef(_jwindow);
! gtk_widget = gtk_plug_new((GdkNativeWindow)PTR_TO_JLONG(_owner));
g_signal_connect(G_OBJECT(gtk_widget), "configure-event", G_CALLBACK(plug_configure), this);
gtk_widget_set_size_request(gtk_widget, 0, 0);
gtk_widget_set_events(gtk_widget, GDK_ALL_EVENTS_MASK);
--- 1474,1486 ----
WindowContextBase(),
parent()
{
jwindow = mainEnv->NewGlobalRef(_jwindow);
! WindowContext* parent = ((WindowContext*)JLONG_TO_PTR(_owner));
! Window win = GDK_WINDOW_XID(parent->get_gdk_window());
! gtk_widget = gtk_plug_new(win);
g_signal_connect(G_OBJECT(gtk_widget), "configure-event", G_CALLBACK(plug_configure), this);
gtk_widget_set_size_request(gtk_widget, 0, 0);
gtk_widget_set_events(gtk_widget, GDK_ALL_EVENTS_MASK);
*** 1778,1788 ****
--- 1802,1816 ----
full_screen_window = new WindowContextTop(jwindow, NULL, 0L, UNTITLED,
NORMAL, (GdkWMFunction) 0);
int x, y, w, h;
gdk_window_get_origin(gdk_window, &x, &y);
+ #ifdef GLASS_GTK3
+ gdk_window_get_geometry(gdk_window, NULL, NULL, &w, &h);
+ #else
gdk_window_get_geometry(gdk_window, NULL, NULL, &w, &h, NULL);
+ #endif
full_screen_window->set_bounds(x, y, true, true, w, h, -1, -1);
if (WindowContextBase::sm_grab_window == this) {
ungrab_focus();
}
< prev index next >