Index: libs/libmyth/xmlparse.cpp
===================================================================
--- libs/libmyth/xmlparse.cpp	(revision 15090)
+++ libs/libmyth/xmlparse.cpp	(working copy)
@@ -946,6 +946,8 @@
     QString normalImage = "";
     QString selectedImage = "";
     QString highlightedImage = "";
+    QString folderNormalImage = "";
+    QString folderHighlightImage = "";
 
     QString name = element.attribute("name", "");
     if (name.isNull() || name.isEmpty())
@@ -1071,6 +1073,16 @@
                 {
                     highlightedImage = file;
                 }
+                
+                if (imgname.lower() == "folderhighlighted")
+                {
+                	folderHighlightImage = file;
+                }
+                
+                if (imgname.lower() == "foldernormal")
+                {
+                	folderNormalImage = file;
+                }
 
                 if (imgname.lower() == "default")
                 {
@@ -1124,6 +1136,8 @@
     grid->setNormalImage(normalImage);
     grid->setSelectedImage(selectedImage);
     grid->setHighlightedImage(highlightedImage);
+    grid->setFolderNormalImage(folderNormalImage);
+    grid->setFolderHighlightImage(folderHighlightImage);
 
     int jst = Qt::AlignLeft | Qt::AlignTop;
     if (multiline == true)
Index: libs/libmyth/uitypes.cpp
===================================================================
--- libs/libmyth/uitypes.cpp	(revision 15090)
+++ libs/libmyth/uitypes.cpp	(working copy)
@@ -2011,6 +2011,7 @@
 {
     allData->append(item);
     itemCount = allData->count();
+    lastRow = QMAX((int) ceilf((float) itemCount/columnCount) - 1, 0);
 }
 
 void UIImageGridType::updateItem(ImageGridItem *item)
@@ -2246,20 +2247,33 @@
 {
     QRect r(xpos, ypos, cellWidth, cellHeight);
 
-    if (curPos == currentItem)
+    ImageGridItem* currentImageItem = this->getItemAt(curPos);
+    if(currentImageItem->folder && curPos == currentItem){
+    	/// highlighted
+    	if (m_debug == true)
+    		p->setPen(Qt::yellow);
+    	if (folderHighlightPixmap)
+    		p->drawPixmap(xpos, ypos, *folderHighlightPixmap);
+    }else if(currentImageItem->folder && curPos != currentItem){
+    	if (m_debug == true)
+    		p->setPen(Qt::green);
+    	if (folderNormalPixmap)
+    		p->drawPixmap(xpos, ypos, *folderNormalPixmap);
+    }
+    else if (curPos == currentItem)
     {
-        // highlighted
-        if (m_debug == true)
-            p->setPen(Qt::yellow);
-        if (highlightedPixmap)
-            p->drawPixmap(xpos, ypos, *highlightedPixmap);
+    	// highlighted
+    	if (m_debug == true)
+    		p->setPen(Qt::yellow);
+    	if (highlightedPixmap)
+    		p->drawPixmap(xpos, ypos, *highlightedPixmap);
     }
     else
     {
-        if (m_debug == true)
-            p->setPen(Qt::green);
-        if (normalPixmap)
-            p->drawPixmap(xpos, ypos, *normalPixmap);
+    	if (m_debug == true)
+    		p->setPen(Qt::green);
+    	if (normalPixmap)
+    		p->drawPixmap(xpos, ypos, *normalPixmap);
     }
 
     // draw item image
@@ -2439,6 +2453,10 @@
     defaultPixmap = createScaledPixmap(defaultImage, imgWidth - 2 * sw,
                                        imgHeight - 2 * sh,
                                        QImage::ScaleMin);
+    folderNormalPixmap = createScaledPixmap(folderNormalImage, imgWidth, imgHeight,
+    											QImage::ScaleFree);
+    folderHighlightPixmap =	createScaledPixmap(folderHighlightImage, imgWidth, imgHeight,
+    	                                        QImage::ScaleFree);
 }
 
 void UIImageGridType::calculateScreenArea(void)
Index: libs/libmyth/uitypes.h
===================================================================
--- libs/libmyth/uitypes.h	(revision 15090)
+++ libs/libmyth/uitypes.h	(working copy)
@@ -342,12 +342,13 @@
 class ImageGridItem
 {
     public:
-        ImageGridItem(const QString &text, QPixmap *pixmap, bool selected, void *data)
+        ImageGridItem(const QString &text, QPixmap *pixmap, bool selected, void *data, bool folder=false)
         {
             this->text = text;
             this->pixmap = pixmap;
             this->selected = selected;
             this->data = data;
+            this->folder = folder;
         }
 
         ImageGridItem(const ImageGridItem &o)
@@ -380,6 +381,7 @@
         QPixmap *pixmap;
         bool selected;
         void *data;
+        bool folder;
 };
 
 class MPUBLIC UIImageGridType : public UIType
@@ -413,6 +415,8 @@
         void setSelectedImage(QString filename) { selectedImage = filename; }
         void setHighlightedImage(QString filename) { highlightedImage = filename; }
         void setDefaultImage(QString filename) { defaultImage = filename; }
+        void setFolderNormalImage(QString filename){folderNormalImage = filename;}
+        void setFolderHighlightImage(QString filename){folderHighlightImage = filename;}
         void setShowChecks(bool value) { showCheck = value; }
         void setShowScrollArrows(bool value) { showScrollArrows = value; }
         void setShowSelected(bool value) { showSelected = value; }
@@ -489,11 +493,15 @@
         QString highlightedImage;
         QString selectedImage;
         QString defaultImage;
+        QString folderNormalImage;
+        QString folderHighlightImage;
 
         QPixmap *normalPixmap;
         QPixmap *highlightedPixmap;
         QPixmap *selectedPixmap;
         QPixmap *defaultPixmap;
+        QPixmap *folderNormalPixmap;
+        QPixmap *folderHighlightPixmap;
 
         QPixmap *checkNonPixmap;
         QPixmap *checkHalfPixmap;
