From: <wda...@us...> - 2008-08-07 18:03:10
|
Revision: 2878 http://oorexx.svn.sourceforge.net/oorexx/?rev=2878&view=rev Author: wdashley Date: 2008-08-07 18:03:20 +0000 (Thu, 07 Aug 2008) Log Message: ----------- ArtifactID: None Comment: Fixes for test9-4.rex. Modified Paths: -------------- sandbox/david/4x/grxwidget.cpp sandbox/david/4x/test9-4.rex Modified: sandbox/david/4x/grxwidget.cpp =================================================================== --- sandbox/david/4x/grxwidget.cpp 2008-08-07 13:23:55 UTC (rev 2877) +++ sandbox/david/4x/grxwidget.cpp 2008-08-07 18:03:20 UTC (rev 2878) @@ -459,9 +459,7 @@ RexxPointerObject rxptr = (RexxPointerObject)context->SendMessage0(self, "POINTER"); GtkWidget *myWidget = (GtkWidget *)context->PointerValue(rxptr); - // Note: The memory allocated from strdup is never recovered and - // thus causes a memory leak. - g_object_set_data(G_OBJECT(myWidget), name, strdup(data)); + g_object_set_data(G_OBJECT(myWidget), strdup(name), strdup(data)); return 0; } @@ -475,7 +473,7 @@ * * @return The value of the object. **/ -RexxMethod2(CSTRING, // Return type +RexxMethod2(RexxObjectPtr, // Return type GrxWidgetGetData, // Object_method name CSTRING, name, // Association name OSELF, self) // Self @@ -483,7 +481,11 @@ RexxPointerObject rxptr = (RexxPointerObject)context->SendMessage0(self, "POINTER"); GtkWidget *myWidget = (GtkWidget *)context->PointerValue(rxptr); - return (char *)g_object_get_data(G_OBJECT(myWidget), name); + char *data = (char *)g_object_get_data(G_OBJECT(myWidget), name); + if (data == NULL) { + return context->NewStringFromAsciiz(""); + } + return context->NewStringFromAsciiz(data); } /** Modified: sandbox/david/4x/test9-4.rex =================================================================== --- sandbox/david/4x/test9-4.rex 2008-08-07 13:23:55 UTC (rev 2877) +++ sandbox/david/4x/test9-4.rex 2008-08-07 18:03:20 UTC (rev 2878) @@ -54,7 +54,7 @@ menu = .GtkMenu~new() eventbox = .myEventBox~new() progress = .GtkProgressBar~new() -statusbar = .MyStatusbar +statusbar = .GtkStatusbar~new() progress~set_text('Nothing Yet Happened') call create_popup_menu menu, progress, statusbar @@ -83,30 +83,29 @@ ::routine create_popup_menu use strict arg menu, progress, statusbar -group = .GtkAccelGroup~new() -window~add_accel_group(group) -menu~set_accel_group(group) - pulse = .MyPulse~new_with_label('Pulse Progress') fill = .MyFill~new_with_label('Set as Complete') clear = .MyClear~new_with_label('Clear Progress') separator = .GtkSeparatorMenuItem~new() +pulse~signal_connect('activate') +fill~signal_connect('activate') +clear~signal_connect('activate') + -- set up the user data for the signals -pulse~user_data = .array~new(1) -fill~user_data = .array~new(1) -clear~user_data = .array~new(1) -pulse~user_data[1] = progress -fill~user_data[1] = progress -clear~user_data[1] = progress +pulse~user_data = .array~new() +pulse~user_data[1] = progres pulse~user_data[2] = statusbar +pulse~user_data[3] = 'Pulse the progressbar one step.' +fill~user_data = .array~new() +fill~user_data[1] = progres fill~user_data[2] = statusbar +fill~user_data[3] = 'Set the progress bar to 100%.' +clear~user_data = .array~new() +clear~user_data[1] = progres clear~user_data[2] = statusbar +clear~user_data[3] = 'Clear the progress bar to 0%.' -pulse~signal_connect('activate') -fill~signal_connect('activate') -clear~signal_connect('activate') - pulse~signal_connect('enter_notify_event') pulse~signal_connect('leave_notify_event') fill~signal_connect('enter_notify_event') @@ -132,8 +131,9 @@ ::class myEventBox subclass GtkEventBox ::method signal_button_press_event +use strict arg event if event~button = 3 then do - menu~popup() + self~user_data~popup() end return .true @@ -146,12 +146,12 @@ ::method signal_enter_notify_event use strict arg event -call statusbar_hint self~userdata[1], event, self~user_data[2] +call statusbar_hint self, event, self~user_data[2] return .false ::method signal_leave_notify_event use strict arg event -call statusbar_hint self~userdata[1], event, self~user_data[2] +call statusbar_hint self, event, self~user_data[2] return .false ::class MyFill subclass GtkMenuItem @@ -163,12 +163,12 @@ ::method signal_enter_notify_event use strict arg event -call statusbar_hint self~userdata[1], event, self~user_data[2] +call statusbar_hint self, event, self~user_data[2] return .false ::method signal_leave_notify_event use strict arg event -call statusbar_hint self~userdata[1], event, self~user_data[2] +call statusbar_hint self, event, self~user_data[2] return .false ::class MyClear subclass GtkMenuItem @@ -180,24 +180,22 @@ ::method signal_enter_notify_event use strict arg event -call statusbar_hint self~userdata[1], event, self~user_data[2] +call statusbar_hint self, event, self~user_data[2] return .false ::method signal_leave_notify_event use strict arg event -call statusbar_hint self~userdata[1], event, self~user_data[2] +call statusbar_hint self, event, self~user_data[2] return .false ::routine statusbar_hint -use strict arg menuitem, event, statusbar +use strict arg self, event, statusbar id = statusbar~get_context_id('MenuItemHints') if event~type = .gtk~GDK_ENTER_NOTIFY then do - hint = menuitem~get_data('menuhint') - statusbar~push(id, hint) + statusbar~push(id, self~user_data[3]) end else do - statusbar~pop(id, hint) + statusbar~pop(id) end return - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |