2014-11-12 18:01 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbgtinfo.ch
+ added HB_GTI_MINIMIZED
* contrib/gtqtc/gtqtc.h
* contrib/gtqtc/gtqtc1.cpp
+ added support for HB_GTI_MINIMIZED
* src/rtl/gtxwc/gtxwc.c
+ added support for HB_GTI_MINIMIZED and HB_GTI_MAXIMIZED
; All above modifications created by Rolf - thanks
* contrib/hbnetio/netiocli.c
* updated some RTEs to be a little bit more precise
* contrib/hbblat/hbblat.hbp
* disabled unconditional dynamic library build
This commit is contained in:
@@ -10,6 +10,25 @@
|
||||
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
|
||||
*/
|
||||
|
||||
2014-11-12 18:01 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
|
||||
* include/hbgtinfo.ch
|
||||
+ added HB_GTI_MINIMIZED
|
||||
|
||||
* contrib/gtqtc/gtqtc.h
|
||||
* contrib/gtqtc/gtqtc1.cpp
|
||||
+ added support for HB_GTI_MINIMIZED
|
||||
|
||||
* src/rtl/gtxwc/gtxwc.c
|
||||
+ added support for HB_GTI_MINIMIZED and HB_GTI_MAXIMIZED
|
||||
|
||||
; All above modifications created by Rolf - thanks
|
||||
|
||||
* contrib/hbnetio/netiocli.c
|
||||
* updated some RTEs to be a little bit more precise
|
||||
|
||||
* contrib/hbblat/hbblat.hbp
|
||||
* disabled unconditional dynamic library build
|
||||
|
||||
2014-11-04 01:54 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
|
||||
* ChangeLog.txt
|
||||
* doc/xhb-diff.txt
|
||||
|
||||
@@ -326,6 +326,7 @@ typedef struct
|
||||
HB_BOOL fResizable; /* enable/disable window resizing */
|
||||
HB_BOOL fResizeInc; /* enable/disable resize progression */
|
||||
HB_BOOL fMaximized; /* enter/leave mximize mode */
|
||||
HB_BOOL fMinimized; /* enter/leave mximize ( e.g. as icon in taskbar ) mode */
|
||||
HB_BOOL fFullScreen; /* enable/disable fullscreen mode */
|
||||
HB_BOOL fSelectCopy; /* allow marking texts by mouse left button with shift */
|
||||
HB_BOOL fRepaint; /* force internal image repainting */
|
||||
|
||||
@@ -1370,6 +1370,7 @@ static PHB_GTQTC hb_gt_qtc_new( PHB_GT pGT )
|
||||
pQTC->fResizeInc = HB_FALSE;
|
||||
pQTC->fAltEnter = HB_FALSE;
|
||||
pQTC->fMaximized = HB_FALSE;
|
||||
pQTC->fMinimized = HB_FALSE;
|
||||
pQTC->fFullScreen = HB_FALSE;
|
||||
pQTC->fSelectCopy = HB_FALSE;
|
||||
pQTC->fRepaint = HB_TRUE;
|
||||
@@ -1569,7 +1570,7 @@ static void hb_gt_qtc_setWindowFlags( PHB_GTQTC pQTC, Qt::WindowFlags flags, HB_
|
||||
}
|
||||
}
|
||||
|
||||
static void hb_gt_qtc_setWindowState( PHB_GTQTC pQTC, Qt::WindowStates state, HB_BOOL fSet )
|
||||
static void hb_gt_qtc_setWindowState( PHB_GTQTC pQTC, Qt::WindowStates state, HB_BOOL fSet, HB_BOOL fShow )
|
||||
{
|
||||
Qt::WindowStates currState = pQTC->qWnd->windowState(), newState;
|
||||
|
||||
@@ -1581,9 +1582,12 @@ static void hb_gt_qtc_setWindowState( PHB_GTQTC pQTC, Qt::WindowStates state, HB
|
||||
if( newState != currState )
|
||||
{
|
||||
pQTC->qWnd->setWindowState( newState );
|
||||
HB_QTC_LOCK();
|
||||
pQTC->qWnd->show();
|
||||
HB_QTC_UNLOCK();
|
||||
if( fShow )
|
||||
{
|
||||
HB_QTC_LOCK();
|
||||
pQTC->qWnd->show();
|
||||
HB_QTC_UNLOCK();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2041,7 +2045,7 @@ static HB_BOOL hb_gt_qtc_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
{
|
||||
pQTC->fMaximized = ! pQTC->fMaximized;
|
||||
if( pQTC->qWnd )
|
||||
hb_gt_qtc_setWindowState( pQTC, Qt::WindowMaximized, pQTC->fMaximized );
|
||||
hb_gt_qtc_setWindowState( pQTC, Qt::WindowMaximized, pQTC->fMaximized, HB_TRUE );
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2054,7 +2058,7 @@ static HB_BOOL hb_gt_qtc_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
{
|
||||
pQTC->fFullScreen = ! pQTC->fFullScreen;
|
||||
if( pQTC->qWnd )
|
||||
hb_gt_qtc_setWindowState( pQTC, Qt::WindowFullScreen, pQTC->fFullScreen );
|
||||
hb_gt_qtc_setWindowState( pQTC, Qt::WindowFullScreen, pQTC->fFullScreen, HB_TRUE );
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2064,6 +2068,19 @@ static HB_BOOL hb_gt_qtc_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
pQTC->fAltEnter = hb_itemGetL( pInfo->pNewVal );
|
||||
break;
|
||||
|
||||
case HB_GTI_MINIMIZED:
|
||||
if( pQTC->qWnd )
|
||||
pQTC->fMinimized = ( pQTC->qWnd->windowState() & Qt::WindowMinimized ) != 0;
|
||||
pInfo->pResult = hb_itemPutL( pInfo->pResult, pQTC->fMinimized );
|
||||
if( pInfo->pNewVal && HB_IS_LOGICAL( pInfo->pNewVal ) &&
|
||||
( hb_itemGetL( pInfo->pNewVal ) ? ! pQTC->fMinimized : pQTC->fMinimized ) )
|
||||
{
|
||||
pQTC->fMinimized = ! pQTC->fMinimized;
|
||||
if( pQTC->qWnd )
|
||||
hb_gt_qtc_setWindowState( pQTC, Qt::WindowMinimized, pQTC->fMinimized, ! pQTC->fMinimized );
|
||||
}
|
||||
break;
|
||||
|
||||
case HB_GTI_CLOSABLE:
|
||||
pInfo->pResult = hb_itemPutL( pInfo->pResult, pQTC->iCloseMode == 0 );
|
||||
if( pInfo->pNewVal && HB_IS_LOGICAL( pInfo->pNewVal ) &&
|
||||
@@ -3267,7 +3284,7 @@ void QTConsole::keyPressEvent( QKeyEvent * event )
|
||||
( iFlags & HB_KF_KEYPAD ) == 0 )
|
||||
{
|
||||
pQTC->fFullScreen = ( pQTC->qWnd->windowState() & Qt::WindowFullScreen ) == 0;
|
||||
hb_gt_qtc_setWindowState( pQTC, Qt::WindowFullScreen, pQTC->fFullScreen );
|
||||
hb_gt_qtc_setWindowState( pQTC, Qt::WindowFullScreen, pQTC->fFullScreen, HB_TRUE );
|
||||
return;
|
||||
}
|
||||
iKey = HB_KX_ENTER;
|
||||
@@ -3520,10 +3537,12 @@ QTCWindow::QTCWindow( PHB_GTQTC pQTC )
|
||||
*/
|
||||
resize( pQTC->cellX * pQTC->iCols, pQTC->cellY * pQTC->iRows );
|
||||
|
||||
if( pQTC->fMaximized )
|
||||
setWindowState( windowState() | Qt::WindowMaximized );
|
||||
if( pQTC->fFullScreen )
|
||||
setWindowState( windowState() | Qt::WindowFullScreen );
|
||||
else if( pQTC->fMaximized )
|
||||
setWindowState( windowState() | Qt::WindowMaximized );
|
||||
else if( pQTC->fMinimized )
|
||||
setWindowState( windowState() | Qt::WindowMinimized );
|
||||
|
||||
if( pQTC->qIcon )
|
||||
setWindowIcon( *pQTC->qIcon );
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
-stop{!win}
|
||||
|
||||
-depoptional=blat:yes
|
||||
-depoptional=blat:yes{!hbdyn}
|
||||
-depkeyhead=blat:blat.h
|
||||
-depcontrol=blat:${HB_WITH_BLAT}
|
||||
-depimplibs=blat:../blat.dll
|
||||
|
||||
@@ -1231,11 +1231,11 @@ static HB_BOOL s_netio_procexec( int iMsg, int iType )
|
||||
iMsg != NETIO_PROC, HB_FALSE );
|
||||
if( fResult && ( iMsg == NETIO_FUNC || iMsg == NETIO_FUNCCTRL ) )
|
||||
{
|
||||
HB_SIZE nResult = HB_GET_LE_UINT32( &msgbuf[ 4 ] );
|
||||
HB_SIZE nResult = HB_GET_LE_UINT32( &msgbuf[ 4 ] ), nRecv = 0;
|
||||
|
||||
if( nResult > 0 )
|
||||
{
|
||||
PHB_ITEM pItem;
|
||||
PHB_ITEM pItem = NULL;
|
||||
|
||||
if( nResult > size && buffer )
|
||||
{
|
||||
@@ -1244,14 +1244,12 @@ static HB_BOOL s_netio_procexec( int iMsg, int iType )
|
||||
}
|
||||
if( buffer == NULL )
|
||||
buffer = ( char * ) hb_xgrab( nResult );
|
||||
if( nResult == ( HB_SIZE ) s_fileRecvAll( conn, buffer, ( long ) nResult ) )
|
||||
nRecv = s_fileRecvAll( conn, buffer, ( long ) nResult );
|
||||
if( nResult == nRecv )
|
||||
{
|
||||
data = buffer;
|
||||
pItem = hb_itemDeserialize( &data, &nResult );
|
||||
}
|
||||
else
|
||||
pItem = NULL;
|
||||
|
||||
if( pItem )
|
||||
{
|
||||
if( iMsg == NETIO_FUNCCTRL )
|
||||
@@ -1265,8 +1263,14 @@ static HB_BOOL s_netio_procexec( int iMsg, int iType )
|
||||
}
|
||||
else
|
||||
{
|
||||
conn->errcode = NETIO_ERR_WRONG_PARAM;
|
||||
hb_errRT_NETIO( EG_CORRUPTION, 1008, 0, NULL, HB_ERR_FUNCNAME );
|
||||
HB_ERRCODE errOsCode = 0;
|
||||
|
||||
if( nResult != nRecv )
|
||||
conn->errcode = errOsCode = hb_socketGetError();
|
||||
else
|
||||
conn->errcode = NETIO_ERR_WRONG_PARAM;
|
||||
|
||||
hb_errRT_NETIO( EG_CORRUPTION, 1008, errOsCode, NULL, HB_ERR_FUNCNAME );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1644,16 +1648,14 @@ static PHB_ITEM s_fileDirectory( PHB_FILE_FUNCS pFuncs, const char * pszDirSpec,
|
||||
hb_fsSetError( errCode );
|
||||
if( pDirArray == NULL )
|
||||
{
|
||||
if( nRecv != nResult )
|
||||
{
|
||||
conn->errcode = hb_socketGetError();
|
||||
hb_errRT_NETIO( EG_CORRUPTION, 1013, 0, NULL, HB_ERR_FUNCNAME );
|
||||
}
|
||||
HB_ERRCODE errOsCode = 0;
|
||||
|
||||
if( nResult != nRecv )
|
||||
conn->errcode = errOsCode = hb_socketGetError();
|
||||
else
|
||||
{
|
||||
conn->errcode = NETIO_ERR_WRONG_PARAM;
|
||||
hb_errRT_NETIO( EG_CORRUPTION, 1013, 0, NULL, HB_ERR_FUNCNAME );
|
||||
}
|
||||
|
||||
hb_errRT_NETIO( EG_CORRUPTION, 1013, errOsCode, NULL, HB_ERR_FUNCNAME );
|
||||
}
|
||||
}
|
||||
if( pBuffer )
|
||||
@@ -2055,7 +2057,7 @@ static char * s_fileLinkRead( PHB_FILE_FUNCS pFuncs, const char * pszFileName )
|
||||
if( nRecv != nResult )
|
||||
{
|
||||
conn->errcode = hb_socketGetError();
|
||||
hb_errRT_NETIO( EG_CORRUPTION, 1014, 0, NULL, HB_ERR_FUNCNAME );
|
||||
hb_errRT_NETIO( EG_CORRUPTION, 1014, conn->errcode, NULL, HB_ERR_FUNCNAME );
|
||||
}
|
||||
hb_fsSetError( errCode );
|
||||
}
|
||||
@@ -2488,7 +2490,7 @@ static HB_BOOL s_fileConfigure( PHB_FILE pFile, int iIndex, PHB_ITEM pValue )
|
||||
if( nRecv != nResult )
|
||||
{
|
||||
pFile->conn->errcode = hb_socketGetError();
|
||||
hb_errRT_NETIO( EG_CORRUPTION, 1015, 0, NULL, HB_ERR_FUNCNAME );
|
||||
hb_errRT_NETIO( EG_CORRUPTION, 1015, pFile->conn->errcode, NULL, HB_ERR_FUNCNAME );
|
||||
fResult = HB_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,6 +152,7 @@
|
||||
#define HB_GTI_REDRAWMAX 72 /* Maximum number of unchanged neighboring chars in redrawn line */
|
||||
#define HB_GTI_RESIZESTEP 73 /* Enable/Disable window resizing steps */
|
||||
#define HB_GTI_CLOSEMODE 74 /* Close event: 0 terminate application, >=1 generate HB_K_CLOSE, 2 disable close button */
|
||||
#define HB_GTI_MINIMIZED 75 /* Get/Set Window's Minimized status (supported by: GTQTC, GTXWC) */
|
||||
|
||||
/* Font weights */
|
||||
#define HB_GTI_FONTW_THIN 1
|
||||
|
||||
@@ -116,6 +116,9 @@ static Atom s_atomCutBuffer0;
|
||||
static Atom s_atomText;
|
||||
static Atom s_atomCompoundText;
|
||||
static Atom s_atomFullScreen;
|
||||
static Atom s_atomMaximizedX;
|
||||
static Atom s_atomMaximizedY;
|
||||
static Atom s_atomActivate;
|
||||
static Atom s_atomState;
|
||||
static Atom s_atomMotifHints;
|
||||
static Atom s_atomFrameExtends;
|
||||
@@ -153,7 +156,7 @@ typedef struct
|
||||
Window window;
|
||||
GC gc;
|
||||
Colormap colorsmap;
|
||||
WND_COLORS colors[16];
|
||||
WND_COLORS colors[ 16 ];
|
||||
Pixmap pm;
|
||||
Drawable drw;
|
||||
|
||||
@@ -192,6 +195,8 @@ typedef struct
|
||||
int iCloseMode;
|
||||
HB_BOOL fResizable;
|
||||
HB_BOOL fFullScreen;
|
||||
HB_BOOL fMaximized;
|
||||
HB_BOOL fMinimized;
|
||||
HB_BOOL fAltEnter;
|
||||
|
||||
/* mark & copy */
|
||||
@@ -2489,6 +2494,43 @@ static void hb_gt_xwc_FullScreen( PXWND_DEF wnd )
|
||||
SubstructureRedirectMask, &evt );
|
||||
}
|
||||
|
||||
static void hb_gt_xwc_MaximizeScreen( PXWND_DEF wnd )
|
||||
{
|
||||
XEvent evt;
|
||||
|
||||
memset( &evt, 0, sizeof( evt ) );
|
||||
evt.xclient.type = ClientMessage;
|
||||
evt.xclient.message_type = s_atomState;
|
||||
evt.xclient.display = wnd->dpy;
|
||||
evt.xclient.window = wnd->window;
|
||||
evt.xclient.format = 32;
|
||||
evt.xclient.data.l[ 0 ] = wnd->fMaximized ? 1 : 0;
|
||||
evt.xclient.data.l[ 1 ] = s_atomMaximizedX;
|
||||
evt.xclient.data.l[ 2 ] = s_atomMaximizedY;
|
||||
|
||||
XSendEvent( wnd->dpy, DefaultRootWindow( wnd->dpy ), False,
|
||||
SubstructureRedirectMask, &evt );
|
||||
}
|
||||
|
||||
/* after de-iconifying set input focus back */
|
||||
static void hb_gt_xwc_ActivateScreen( PXWND_DEF wnd )
|
||||
{
|
||||
XEvent evt;
|
||||
|
||||
memset( &evt, 0, sizeof( evt ) );
|
||||
evt.xclient.type = ClientMessage;
|
||||
evt.xclient.message_type = s_atomActivate;
|
||||
evt.xclient.display = wnd->dpy;
|
||||
evt.xclient.window = wnd->window;
|
||||
evt.xclient.format = 32;
|
||||
evt.xclient.data.l[ 0 ] = 1;
|
||||
evt.xclient.data.l[ 1 ] = CurrentTime;
|
||||
evt.xclient.data.l[ 2 ] = wnd->window;
|
||||
|
||||
XSendEvent( wnd->dpy, DefaultRootWindow( wnd->dpy ), False,
|
||||
SubstructureRedirectMask, &evt );
|
||||
}
|
||||
|
||||
/* *********************************************************************** */
|
||||
|
||||
/* X11 Motif WM Properties and Resources */
|
||||
@@ -4472,6 +4514,8 @@ static PXWND_DEF hb_gt_xwc_CreateWndDef( PHB_GT pGT )
|
||||
wnd->fResizable = HB_TRUE;
|
||||
wnd->fWinResize = HB_FALSE;
|
||||
wnd->fFullScreen = HB_FALSE;
|
||||
wnd->fMaximized = HB_FALSE;
|
||||
wnd->fMinimized = HB_FALSE;
|
||||
wnd->fAltEnter = HB_FALSE;
|
||||
#if defined( HB_XWC_USE_LOCALE )
|
||||
wnd->fUTF8key = hb_gt_xwc_isUTF8();
|
||||
@@ -4554,6 +4598,9 @@ static HB_BOOL hb_gt_xwc_ConnectX( PXWND_DEF wnd, HB_BOOL fExit )
|
||||
s_atomText = XInternAtom( wnd->dpy, "TEXT", False );
|
||||
s_atomCompoundText = XInternAtom( wnd->dpy, "COMPOUND_TEXT", False );
|
||||
s_atomFullScreen = XInternAtom( wnd->dpy, "_NET_WM_STATE_FULLSCREEN", False );
|
||||
s_atomMaximizedY = XInternAtom( wnd->dpy, "_NET_WM_STATE_MAXIMIZED_VERT", False );
|
||||
s_atomMaximizedX = XInternAtom( wnd->dpy, "_NET_WM_STATE_MAXIMIZED_HORZ", False );
|
||||
s_atomActivate = XInternAtom( wnd->dpy, "_NET_ACTIVE_WINDOW", False );
|
||||
s_atomState = XInternAtom( wnd->dpy, "_NET_WM_STATE", False );
|
||||
s_atomMotifHints = XInternAtom( wnd->dpy, "_MOTIF_WM_HINTS", False );
|
||||
s_atomFrameExtends = XInternAtom( wnd->dpy, "_NET_FRAME_EXTENTS", False );
|
||||
@@ -4746,6 +4793,10 @@ static void hb_gt_xwc_CreateWindow( PXWND_DEF wnd )
|
||||
hb_gt_xwc_FullScreen( wnd );
|
||||
wnd->fResizable = HB_TRUE;
|
||||
}
|
||||
else if( wnd->fMinimized )
|
||||
XIconifyWindow( wnd->dpy, wnd->window, DefaultScreen( wnd->dpy ) );
|
||||
else if( wnd->fMaximized )
|
||||
hb_gt_xwc_MaximizeScreen( wnd );
|
||||
else if( wnd->iNewPosX >= 0 && wnd->iNewPosY >= 0 )
|
||||
XMoveWindow( wnd->dpy, wnd->window, wnd->iNewPosX, wnd->iNewPosY );
|
||||
|
||||
@@ -5293,6 +5344,8 @@ static HB_BOOL hb_gt_xwc_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
hb_strfree( hString );
|
||||
|
||||
wnd->fDspTitle = HB_TRUE;
|
||||
if( wnd->window )
|
||||
hb_gt_xwc_ProcessMessages( wnd, HB_FALSE );
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -5367,6 +5420,41 @@ static HB_BOOL hb_gt_xwc_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
wnd->fAltEnter = hb_itemGetL( pInfo->pNewVal );
|
||||
break;
|
||||
|
||||
case HB_GTI_MAXIMIZED:
|
||||
pInfo->pResult = hb_itemPutL( pInfo->pResult, wnd->fMaximized );
|
||||
if( hb_itemType( pInfo->pNewVal ) & HB_IT_LOGICAL )
|
||||
{
|
||||
if( hb_itemGetL( pInfo->pNewVal ) != wnd->fMaximized )
|
||||
{
|
||||
wnd->fMaximized = hb_itemGetL( pInfo->pNewVal );
|
||||
if( wnd->fInit )
|
||||
hb_gt_xwc_MaximizeScreen( wnd );
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case HB_GTI_MINIMIZED:
|
||||
pInfo->pResult = hb_itemPutL( pInfo->pResult, wnd->fMinimized );
|
||||
if( hb_itemType( pInfo->pNewVal ) & HB_IT_LOGICAL )
|
||||
{
|
||||
if( hb_itemGetL( pInfo->pNewVal ) != wnd->fMinimized )
|
||||
{
|
||||
wnd->fMinimized = hb_itemGetL( pInfo->pNewVal );
|
||||
if( wnd->fInit )
|
||||
{
|
||||
if( wnd->fMinimized )
|
||||
XIconifyWindow( wnd->dpy, wnd->window, DefaultScreen( wnd->dpy ) );
|
||||
else
|
||||
{
|
||||
XMapWindow( wnd->dpy, wnd->window );
|
||||
XRaiseWindow( wnd->dpy, wnd->window );
|
||||
hb_gt_xwc_ActivateScreen( wnd );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case HB_GTI_CLOSABLE:
|
||||
pInfo->pResult = hb_itemPutL( pInfo->pResult, wnd->iCloseMode == 0 );
|
||||
if( ( hb_itemType( pInfo->pNewVal ) & HB_IT_LOGICAL ) &&
|
||||
|
||||
Reference in New Issue
Block a user