diff --git a/VersionNum b/VersionNum index 6e6eeb8abeeae847dc1f0e86e4aa92964bd1677d..4f491b8111cc7bcb19405c89cf913f7a2be806d8 100644 --- a/VersionNum +++ b/VersionNum @@ -1,23 +1,21 @@ -/* (0.16) +/* (0.17) * * This file is automatically maintained by srccommit, do not edit manually. - * Last processed by srccommit version: 1.1. * */ -#define Module_MajorVersion_CMHG 0.16 -#define Module_MinorVersion_CMHG -#define Module_Date_CMHG 18 Aug 2015 +#define Module_MajorVersion_CMHG 0.17 +#define Module_MinorVersion_CMHG +#define Module_Date_CMHG 13 Feb 2021 -#define Module_MajorVersion "0.16" -#define Module_Version 16 +#define Module_MajorVersion "0.17" +#define Module_Version 17 #define Module_MinorVersion "" -#define Module_Date "18 Aug 2015" +#define Module_Date "13 Feb 2021" -#define Module_ApplicationDate "18-Aug-15" +#define Module_ApplicationDate "13-Feb-21" #define Module_ComponentName "Scale" -#define Module_ComponentPath "castle/RiscOS/Sources/Toolbox/Scale" -#define Module_FullVersion "0.16" -#define Module_HelpVersion "0.16 (18 Aug 2015)" -#define Module_LibraryVersionInfo "0:16" +#define Module_FullVersion "0.17" +#define Module_HelpVersion "0.17 (13 Feb 2021)" +#define Module_LibraryVersionInfo "0:17" diff --git a/c/auxiliary b/c/auxiliary index 2259b096e3364a29aa737fd2d8b0d96ab005f09c..7e125ec8685f9a55a0efe58ed85d86fbfae56e15 100644 --- a/c/auxiliary +++ b/c/auxiliary @@ -183,15 +183,17 @@ _kernel_oserror *show_actual (void) { debug_output ("a","\n"); } } - global_next->flags |= ScaleInternal_IsShowing; e = _kernel_swi (Toolbox_ShowObject, ®s, ®s); + if (e == NULL) { + global_next->flags |= ScaleInternal_IsShowing; + } if (show_info) { mem_freek (show_info); global_next->show_info = NULL; } - global_next = NULL; + global_next = NULL; return e; } diff --git a/c/create b/c/create index 1c4e183a88a0472daa139f7fc75b40e9956790a9..5b176408300e5c2088600748a6afe3d98738e331 100644 --- a/c/create +++ b/c/create @@ -76,6 +76,7 @@ extern _kernel_oserror *create_object (_kernel_swi_regs *r, TaskDescriptor *t) _kernel_oserror *e; _kernel_swi_regs regs, + win_regs, *user_regs = (_kernel_swi_regs *) r->r[4]; ObjectTemplateHeader *obj_temp_hdr = (ObjectTemplateHeader *) user_regs->r[1]; ScaleTemplate *template = (ScaleTemplate *) obj_temp_hdr->body; @@ -144,6 +145,12 @@ extern _kernel_oserror *create_object (_kernel_swi_regs *r, TaskDescriptor *t) = ((template->flags & Scale_GenerateShowEvent) ? ScaleInternal_GenerateShowEvent : 0) | ((template->flags & Scale_GenerateHideEvent) ? ScaleInternal_GenerateHideEvent : 0); + win_regs.r[0] = 0; + win_regs.r[1] = internal->sub_object_id; + win_regs.r[2] = internal->wimp_handle; + if ((e = _kernel_swi (Window_GetWimpHandle, ®s, ®s)) != NULL) + return e; + if (t->object_list) { /* If there are already fileinfos attached to the task ... */ internal->forward = t->object_list; diff --git a/c/getstate b/c/getstate index 02e7aa72b9b9a61ca56aae820da06e28e1741712..50dbab5205cda091f41f2c3dd4bcfe81bba6b433 100644 --- a/c/getstate +++ b/c/getstate @@ -59,9 +59,22 @@ extern _kernel_oserror *getstate_object (_kernel_swi_regs *r, TaskDescriptor *t) * */ - ScaleInternal *internal = (ScaleInternal *) r->r[2]; - r->r[0] = (internal->flags & ScaleInternal_IsShowing) ? Toolbox_GetObjectState_Showing : 0; + _kernel_oserror *e; + _kernel_swi_regs regs; + wimp_GetWindowState state; + ScaleInternal *internal = (ScaleInternal *) r->r[2]; + + if (internal->wimp_handle) { + state.open.window_handle = internal->wimp_handle; + regs.r[1] = (int) &state; + if ((e = _kernel_swi (Wimp_GetWindowState, ®s, ®s)) != NULL) + return e; + + r->r[0] = (state.flags & wimp_WINDOWFLAGS_OPEN) ? Toolbox_GetObjectState_Showing : 0; + } else { + r->r[0] = (internal->flags & ScaleInternal_IsShowing) ? Toolbox_GetObjectState_Showing : 0; + } IGNORE(t); diff --git a/h/object b/h/object index 06c5a2600b1862cfac31895aff3fbe4a60bf1650..9e08a2277e7188e664404617f906f1dc73f86be1 100644 --- a/h/object +++ b/h/object @@ -44,6 +44,7 @@ typedef struct _scale_internal { int show_type; ShowInfo *show_info; ObjectID object_id, sub_object_id; + int wimp_handle; int std_value[4]; int ini_value; /* contains value when scale was opened */ } ScaleInternal;