diff -urN guichan-0.8.1.orig/include/guichan/allegro/allegrographics.hpp guichan-0.8.1/include/guichan/allegro/allegrographics.hpp
--- guichan-0.8.1.orig/include/guichan/allegro/allegrographics.hpp	2009-01-04 08:40:19.410738242 +0100
+++ guichan-0.8.1/include/guichan/allegro/allegrographics.hpp	2009-01-04 09:45:18.583571894 +0100
@@ -61,8 +61,10 @@
     {
     public:
 
+#ifndef __HAIKU__
         // Needed so that drawImage(gcn::Image *, int, int) is visible.
         using Graphics::drawImage;
+#endif
 
         /**
          * Constructor.
diff -urN guichan-0.8.1.orig/include/guichan/graphics.hpp guichan-0.8.1/include/guichan/graphics.hpp
--- guichan-0.8.1.orig/include/guichan/graphics.hpp	2009-01-04 08:40:19.414754836 +0100
+++ guichan-0.8.1/include/guichan/graphics.hpp	2009-01-04 08:40:46.026740200 +0100
@@ -46,6 +46,7 @@
 
 #include <iosfwd>
 #include <stack>
+#include <string>
 
 #include "guichan/cliprectangle.hpp"
 #include "guichan/platform.hpp"
diff -urN guichan-0.8.1.orig/include/guichan/opengl/openglgraphics.hpp guichan-0.8.1/include/guichan/opengl/openglgraphics.hpp
--- guichan-0.8.1.orig/include/guichan/opengl/openglgraphics.hpp	2009-01-04 08:40:19.362739150 +0100
+++ guichan-0.8.1/include/guichan/opengl/openglgraphics.hpp	2009-01-04 09:44:49.690740883 +0100
@@ -57,8 +57,10 @@
     {
     public:
 
+#ifndef __HAIKU__
         // Needed so that drawImage(gcn::Image *, int, int) is visible.
         using Graphics::drawImage;
+#endif
 
         /**
          * Constructor.
diff -urN guichan-0.8.1.orig/include/guichan/sdl/sdlgraphics.hpp guichan-0.8.1/include/guichan/sdl/sdlgraphics.hpp
--- guichan-0.8.1.orig/include/guichan/sdl/sdlgraphics.hpp	2009-01-04 08:40:19.198743050 +0100
+++ guichan-0.8.1/include/guichan/sdl/sdlgraphics.hpp	2009-01-04 09:45:40.823780346 +0100
@@ -62,8 +62,10 @@
     {
     public:
 
+#ifndef __HAIKU__
         // Needed so that drawImage(gcn::Image *, int, int) is visible.
         using Graphics::drawImage;
+#endif
 
         /**
          * Constructor.
diff -urN guichan-0.8.1.orig/src/focushandler.cpp guichan-0.8.1/src/focushandler.cpp
--- guichan-0.8.1.orig/src/focushandler.cpp	2009-01-04 08:40:19.042743848 +0100
+++ guichan-0.8.1/src/focushandler.cpp	2009-01-04 10:01:18.618746470 +0100
@@ -94,7 +94,7 @@
         
         if (oldFocused != widget)
         {
-            mFocusedWidget = mWidgets.at(toBeFocusedIndex);
+            mFocusedWidget = mWidgets[toBeFocusedIndex];
             
             if (oldFocused != NULL)
             {
@@ -102,7 +102,7 @@
                 distributeFocusLostEvent(focusEvent);
             }
             
-            Event focusEvent(mWidgets.at(toBeFocusedIndex));
+            Event focusEvent(mWidgets[toBeFocusedIndex]);
             distributeFocusGainedEvent(focusEvent);
         }        
     }
@@ -203,11 +203,11 @@
                 return;
             }
         }
-        while (!mWidgets.at(focusedWidget)->isFocusable());
+        while (!mWidgets[focusedWidget]->isFocusable());
 
         if (focusedWidget >= 0)
         {
-            mFocusedWidget = mWidgets.at(focusedWidget);
+            mFocusedWidget = mWidgets[focusedWidget];
 
             Event focusEvent(mFocusedWidget);
             distributeFocusGainedEvent(focusEvent);
@@ -215,7 +215,7 @@
 
         if (focused >= 0)
         {
-            Event focusEvent(mWidgets.at(focused));
+            Event focusEvent(mWidgets[focused]);
             distributeFocusLostEvent(focusEvent);
         }
     }
@@ -264,18 +264,18 @@
                 return;
             }
         }
-        while (!mWidgets.at(focusedWidget)->isFocusable());
+        while (!mWidgets[focusedWidget]->isFocusable());
 
         if (focusedWidget >= 0)
         {
-            mFocusedWidget = mWidgets.at(focusedWidget);
+            mFocusedWidget = mWidgets[focusedWidget];
             Event focusEvent(mFocusedWidget);
             distributeFocusGainedEvent(focusEvent);
         }
 
         if (focused >= 0)
         {
-            Event focusEvent(mWidgets.at(focused));
+            Event focusEvent(mWidgets[focused]);
             distributeFocusLostEvent(focusEvent);
         }
     }
@@ -404,10 +404,10 @@
                 return;
             }
 
-            if (mWidgets.at(focusedWidget)->isFocusable() &&
-                mWidgets.at(focusedWidget)->isTabInEnabled() &&
+            if (mWidgets[focusedWidget]->isFocusable() &&
+                mWidgets[focusedWidget]->isTabInEnabled() &&
                 (mModalFocusedWidget == NULL ||
-                 mWidgets.at(focusedWidget)->isModalFocused()))
+                 mWidgets[focusedWidget]->isModalFocused()))
             {
                 done = true;
             }
@@ -416,14 +416,14 @@
 
         if (focusedWidget >= 0)
         {
-            mFocusedWidget = mWidgets.at(focusedWidget);
+            mFocusedWidget = mWidgets[focusedWidget];
             Event focusEvent(mFocusedWidget);
             distributeFocusGainedEvent(focusEvent);
         }
 
         if (focused >= 0)
         {
-            Event focusEvent(mWidgets.at(focused));
+            Event focusEvent(mWidgets[focused]);
             distributeFocusLostEvent(focusEvent);
         }
     }
@@ -481,10 +481,10 @@
                 return;
             }
 
-            if (mWidgets.at(focusedWidget)->isFocusable() &&
-                mWidgets.at(focusedWidget)->isTabInEnabled() &&
+            if (mWidgets[focusedWidget]->isFocusable() &&
+                mWidgets[focusedWidget]->isTabInEnabled() &&
                 (mModalFocusedWidget == NULL ||
-                 mWidgets.at(focusedWidget)->isModalFocused()))
+                 mWidgets[focusedWidget]->isModalFocused()))
             {
                 done = true;
             }
@@ -493,14 +493,14 @@
 
         if (focusedWidget >= 0)
         {
-            mFocusedWidget = mWidgets.at(focusedWidget);
+            mFocusedWidget = mWidgets[focusedWidget];
             Event focusEvent(mFocusedWidget);
             distributeFocusGainedEvent(focusEvent);
         }
 
         if (focused >= 0)
         {
-            Event focusEvent(mWidgets.at(focused));
+            Event focusEvent(mWidgets[focused]);
             distributeFocusLostEvent(focusEvent);
         }
     }
