diff --git a/ChangeLog.txt b/ChangeLog.txt index 89a8c5a397..b961e473ce 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -7,6 +7,15 @@ Entries may not always be in chronological/commit order. See license at the end of file. */ +2025-08-17 18:27 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) + * contrib/gtqtc/gtqtc.h + * contrib/gtqtc/gtqtc1.cpp + + added support for disabling title and frames of console window by + hb_gtInfo( HB_GTI_WINTITLE, ) + + * src/rtl/transfrm.c + ! fixed bug in "@S" transformation when multibyte CDP is used + 2025-07-19 19:44 UTC+0200 Aleksander Czajczynski (hb fki.pl) * contrib/hbhpdf/core.c + HPDF_GetPageByIndex( hDoc, nIndex ) --> hPage / NIL diff --git a/contrib/gtqtc/gtqtc.h b/contrib/gtqtc/gtqtc.h index 1e94d187d6..a24c851ef3 100644 --- a/contrib/gtqtc/gtqtc.h +++ b/contrib/gtqtc/gtqtc.h @@ -350,6 +350,7 @@ typedef struct HB_BOOL fFullScreen; /* enable/disable fullscreen mode */ HB_BOOL fSelectCopy; /* allow marking texts by mouse left button with shift */ HB_BOOL fMsgAlert; /* redirect Alert() calls to QMessageBox */ + HB_BOOL fNoFrame; /* disable window title and frames */ HB_BOOL fRepaint; /* force internal image repainting */ int iResizeMode; /* Sets the resizing mode either to FONT or ROWS */ diff --git a/contrib/gtqtc/gtqtc1.cpp b/contrib/gtqtc/gtqtc1.cpp index 8e0ea3802d..e3d58d0d8a 100644 --- a/contrib/gtqtc/gtqtc1.cpp +++ b/contrib/gtqtc/gtqtc1.cpp @@ -2150,11 +2150,41 @@ static HB_BOOL hb_gt_qtc_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) case HB_GTI_WINTITLE: pInfo->pResult = hb_gt_qtc_itemPutQString( pInfo->pResult, pQTC->wndTitle ); - if( pInfo->pNewVal && HB_IS_STRING( pInfo->pNewVal ) ) + if( pInfo->pNewVal ) { - hb_gt_qtc_itemGetQString( pInfo->pNewVal, pQTC->wndTitle ); - if( pQTC->qWnd ) - pQTC->qWnd->setWindowTitle( *pQTC->wndTitle ); + if( HB_IS_STRING( pInfo->pNewVal ) ) + { + hb_gt_qtc_itemGetQString( pInfo->pNewVal, pQTC->wndTitle ); + if( pQTC->qWnd ) + pQTC->qWnd->setWindowTitle( *pQTC->wndTitle ); + } + else if( HB_IS_LOGICAL( pInfo->pNewVal ) ) + { + pQTC->fNoFrame = hb_itemGetL( pInfo->pNewVal ); + if( pQTC->qWnd ) + { + Qt::WindowFlags flags = Qt::CustomizeWindowHint; + + if( pQTC->fNoFrame ) + { + hb_gt_qtc_setWindowFlags( pQTC, /*Qt::WindowTitleHint | + Qt::WindowSystemMenuHint |*/ + Qt::WindowMinimizeButtonHint | + Qt::WindowMaximizeButtonHint | + Qt::WindowCloseButtonHint, HB_FALSE ); + flags |= Qt::FramelessWindowHint; + } + else + { + if( pQTC->iCloseMode < 2 ) + flags |= Qt::WindowCloseButtonHint; + if( pQTC->fResizable ) + flags |= Qt::WindowMaximizeButtonHint; + flags |= Qt::WindowMinimizeButtonHint; + } + hb_gt_qtc_setWindowFlags( pQTC, flags, pQTC->fNoFrame ); + } + } } break; @@ -3823,14 +3853,21 @@ QTCWindow::QTCWindow( PHB_GTQTC pQTC ) { Qt::WindowFlags flags = ( windowFlags() & Qt::WindowType_Mask ) | Qt::CustomizeWindowHint | - Qt::WindowMinimizeButtonHint | - Qt::WindowSystemMenuHint | - Qt::WindowTitleHint | Qt::Window; - if( pQTC->iCloseMode < 2 ) - flags |= Qt::WindowCloseButtonHint; - if( pQTC->fResizable ) - flags |= Qt::WindowMaximizeButtonHint; + if( pQTC->fNoFrame ) + { + flags |= Qt::FramelessWindowHint; + } + else + { + if( pQTC->iCloseMode < 2 ) + flags |= Qt::WindowCloseButtonHint; + if( pQTC->fResizable ) + flags |= Qt::WindowMaximizeButtonHint; + flags |= Qt::WindowMinimizeButtonHint | + Qt::WindowSystemMenuHint | + Qt::WindowTitleHint; + } setWindowFlags( flags ); diff --git a/src/rtl/transfrm.c b/src/rtl/transfrm.c index bec52ddd03..5d20519951 100644 --- a/src/rtl/transfrm.c +++ b/src/rtl/transfrm.c @@ -947,7 +947,14 @@ HB_FUNC( TRANSFORM ) } } - hb_retclen_buffer( szResult, ( nParamS && nResultPos > nParamS ) ? nParamS : nResultPos ); + if( nParamS && nResultPos > nParamS ) + { + if( HB_CDP_ISCHARIDX( cdp ) ) + nParamS = hb_cdpTextPos( cdp, szResult, nResultPos, nParamS ); + hb_retclen_buffer( szResult, nParamS ); + } + else + hb_retclen_buffer( szResult, nResultPos ); } } else if( pPic || HB_ISNIL( 2 ) ) /* Picture is an empty string or NIL */