diff --git a/src/apps/icon-o-matic/MainWindow.cpp b/src/apps/icon-o-matic/MainWindow.cpp
index 954380b76e..aa3218c614 100644
--- a/src/apps/icon-o-matic/MainWindow.cpp
+++ b/src/apps/icon-o-matic/MainWindow.cpp
@@ -624,8 +624,18 @@ MainWindow::_CreateGUI(BRect bounds)
layout->AddView(topSideView, 1, 0);
// canvas view
- fCanvasView = new CanvasView(BRect(0, 0, 200, 200));
- layout->AddView(fCanvasView, 1, 1);
+ BRect canvasBounds = BRect(0, 0, 200, 200);
+ fCanvasView = new CanvasView(canvasBounds);
+
+ // scroll view around canvas view
+ canvasBounds.bottom += B_H_SCROLL_BAR_HEIGHT;
+ canvasBounds.right += B_V_SCROLL_BAR_WIDTH;
+ ScrollView* canvasScrollView
+ = new ScrollView(fCanvasView, SCROLL_VERTICAL | SCROLL_HORIZONTAL
+ | SCROLL_NO_FRAME | SCROLL_VISIBLE_RECT_IS_CHILD_BOUNDS,
+ canvasBounds, "canvas scroll view",
+ B_FOLLOW_NONE, B_WILL_DRAW | B_FRAME_EVENTS);
+ layout->AddView(canvasScrollView, 1, 1);
// views along the top
diff --git a/src/apps/icon-o-matic/gui/StyleView.cpp b/src/apps/icon-o-matic/gui/StyleView.cpp
index 63cc2f64f2..e875cef168 100644
--- a/src/apps/icon-o-matic/gui/StyleView.cpp
+++ b/src/apps/icon-o-matic/gui/StyleView.cpp
@@ -8,6 +8,11 @@
#include "StyleView.h"
+#if __HAIKU__
+# include "GridLayout.h"
+# include "GroupLayout.h"
+# include "SpaceLayoutItem.h"
+#endif
#include
#include
#include
@@ -40,7 +45,11 @@ enum {
// constructor
StyleView::StyleView(BRect frame)
+#ifdef __HAIKU__
+ : BView("style view", 0),
+#else
: BView(frame, "style view", B_FOLLOW_LEFT | B_FOLLOW_TOP, 0),
+#endif
fCommandStack(NULL),
fCurrentColor(NULL),
fStyle(NULL),
@@ -49,10 +58,6 @@ StyleView::StyleView(BRect frame)
{
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
- frame.OffsetTo(B_ORIGIN);
- frame.InsetBy(5, 5);
- frame.bottom = frame.top + 15;
-
// style type
BMenu* menu = new BPopUpMenu("");
BMessage* message = new BMessage(MSG_SET_STYLE_TYPE);
@@ -61,6 +66,18 @@ StyleView::StyleView(BRect frame)
message = new BMessage(MSG_SET_STYLE_TYPE);
message->AddInt32("type", STYLE_TYPE_GRADIENT);
menu->AddItem(new BMenuItem("Gradient", message));
+
+#ifdef __HAIKU__
+ BGridLayout* layout = new BGridLayout(5, 5);
+ SetLayout(layout);
+
+ fStyleType = new BMenuField( "Style Type", menu, NULL);
+
+#else
+ frame.OffsetTo(B_ORIGIN);
+ frame.InsetBy(5, 5);
+ frame.bottom = frame.top + 15;
+
fStyleType = new BMenuField(frame, "style type", "Style Type",
menu, true);
AddChild(fStyleType);
@@ -70,7 +87,7 @@ StyleView::StyleView(BRect frame)
fStyleType->MenuBar()->GetPreferredSize(&width, &height);
fStyleType->MenuBar()->ResizeTo(width, height);
fStyleType->ResizeTo(frame.Width(), height + 6);
-
+#endif // __HAIKU__
// gradient type
menu = new BPopUpMenu("");
@@ -87,6 +104,27 @@ StyleView::StyleView(BRect frame)
message->AddInt32("type", GRADIENT_CONIC);
menu->AddItem(new BMenuItem("Conic", message));
+#if __HAIKU__
+ fGradientType = new BMenuField("Gradient Type", menu, NULL);
+
+ fGradientControl = new GradientControl(new BMessage(MSG_SET_COLOR),
+ this);
+
+ layout->AddItem(BSpaceLayoutItem::CreateVerticalStrut(3), 0, 0, 4);
+ layout->AddItem(BSpaceLayoutItem::CreateHorizontalStrut(3), 0, 1, 1, 3);
+
+ layout->AddItem(fStyleType->CreateLabelLayoutItem(), 1, 1);
+ layout->AddItem(fStyleType->CreateMenuBarLayoutItem(), 2, 1);
+
+ layout->AddItem(fGradientType->CreateLabelLayoutItem(), 1, 2);
+ layout->AddItem(fGradientType->CreateMenuBarLayoutItem(), 2, 2);
+
+ layout->AddView(fGradientControl, 1, 3, 2);
+
+ layout->AddItem(BSpaceLayoutItem::CreateHorizontalStrut(3), 3, 1, 1, 3);
+ layout->AddItem(BSpaceLayoutItem::CreateVerticalStrut(3), 0, 4, 4);
+
+#else // __HAIKU__
frame.OffsetBy(0, fStyleType->Frame().Height() + 6);
fGradientType = new BMenuField(frame, "gradient type", "Gradient Type",
menu, true);
@@ -110,8 +148,9 @@ StyleView::StyleView(BRect frame)
fGradientControl->MoveTo(frame.left, frame.top);
AddChild(fGradientControl);
- fGradientControl->SetEnabled(false);
+#endif // __HAIKU__
+ fGradientControl->SetEnabled(false);
fGradientControl->Gradient()->AddObserver(this);
}