Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        menus.c text.c 


Log Message:
Simplify MenuDrawItem(). Fixes a number of menu drawing issues.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/menus.c,v
retrieving revision 1.142
retrieving revision 1.143
diff -u -3 -r1.142 -r1.143
--- menus.c     30 Jun 2004 13:04:18 -0000      1.142
+++ menus.c     4 Jul 2004 13:27:42 -0000       1.143
@@ -840,118 +840,76 @@
 static void
 MenuDrawItem(Menu * m, MenuItem * mi, char shape)
 {
-   GC                  gc;
-   XGCValues           gcv;
-   unsigned int        w, h;
-   int                 x, y;
-   char                pq;
    PmapMask           *mi_pmm;
+   char                pq;
 
    EDBUG(5, "MenuDrawItem");
    pq = Mode.queue_up;
    Mode.queue_up = 0;
 
    mi_pmm = &(mi->pmm[(int)(mi->state)]);
+
    if (m->redraw)
       FreePmapMask(mi_pmm);
-   if (!mi_pmm->pmap)
-     {
-       if (mi->text)
-         {
-            GetWinWH(mi->win, &w, &h);
-            GetWinXY(mi->win, &x, &y);
-            if (!m->style->use_item_bg)
-              {
-                 mi_pmm->type = 0;
-                 mi_pmm->pmap =
-                    ECreatePixmap(disp, mi->win, w, h, VRoot.depth);
-                 gc = XCreateGC(disp, m->pmm.pmap, 0, &gcv);
-                 XCopyArea(disp, m->pmm.pmap, mi_pmm->pmap, gc, x, y, w, h, 0,
-                           0);
-                 mi_pmm->mask = None;
-                 if ((mi->state != STATE_NORMAL) || (mi->child))
-                   {
-                      PmapMask            pmm;
 
-                      if (mi->child)
-                         IclassApplyCopy(m->style->sub_iclass, mi->win, w, h,
-                                         0, 0, mi->state, &pmm, 1,
-                                         ST_MENU_ITEM);
-                      else
-                         IclassApplyCopy(m->style->item_iclass, mi->win, w,
-                                         h, 0, 0, mi->state, &pmm, 1,
-                                         ST_MENU_ITEM);
-                      if (pmm.mask)
-                        {
-                           XSetClipMask(disp, gc, pmm.mask);
-                           XSetClipOrigin(disp, gc, 0, 0);
-                        }
-                      XCopyArea(disp, pmm.pmap, mi_pmm->pmap, gc, 0, 0, w, h,
-                                0, 0);
-                      FreePmapMask(&pmm);
-                   }
-                 XFreeGC(disp, gc);
-              }
-            else
-              {
-                 if (mi->child)
-                    IclassApplyCopy(m->style->sub_iclass, mi->win, w, h, 0,
-                                    0, mi->state, mi_pmm, 1, ST_MENU_ITEM);
-                 else
-                    IclassApplyCopy(m->style->item_iclass, mi->win, w, h, 0,
-                                    0, mi->state, mi_pmm, 1, ST_MENU_ITEM);
-              }
-         }
-     }
-
-   if ((m->style->tclass) && (mi->text))
+   if (!mi_pmm->pmap)
      {
-       TextDraw(m->style->tclass, mi_pmm->pmap, 0, 0, mi->state,
-                mi->text, mi->text_x, mi->text_y, mi->text_w, mi->text_h, 17,
-                m->style->tclass->justification);
-     }
+       GC                  gc;
+       XGCValues           gcv;
+       unsigned int        w, h;
+       int                 x, y;
+       int                 item_type;
+       ImageClass         *ic;
 
-   if (mi->text)
-     {
-       ESetWindowBackgroundPixmap(disp, mi->win, mi_pmm->pmap);
-       EShapeCombineMask(disp, mi->win, ShapeBounding, 0, 0, mi_pmm->mask,
-                         ShapeSet);
-       XClearWindow(disp, mi->win);
-     }
-   else
-     {
        GetWinWH(mi->win, &w, &h);
        GetWinXY(mi->win, &x, &y);
+
+       mi_pmm->type = 0;
+       mi_pmm->pmap = ECreatePixmap(disp, mi->win, w, h, VRoot.depth);
+       mi_pmm->mask = None;
+
+       ic = (mi->child) ? m->style->sub_iclass : m->style->item_iclass;
+       item_type = (mi->state != STATE_NORMAL) ? ST_MENU_ITEM : ST_MENU;
+
        if (!m->style->use_item_bg)
          {
+            gc = XCreateGC(disp, m->pmm.pmap, 0, &gcv);
+            XCopyArea(disp, m->pmm.pmap, mi_pmm->pmap, gc, x, y, w, h, 0, 0);
             if ((mi->state != STATE_NORMAL) || (mi->child))
               {
-                 IclassApply(m->style->item_iclass, mi->win, w, h, 0, 0,
-                             mi->state, 0, ST_MENU);
-              }
-            else
-              {
-                 ESetWindowBackgroundPixmap(disp, mi->win, ParentRelative);
-                 EShapeCombineMask(disp, mi->win, ShapeBounding, 0, 0, None,
-                                   ShapeSet);
-                 XClearWindow(disp, mi->win);
+                 PmapMask            pmm;
+
+                 IclassApplyCopy(ic, mi->win, w, h, 0, 0, mi->state, &pmm, 1,
+                                 item_type);
+                 if (pmm.mask)
+                   {
+                      XSetClipMask(disp, gc, pmm.mask);
+                      XSetClipOrigin(disp, gc, 0, 0);
+                   }
+                 XCopyArea(disp, pmm.pmap, mi_pmm->pmap, gc, 0, 0, w, h, 0, 0);
+                 FreePmapMask(&pmm);
               }
+            XFreeGC(disp, gc);
          }
        else
          {
-            if (mi->child)
-              {
-                 IclassApply(m->style->sub_iclass, mi->win, w, h, 0, 0,
-                             mi->state, 0, ST_MENU);
-              }
-            else
-              {
-                 IclassApply(m->style->item_iclass, mi->win, w, h, 0, 0,
-                             mi->state, 0, ST_MENU);
-              }
+            IclassApplyCopy(ic, mi_pmm->pmap, w, h, 0, 0, mi->state, mi_pmm, 1,
+                            item_type);
+         }
+
+       if (mi->text)
+         {
+            TextDraw(m->style->tclass, mi_pmm->pmap, 0, 0, mi->state,
+                     mi->text, mi->text_x, mi->text_y, mi->text_w, mi->text_h,
+                     17, m->style->tclass->justification);
          }
      }
 
+   ESetWindowBackgroundPixmap(disp, mi->win, mi_pmm->pmap);
+   EShapeCombineMask(disp, mi->win, ShapeBounding, 0, 0, mi_pmm->mask,
+                    ShapeSet);
+   XClearWindow(disp, mi->win);
+
    if ((shape) && (m->style->use_item_bg))
       PropagateShapes(m->win);
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/text.c,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -3 -r1.41 -r1.42
--- text.c      26 May 2004 21:40:03 -0000      1.41
+++ text.c      4 Jul 2004 13:27:42 -0000       1.42
@@ -355,7 +355,7 @@
 
    EDBUG(4, "TextDraw");
 
-   if (!text)
+   if (!tclass || !text)
       EDBUG_RETURN_;
 
    ts = TextGetState(tclass, active, sticky, state);




-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 - 
digital self defense, top technical experts, no vendor pitches, 
unmatched networking opportunities. Visit www.blackhat.com
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to