Author: rmottola
Date: Thu Mar 10 17:45:36 2016
New Revision: 39519

URL: http://svn.gna.org/viewcvs/gnustep?rev=39519&view=rev
Log:
Traverse links to get thumbnails inside linked folders, mark direct symlinked 
folders and images with a link icon

Modified:
    apps/gworkspace/trunk/ChangeLog
    apps/gworkspace/trunk/FSNode/FSNodeRepIcons.m

Modified: apps/gworkspace/trunk/ChangeLog
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/gworkspace/trunk/ChangeLog?rev=39519&r1=39518&r2=39519&view=diff
==============================================================================
--- apps/gworkspace/trunk/ChangeLog     (original)
+++ apps/gworkspace/trunk/ChangeLog     Thu Mar 10 17:45:36 2016
@@ -1,3 +1,8 @@
+2016-03-10 Riccardo Mottola <[email protected]>
+
+       * FSNode/FSNodeRepIcons.m (iconOfSize: forNode:)
+       Traverse links to get thumbnails inside linked folders, mark direct 
symlinked folders and images with a link icon.
+
 2016-03-10  Wolfgang Lux  <[email protected]>
 
        * Inspector/aclocal.m4 (AC_CHECK_PDFKIT):

Modified: apps/gworkspace/trunk/FSNode/FSNodeRepIcons.m
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/gworkspace/trunk/FSNode/FSNodeRepIcons.m?rev=39519&r1=39518&r2=39519&view=diff
==============================================================================
--- apps/gworkspace/trunk/FSNode/FSNodeRepIcons.m       (original)
+++ apps/gworkspace/trunk/FSNode/FSNodeRepIcons.m       Thu Mar 10 17:45:36 2016
@@ -157,7 +157,7 @@
              key = nodepath;
            }
        }   
-    
+
       if (key != nil)
        {
          icon = [self cachedIconOfSize: size forKey: key];
@@ -168,7 +168,19 @@
                {
                  baseIcon = [ws iconForFile: nodepath];
                }
-    
+
+             if ([node isLink])
+               {
+                 NSImage *linkIcon;
+                 
+                 linkIcon = [NSImage imageNamed:@"common_linkCursor"];
+                 baseIcon = [baseIcon copy];
+                 [baseIcon lockFocus];
+                 [linkIcon compositeToPoint:NSMakePoint(0,0) 
operation:NSCompositeSourceOver];
+                 [baseIcon unlockFocus];
+                 [baseIcon autorelease];
+               }
+  
              icon = [self cachedIconOfSize: size forKey: key addBaseIcon: 
baseIcon];
            }
        }
@@ -178,10 +190,25 @@
     { // NOT DIRECTORY
       if (usesThumbnails)
        {
-         icon = [self thumbnailForPath: nodepath];
+         NSString *realPath;
+
+         realPath = [nodepath stringByResolvingSymlinksInPath];
+         icon = [self thumbnailForPath: realPath];
       
          if (icon) {
            NSSize icnsize = [icon size];
+
+           if ([node isLink])
+             {
+               NSImage *linkIcon;
+               
+               linkIcon = [NSImage imageNamed:@"common_linkCursor"];
+               icon = [icon copy];
+               [icon lockFocus];
+               [linkIcon compositeToPoint:NSMakePoint(0,0) 
operation:NSCompositeSourceOver];
+               [icon unlockFocus];
+               [icon autorelease];
+             }     
       
            if ((icnsize.width > size) || (icnsize.height > size))
              {
@@ -208,6 +235,17 @@
          if (icon == nil)
            {
              baseIcon = [ws iconForFile: nodepath];
+             if ([node isLink])
+               {
+                 NSImage *linkIcon;
+                 
+                 linkIcon = [NSImage imageNamed:@"common_linkCursor"];
+                 baseIcon = [baseIcon copy];
+                 [baseIcon lockFocus];
+                 [linkIcon compositeToPoint:NSMakePoint(0,0) 
operation:NSCompositeSourceOver];
+                 [baseIcon unlockFocus];
+                 [baseIcon autorelease];
+               }
              icon = [self cachedIconOfSize: size forKey: key addBaseIcon: 
baseIcon];
            }
        }      
@@ -224,7 +262,7 @@
        icon = [self resizedIcon: icon ofSize: size];
       }  
     }
-  
+
   return icon;
 }
 


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to