38 static WindowFrameType glass_mask_to_window_frame_type(jint mask) {
39 if (mask & com_sun_glass_ui_gtk_GtkWindow_TRANSPARENT) {
40 return TRANSPARENT;
41 }
42 if (mask & com_sun_glass_ui_gtk_GtkWindow_TITLED) {
43 return TITLED;
44 }
45 return UNTITLED;
46 }
47
48 static WindowType glass_mask_to_window_type(jint mask) {
49 if (mask & com_sun_glass_ui_gtk_GtkWindow_POPUP) {
50 return POPUP;
51 }
52 if (mask & com_sun_glass_ui_gtk_GtkWindow_UTILITY) {
53 return UTILITY;
54 }
55 return NORMAL;
56 }
57
58 extern "C" {
59
60 /*
61 * Class: com_sun_glass_ui_gtk_GtkWindow
62 * Method: _createWindow
63 * Signature: (JJI)J
64 */
65 JNIEXPORT jlong JNICALL Java_com_sun_glass_ui_gtk_GtkWindow__1createWindow
66 (JNIEnv * env, jobject obj, jlong owner, jlong screen, jint mask)
67 {
68 (void)env;
69
70 WindowContext* ctx = new WindowContextTop(obj,
71 (WindowContext*)JLONG_TO_PTR(owner),
72 screen,
73 glass_mask_to_window_frame_type(mask),
74 glass_mask_to_window_type(mask));
75
76 return PTR_TO_JLONG(ctx);
77 }
78
79 /*
80 * Class: com_sun_glass_ui_gtk_GtkWindow
81 * Method: _createChildWindow
82 * Signature: (J)J
83 */
84 JNIEXPORT jlong JNICALL Java_com_sun_glass_ui_gtk_GtkWindow__1createChildWindow
85 (JNIEnv * env, jobject obj , jlong owner)
86 {
87 (void)env;
88
89 GdkWindow *parent_window = NULL;
90 GtkWidget *parent_widget = NULL;
91 WindowContextPlug *parent_ctx = NULL;
92 WindowContext *ctx = NULL;
93
94 parent_window = GLASS_GDK_WINDOW_LOOKUP_FOR_DISPLAY(
|
38 static WindowFrameType glass_mask_to_window_frame_type(jint mask) {
39 if (mask & com_sun_glass_ui_gtk_GtkWindow_TRANSPARENT) {
40 return TRANSPARENT;
41 }
42 if (mask & com_sun_glass_ui_gtk_GtkWindow_TITLED) {
43 return TITLED;
44 }
45 return UNTITLED;
46 }
47
48 static WindowType glass_mask_to_window_type(jint mask) {
49 if (mask & com_sun_glass_ui_gtk_GtkWindow_POPUP) {
50 return POPUP;
51 }
52 if (mask & com_sun_glass_ui_gtk_GtkWindow_UTILITY) {
53 return UTILITY;
54 }
55 return NORMAL;
56 }
57
58 static GdkWMFunction glass_mask_to_wm_function(jint mask) {
59 int func = GDK_FUNC_RESIZE | GDK_FUNC_MOVE;
60
61 if (mask & com_sun_glass_ui_gtk_GtkWindow_CLOSABLE) {
62 func |= GDK_FUNC_CLOSE;
63 }
64 if (mask & com_sun_glass_ui_gtk_GtkWindow_MAXIMIZABLE) {
65 func |= GDK_FUNC_MAXIMIZE;
66 }
67 if (mask & com_sun_glass_ui_gtk_GtkWindow_MINIMIZABLE) {
68 func |= GDK_FUNC_MINIMIZE;
69 }
70
71 return (GdkWMFunction) func;
72 }
73
74 extern "C" {
75
76 /*
77 * Class: com_sun_glass_ui_gtk_GtkWindow
78 * Method: _createWindow
79 * Signature: (JJI)J
80 */
81 JNIEXPORT jlong JNICALL Java_com_sun_glass_ui_gtk_GtkWindow__1createWindow
82 (JNIEnv * env, jobject obj, jlong owner, jlong screen, jint mask)
83 {
84 (void)env;
85
86 WindowContext* ctx = new WindowContextTop(obj,
87 (WindowContext*)JLONG_TO_PTR(owner),
88 screen,
89 glass_mask_to_window_frame_type(mask),
90 glass_mask_to_window_type(mask),
91 glass_mask_to_wm_function(mask)
92 );
93
94 return PTR_TO_JLONG(ctx);
95 }
96
97 /*
98 * Class: com_sun_glass_ui_gtk_GtkWindow
99 * Method: _createChildWindow
100 * Signature: (J)J
101 */
102 JNIEXPORT jlong JNICALL Java_com_sun_glass_ui_gtk_GtkWindow__1createChildWindow
103 (JNIEnv * env, jobject obj , jlong owner)
104 {
105 (void)env;
106
107 GdkWindow *parent_window = NULL;
108 GtkWidget *parent_widget = NULL;
109 WindowContextPlug *parent_ctx = NULL;
110 WindowContext *ctx = NULL;
111
112 parent_window = GLASS_GDK_WINDOW_LOOKUP_FOR_DISPLAY(
|