Ignore:
Timestamp:
May 18, 2006, 3:41:24 PM (15 years ago)
Author:
Eugene Romanenko
Message:

implemented D&D into view window

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Lucide/SOURCE/gui/docViewer.cpp

    r23 r25  
    1212#include "docViewer.h"
    1313#include "progressDlg.h"
     14#include "pluginman.h"
    1415#include "luutils.h"
    1516#include "lucide_res.h"
     
    13781379}
    13791380
     1381
     1382// handles DM_DRAGOVER
     1383MRESULT DocumentViewer::wmDragOver( PDRAGINFO dragInfo )
     1384{
     1385    PDRAGITEM dragItem;
     1386    USHORT    usOp, usIndicator;
     1387
     1388    usOp = 0;
     1389    usIndicator = DOR_NODROPOP;
     1390
     1391    DrgAccessDraginfo( dragInfo );
     1392
     1393    if ( dragInfo->usOperation == DO_DEFAULT )
     1394    {
     1395        dragItem = DrgQueryDragitemPtr( dragInfo, 0 );
     1396        if ( DrgQueryDragitemCount( dragInfo ) == 1 )
     1397        {
     1398            if ( DrgVerifyRMF( dragItem, "DRM_OS2FILE", NULL ) &&
     1399                 ( dragItem->hstrContainerName != NULLHANDLE ) &&
     1400                 ( dragItem->hstrSourceName != NULLHANDLE ) )
     1401            {
     1402                char fname[ CCHMAXPATHCOMP ] = "";
     1403                DrgQueryStrName( dragItem->hstrSourceName, CCHMAXPATHCOMP, fname );
     1404                char *ext = strrchr( fname, '.' );
     1405                if ( ext != NULL ) {
     1406                    if ( pluginMan->createDocumentForExt( ext + 1, true ) != NULL ) {
     1407                        usIndicator = DOR_DROP;
     1408                        usOp = DO_UNKNOWN;
     1409                    }
     1410                }
     1411            }
     1412        }
     1413    }
     1414
     1415    DrgFreeDraginfo( dragInfo );
     1416    return MRFROM2SHORT( usIndicator, usOp );
     1417}
     1418
     1419
     1420// handles DM_DROP
     1421void DocumentViewer::wmDrop( PDRAGINFO dragInfo )
     1422{
     1423    PDRAGITEM dragItem;
     1424
     1425    DrgAccessDraginfo( dragInfo );
     1426    dragItem = DrgQueryDragitemPtr( dragInfo, 0 );
     1427
     1428    char fname[ CCHMAXPATHCOMP ] = "";
     1429    char fpath[ CCHMAXPATH ] = "";
     1430    DrgQueryStrName( dragItem->hstrSourceName, CCHMAXPATHCOMP, fname );
     1431    DrgQueryStrName( dragItem->hstrContainerName, CCHMAXPATH, fpath );
     1432    DrgFreeDraginfo( dragInfo );
     1433
     1434    strcat( fpath, fname );
     1435    Lucide::loadDocument( fpath );
     1436}
     1437
    13801438// static, window procedure
    13811439MRESULT EXPENTRY DocumentViewer::docViewProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
     
    13931451            return (MRESULT)FALSE;
    13941452        }
     1453
     1454        case DM_DRAGOVER:
     1455            return _this->wmDragOver( (PDRAGINFO)mp1 );
     1456
     1457        case DM_DROP:
     1458            _this->wmDrop( (PDRAGINFO)mp1 );
     1459            return (MRESULT)FALSE;
    13951460
    13961461        case WM_ERASEBACKGROUND:
Note: See TracChangeset for help on using the changeset viewer.