void WdeSOP( OBJPTR obj, OBJPTR parent ) { LIST *ilist, *tlist, *clist; WdeResInfo *info; RECT orect; OBJPTR sib; OBJ_ID id; bool clear; POINT origin; info = WdeGetCurrentRes(); if( info == NULL ) { return; } GetClientRect( info->edit_win, &orect ); GetOffset( &origin ); OffsetRect( &orect, origin.x, origin.y ); if( parent == NULL ) { GetObjectParent( obj, &parent ); if( parent == NULL ) { return; } } Forward( parent, GET_SUBOBJ_LIST, &tlist, NULL ); if( tlist != NULL && WdeFindObjectsInRect( &orect, &ilist, tlist ) && ilist != NULL ) { clist = NULL; tlist = NULL; for( ; ilist != NULL; ilist = ListConsume( ilist ) ) { sib = ListElement( ilist ); if( (Forward( sib, IS_OBJECT_CLEAR, &clear, NULL ) && clear) || (Forward( sib, IDENTIFY, &id, NULL ) && id == DIALOG_OBJ) ) { WdeInsertObject( &clist, sib ); } else { WdeInsertObject( &tlist, sib ); } } if( clist != NULL ) { WdeListConcat( &tlist, clist, 0 ); ListFree( clist ); } if( tlist != NULL ) { WdeReorderObjectWindows( tlist ); ListFree( tlist ); } } }
bool WdeFindObjectsInRect( RECT *r, LIST **obj_list, LIST *olist ) { OBJPTR child; RECT child_rect; RECT irect; *obj_list = NULL; for( ; olist != NULL; olist = ListNext( olist ) ) { child = ListElement( olist ); Location( child, &child_rect ); if( IntersectRect( &irect, &child_rect, r ) ) { WdeInsertObject( obj_list, child ); } } return( *obj_list != NULL ); }
void WdeAddToolBar( WdeToolBar *tbar ) { WdeInsertObject( &WdeToolBarList, (void *)tbar ); }
Bool WdeLoadCustomLib ( Bool ms_lib, Bool load_only ) { char *name; HINSTANCE inst; WdeCustLib *lib; BOOL ret; WdeGetFileStruct gf; gf.file_name = NULL; gf.title = WdeCustOpenTitle; gf.filter = WdeCustFilter; name = WdeGetOpenFileName ( &gf ); if ( !name ) { return ( FALSE ); } inst = LoadLibrary ( name ); if ( inst <= HINSTANCE_ERROR ) { WdeWriteTrail("WdeLoadCustomLib: LoadLibrary call failed!"); WdeMemFree ( name ); return ( FALSE ); } lib = WdeAllocCustLib (); if ( lib == NULL ) { WdeWriteTrail("WdeLoadCustomLib: WdeAllocCustLib failed!"); WdeMemFree ( name ); FreeLibrary ( inst ); return ( FALSE ); } lib->inst = inst; lib->ms_lib = ms_lib; lib->load_only = load_only; lib->file_name = name; if( load_only ) { WdeSetStatusByID( -1, WDE_LIBRARYLOADED ); ret = TRUE; } else { if( ms_lib ) { ret = WdeLoadMSCustomControls( lib ); } else { ret = WdeLoadBorCustomControls( lib ); } } if ( !ret ) { WdeFreeCustLib ( lib ); return ( FALSE ); } if ( load_only ) { WdeInsertObject ( &WdeLibList, (void *) lib ); } else { WdeInsertObject ( &WdeCustomLibList, (void *) lib ); } return( TRUE ); }
void WdeAddResDlgItemToResInfo( WdeResInfo *info, WdeResDlgItem *item ) { WdeInsertObject( &info->dlg_item_list, item ); }