visual as well. (This exists).
  Added MakeModal() to wxFrame.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2585 
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
     virtual void SetTitle( const wxString &title );
     virtual wxString GetTitle() const { return m_title; }
 
     virtual void SetTitle( const wxString &title );
     virtual wxString GetTitle() const { return m_title; }
 
+        // make the window modal (all other windows unresponsive)
+    virtual void MakeModal(bool modal = TRUE);
+
     virtual void SetIcon( const wxIcon &icon );
     virtual void Iconize( bool WXUNUSED(iconize)) { }
     virtual bool IsIconized() const { return FALSE; }
     virtual void SetIcon( const wxIcon &icon );
     virtual void Iconize( bool WXUNUSED(iconize)) { }
     virtual bool IsIconized() const { return FALSE; }
 
     virtual void SetTitle( const wxString &title );
     virtual wxString GetTitle() const { return m_title; }
 
     virtual void SetTitle( const wxString &title );
     virtual wxString GetTitle() const { return m_title; }
 
+        // make the window modal (all other windows unresponsive)
+    virtual void MakeModal(bool modal = TRUE);
+
     virtual void SetIcon( const wxIcon &icon );
     virtual void Iconize( bool WXUNUSED(iconize)) { }
     virtual bool IsIconized() const { return FALSE; }
     virtual void SetIcon( const wxIcon &icon );
     virtual void Iconize( bool WXUNUSED(iconize)) { }
     virtual bool IsIconized() const { return FALSE; }
 
     wxBitmap  *my_horse_png;
     wxBitmap  *my_horse_jpeg;
     wxBitmap  *my_horse_gif;
     wxBitmap  *my_horse_png;
     wxBitmap  *my_horse_jpeg;
     wxBitmap  *my_horse_gif;
+    wxBitmap  *my_horse_bmp;
     wxBitmap  *my_square;
     wxBitmap  *my_anti;
 
     wxBitmap  *my_square;
     wxBitmap  *my_anti;
 
   my_horse_png = (wxBitmap*) NULL;
   my_horse_jpeg = (wxBitmap*) NULL;
   my_horse_gif = (wxBitmap*) NULL;
   my_horse_png = (wxBitmap*) NULL;
   my_horse_jpeg = (wxBitmap*) NULL;
   my_horse_gif = (wxBitmap*) NULL;
+  my_horse_bmp = (wxBitmap*) NULL;
   my_square = (wxBitmap*) NULL;
   my_anti = (wxBitmap*) NULL;
 
   my_square = (wxBitmap*) NULL;
   my_anti = (wxBitmap*) NULL;
 
   else
     my_horse_gif = new wxBitmap( image.ConvertToBitmap() );
   
   else
     my_horse_gif = new wxBitmap( image.ConvertToBitmap() );
   
+  if ( !image.LoadFile( dir + wxString("horse.bmp"), wxBITMAP_TYPE_BMP ) )
+      wxLogError("Can't load BMP image");
+  else
+    my_horse_bmp = new wxBitmap( image.ConvertToBitmap() );
+  
   image.LoadFile( dir + wxString("test.png"), wxBITMAP_TYPE_PNG );
   my_square = new wxBitmap( image.ConvertToBitmap() );
   
   image.LoadFile( dir + wxString("test.png"), wxBITMAP_TYPE_PNG );
   my_square = new wxBitmap( image.ConvertToBitmap() );
   
   delete my_horse_png;
   delete my_horse_jpeg;
   delete my_horse_gif;
   delete my_horse_png;
   delete my_horse_jpeg;
   delete my_horse_gif;
   delete my_square;
   delete my_anti;
 }
   delete my_square;
   delete my_anti;
 }
   
   dc.DrawText( "GIF handler", 30, 595 );
   if (my_horse_gif && my_horse_gif->Ok()) dc.DrawBitmap( *my_horse_gif, 30, 610 );
   
   dc.DrawText( "GIF handler", 30, 595 );
   if (my_horse_gif && my_horse_gif->Ok()) dc.DrawBitmap( *my_horse_gif, 30, 610 );
+  
+  dc.DrawText( "BMP handler", 30, 815 );
+  if (my_horse_bmp && my_horse_bmp->Ok()) dc.DrawBitmap( *my_horse_bmp, 30, 830 );
 }
 
 void MyCanvas::CreateAntiAliasedBitmap()
 }
 
 void MyCanvas::CreateAntiAliasedBitmap()
 
                 int index = -1;
 
                 GdkColor *colors = cmap->colors;
                 int index = -1;
 
                 GdkColor *colors = cmap->colors;
+               else
+               {
+                   /* assume 8-bit true or static colors. this really
+                      exists. */
+                   GdkVisual* vis = gdk_colormap_get_visual( cmap );
+                   index = (r >> (5 - vis->red_prec)) << vis->red_shift;
+                   index |= (g >> (5 - vis->green_prec)) << vis->green_shift;
+                   index |= (b >> (5 - vis->blue_prec)) << vis->blue_shift;
+               }
+               
                 m_colorCube[ (r*1024) + (g*32) + b ] = index;
             }
         }
                 m_colorCube[ (r*1024) + (g*32) + b ] = index;
             }
         }
 
+void wxFrame::MakeModal( bool modal )
+{
+    if (modal)
+    {
+        gtk_grab_add( m_widget );
+        gtk_main();
+        gtk_grab_remove( m_widget );
+    }
+    else
+    {
+        gtk_main_quit();
+    }
+}
+
 void wxFrame::OnInternalIdle()
 {
     if (!m_sizeSet && GTK_WIDGET_REALIZED(m_wxwindow))
 void wxFrame::OnInternalIdle()
 {
     if (!m_sizeSet && GTK_WIDGET_REALIZED(m_wxwindow))
 
                 int index = -1;
 
                 GdkColor *colors = cmap->colors;
                 int index = -1;
 
                 GdkColor *colors = cmap->colors;
+               else
+               {
+                   /* assume 8-bit true or static colors. this really
+                      exists. */
+                   GdkVisual* vis = gdk_colormap_get_visual( cmap );
+                   index = (r >> (5 - vis->red_prec)) << vis->red_shift;
+                   index |= (g >> (5 - vis->green_prec)) << vis->green_shift;
+                   index |= (b >> (5 - vis->blue_prec)) << vis->blue_shift;
+               }
+               
                 m_colorCube[ (r*1024) + (g*32) + b ] = index;
             }
         }
                 m_colorCube[ (r*1024) + (g*32) + b ] = index;
             }
         }
 
+void wxFrame::MakeModal( bool modal )
+{
+    if (modal)
+    {
+        gtk_grab_add( m_widget );
+        gtk_main();
+        gtk_grab_remove( m_widget );
+    }
+    else
+    {
+        gtk_main_quit();
+    }
+}
+
 void wxFrame::OnInternalIdle()
 {
     if (!m_sizeSet && GTK_WIDGET_REALIZED(m_wxwindow))
 void wxFrame::OnInternalIdle()
 {
     if (!m_sizeSet && GTK_WIDGET_REALIZED(m_wxwindow))