Ignore:
Timestamp:
Mar 6, 2007, 8:47:20 PM (18 years ago)
Author:
cinc
Message:

WC2007 patches for drag and drop implementation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/desktop/class_c/wpfolder.c

    r240 r241  
    3333* ***** END LICENSE BLOCK ***** */
    3434/*
    35  * This file was generated by orbit-idl-2 for Voyager
    36  *
    37  *
    3835 * And remember, phase 3 is near...
    3936 */
     
    7774#include "helper.h"
    7875#include "exception.h"
     76
     77#include "nomdraginfo.h"
    7978
    8079typedef struct _FLDRGTREEVALUE
     
    111110/*************** Local vars ************************************/
    112111
     112/* This ID is used as a namespace */
    113113static nomId WPFolderNomId;
    114114
     
    520520  WPFolderWindow_wpSetWindowTitle(wpFldrWindow, WPFolder_wpQueryTitle(nomSelf, NULLHANDLE), NULLHANDLE);
    521521
    522 
    523522  /* Show the new window */
    524523  WPFolderWindow_show(wpFldrWindow, ev);
     
    527526}
    528527
     528
    529529NOM_Scope gulong NOMLINK impl_WPFolder_wpQueryFldrFlags(WPFolder* nomSelf, CORBA_Environment *ev)
    530530{
     
    533533  return g_atomic_int_get(&_ulFldrFlags);
    534534}
     535
    535536
    536537NOM_Scope CORBA_boolean NOMLINK impl_WPFolder_wpSetFldrFlags(WPFolder* nomSelf, const gulong ulFlags,
     
    547548  return TRUE;
    548549}
     550
     551
     552/* FIXME: type and name of containerHandle is wrong */
     553NOM_Scope gulong NOMLINK impl_WPFolder_wpDragOver(WPFolder* nomSelf, const gpointer containerHandle,
     554                                                  const gpointer pDragInfo, CORBA_Environment *ev)
     555{
     556  /* WPFolderData* nomThis=WPFolderGetData(nomSelf); */
     557  gulong ulNumItems, ulLoop;
     558  NOMDragInfo* nomDragInfo=(NOMDragInfo*)pDragInfo;
     559
     560  if(!nomIsObj(nomDragInfo))
     561    return DOR_NODROP;
     562
     563  ulNumItems=NOMDragInfo_queryNumDragItems(nomDragInfo, NULLHANDLE);
     564
     565  /* No items? */
     566  if(0==ulNumItems)
     567    return DOR_NODROP;
     568
     569  for(ulLoop=0; ulLoop<ulNumItems; ulLoop++)
     570    {
     571      /* We only accept desktop objects for now */
     572      if(!NOMDragInfo_queryIsItemWPObject(nomDragInfo, ulLoop, NULLHANDLE))
     573        return DOR_NODROP;
     574      /* No dropping on the source folder for now */
     575      if(nomSelf==(WPFolder*)
     576         NOMDragInfo_querySourceWPObject(nomDragInfo, ulLoop, NULLHANDLE))
     577        return DOR_NODROP;
     578      /* No dropping on itself */
     579      if(nomSelf==(WPFolder*)
     580         NOMDragInfo_queryWPObjectFromItemList(nomDragInfo, ulLoop, NULLHANDLE))
     581        return DOR_NODROP;
     582    }
     583
     584  return GDK_ACTION_MOVE;
     585 
     586#if 0
     587  WPFolder_wpDragOver_parent(nomSelf,  ev);
     588#endif
     589}
     590
    549591
    550592#if 0
     
    580622}
    581623
     624
    582625NOM_Scope void NOMLINK impl_WPFolder_wpInitData(WPFolder* nomSelf, CORBA_Environment *ev)
    583626{
     
    599642     which may be searched using the name of the file/directory */
    600643  //_fldrObjects=g_tree_new((GCompareFunc)strcmp);
    601   _fldrObjects=g_tree_new_full((GCompareFunc)strcmp, nomSelf, NULL, (GDestroyNotify) fldrCatchDuplicates);
    602 }
    603 
    604 
    605 /* orbit-idl-c-stubs.c, cs_output_stub line 347 */
    606 NOM_Scope gulong NOMLINK impl_WPFolder_wpDragOver(WPFolder* nomSelf, const gpointer containerHandle,
    607                                                   const gpointer pDragInfo, CORBA_Environment *ev)
     644  _fldrObjects=g_tree_new_full((GCompareFunc)strcmp, nomSelf, NULL,
     645                               (GDestroyNotify) fldrCatchDuplicates);
     646}
     647
     648NOM_Scope gulong NOMLINK impl_WPFolder_wpDrop(WPFolder* nomSelf,
     649                                              const gpointer containerHandle,
     650                                              const gpointer pDragInfo,
     651                                              CORBA_Environment *ev)
    608652{
    609653/* WPFolderData* nomThis=WPFolderGetData(nomSelf); */
    610 
    611   return GDK_ACTION_COPY;
    612  
     654  gulong ulNumItems, ulLoop;
     655  GdkDragAction gda;
     656
     657  NOMDragInfo* nomDragInfo=(NOMDragInfo*)pDragInfo;
     658
     659  g_message("%s", __FUNCTION__);
     660
     661  if(!nomIsObj(nomDragInfo))
     662    return 0;
     663
     664  ulNumItems=NOMDragInfo_queryNumDragItems(nomDragInfo, NULLHANDLE);
     665
     666  /* No items? */
     667  if(0==ulNumItems)
     668    return 0;
     669
     670  gda=NOMDragInfo_queryChosenDropAction(nomDragInfo, NULLHANDLE);
     671
     672  for(ulLoop=0; ulLoop<ulNumItems; ulLoop++)
     673    {
     674      WPObject* wpObject;
     675
     676      wpObject=NOMDragInfo_querySourceWPObject(nomDragInfo, ulLoop, NULLHANDLE);
     677      g_message("Source folder is: %s",
     678                NOMPath_queryCString(WPFolder_wpQueryFileName(wpObject, TRUE, NULLHANDLE),
     679                                     NULLHANDLE));
     680      wpObject=NOMDragInfo_queryWPObjectFromItemList(nomDragInfo, ulLoop, NULLHANDLE);
     681      g_message("Dropped object is: %s",
     682                NOMPath_queryCString(WPFolder_wpQueryFileName(wpObject, TRUE, NULLHANDLE),
     683                                     NULLHANDLE));
     684
     685      g_message("%s: drop action: %d", __FUNCTION__, gda);
     686
     687      wpObject=NOMDragInfo_queryWPObjectFromItemList(nomDragInfo, ulLoop, NULLHANDLE);
     688      switch(gda)
     689        {
     690        case GDK_ACTION_MOVE:
     691          {
     692            WPObject_wpMoveObject(wpObject, nomSelf, NULLHANDLE);
     693            break;
     694          }
     695        default:
     696          {
     697            WPObject_wpCopyObject(wpObject, nomSelf, FALSE, NULLHANDLE);
     698            break;
     699          }
     700        }
     701    }
     702
     703
     704
    613705#if 0
    614   /* orbit-idl-c-stubs.c, VoyagerWriteProtoForParentCall line 119 */
    615   WPFolder_wpDragOver_parent(nomSelf,  ev);
    616 #endif
    617 }
    618 
    619 
     706  WPFolder_wpDrop_parent(nomSelf,  ev);
     707#endif
     708  return 0;
     709}
     710
     711
     712
     713
     714
     715
     716
Note: See TracChangeset for help on using the changeset viewer.