From 509965a6913297cbbefa3637a1ce48fd8566f316 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Fri, 21 Apr 2017 13:30:57 +0300 Subject: [PATCH] Add minor improvement to samples/gtk --- samples/gtk/src/Main.kt | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/samples/gtk/src/Main.kt b/samples/gtk/src/Main.kt index 273c9ab5a69..f26ef81eccd 100644 --- a/samples/gtk/src/Main.kt +++ b/samples/gtk/src/Main.kt @@ -17,18 +17,10 @@ import kotlinx.cinterop.* import gtk3.* -internal fun print_hello(widget: CPointer?, data: gpointer?) { - println("Hi Kotlin") -} - -internal fun finish(widget: CPointer?) { - gtk_widget_destroy(widget) -} - // Note that all callback parameters must be primitive types or nullable C pointers. -fun g_signal_connect(obj: CPointer<*>, actionName: String, - action: GCallback, data: gpointer? = null, connect_flags: Int = 0) { - g_signal_connect_data(obj.reinterpret(), actionName, action, +fun > g_signal_connect(obj: CPointer<*>, actionName: String, + action: CPointer, data: gpointer? = null, connect_flags: Int = 0) { + g_signal_connect_data(obj.reinterpret(), actionName, action.reinterpret(), data = data, destroy_data = null, connect_flags = connect_flags) } @@ -45,9 +37,14 @@ fun activate(app: CPointer?, user_data: gpointer?) { val button = gtk_button_new_with_label("Konan говорит: click me!")!! g_signal_connect(button, "clicked", - staticCFunction(::print_hello).reinterpret()); + staticCFunction { widget: CPointer?, data: gpointer? -> + println("Hi Kotlin") + }); g_signal_connect(button, "clicked", - staticCFunction(::finish).reinterpret(), window, G_CONNECT_SWAPPED) + staticCFunction { widget: CPointer? -> + gtk_widget_destroy(widget) + }, + window, G_CONNECT_SWAPPED) gtk_container_add (button_box.reinterpret(), button); gtk_widget_show_all(windowWidget) @@ -55,7 +52,7 @@ fun activate(app: CPointer?, user_data: gpointer?) { fun gtkMain(args: Array): Int { val app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE)!! - g_signal_connect(app, "activate", staticCFunction(::activate).reinterpret()) + g_signal_connect(app, "activate", staticCFunction(::activate)) val status = memScoped { g_application_run(app.reinterpret(), args.size, args.map { it.cstr.getPointer(memScope) }.toCValues())