rnd-19990124-2
[rocksndiamonds.git] / src / buttons.c
index 721a8335b47a7d899595d4f7720f26582b2f4a4a..a55f38d9cbb62706ed6a9fb437f1db19da97796d 100644 (file)
@@ -1658,33 +1658,7 @@ static struct GadgetInfo *getGadgetInfoFromMousePosition(int mx, int my)
     if (gi->mapped &&
        mx >= gi->x && mx < gi->x + gi->width &&
        my >= gi->y && my < gi->y + gi->height)
-    {
-
-#if 0
-      if (gi->type & GD_TYPE_SCROLLBAR)
-      {
-       int mpos, gpos;
-
-       if (gi->type == GD_TYPE_SCROLLBAR_HORIZONTAL)
-       {
-         mpos = mx;
-         gpos = gi->x;
-       }
-       else
-       {
-         mpos = my;
-         gpos = gi->y;
-       }
-
-       if (mpos >= gpos + gi->scrollbar.position &&
-           mpos < gpos + gi->scrollbar.position + gi->scrollbar.size)
-         break;
-      }
-      else
-#endif
-
        break;
-    }
 
     gi = gi->next;
   }
@@ -1847,6 +1821,27 @@ struct GadgetInfo *CreateGadget(int first_tag, ...)
        new_gadget->design_border = va_arg(ap, int);
        break;
 
+      case GDI_DECORATION_DESIGN:
+       new_gadget->deco.design.pixmap = va_arg(ap, Pixmap);
+       new_gadget->deco.design.x = va_arg(ap, int);
+       new_gadget->deco.design.y = va_arg(ap, int);
+       break;
+
+      case GDI_DECORATION_POSITION:
+       new_gadget->deco.x = va_arg(ap, int);
+       new_gadget->deco.y = va_arg(ap, int);
+       break;
+
+      case GDI_DECORATION_SIZE:
+       new_gadget->deco.width = va_arg(ap, int);
+       new_gadget->deco.height = va_arg(ap, int);
+       break;
+
+      case GDI_DECORATION_SHIFTING:
+       new_gadget->deco.xshift = va_arg(ap, int);
+       new_gadget->deco.yshift = va_arg(ap, int);
+       break;
+
       case GDI_EVENT_MASK:
        new_gadget->event_mask = va_arg(ap, unsigned long);
        break;
@@ -2025,6 +2020,12 @@ static void DrawGadget(struct GadgetInfo *gi, boolean pressed, boolean direct)
     case GD_TYPE_RADIO_BUTTON:
       XCopyArea(display, gd->pixmap, drawto, gc,
                gd->x, gd->y, gi->width, gi->height, gi->x, gi->y);
+      if (gi->deco.design.pixmap)
+       XCopyArea(display, gi->deco.design.pixmap, drawto, gc,
+                 gi->deco.design.x, gi->deco.design.y,
+                 gi->deco.width, gi->deco.height,
+                 gi->x + gi->deco.x + (pressed ? gi->deco.xshift : 0),
+                 gi->y + gi->deco.y + (pressed ? gi->deco.yshift : 0));
       break;
 
     case GD_TYPE_TEXTINPUT_ALPHANUMERIC: