Some more drawing things,
Tried to make miniframe stay on top, doesn't work, Make radio box big enough for its title, Can't anylong close disabled toplevel windows, Minor other changes. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6438 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -392,6 +392,8 @@ void MyCanvas::DrawTestPoly( int x, int y,wxDC &dc,int transparent )
 | 
			
		||||
                dc.SetTextBackground(m_owner->m_colourBackground);
 | 
			
		||||
                dc.DrawRectangle( x+50, y+50, 200, 200 );
 | 
			
		||||
                
 | 
			
		||||
                dc.DrawCircle( x+400, y+50, 130 );
 | 
			
		||||
                
 | 
			
		||||
                dc.SetBrush(wxNullBrush);
 | 
			
		||||
                dc.SetPen(wxNullPen);
 | 
			
		||||
                break;
 | 
			
		||||
 
 | 
			
		||||
@@ -203,7 +203,7 @@ wxHtmlWindow *html;
 | 
			
		||||
    // ... and attach this menu bar to the frame
 | 
			
		||||
      SetMenuBar(menuBar);
 | 
			
		||||
   
 | 
			
		||||
      CreateStatusBar(1);
 | 
			
		||||
      CreateStatusBar(2);
 | 
			
		||||
 | 
			
		||||
      html = new wxHtmlWindow(this);
 | 
			
		||||
      html -> SetRelatedFrame(this, "VFS Demo: '%s'");
 | 
			
		||||
 
 | 
			
		||||
@@ -51,14 +51,6 @@ wxButton      *button     = (wxButton*) NULL;
 | 
			
		||||
// main frame
 | 
			
		||||
bool MyApp::OnInit()
 | 
			
		||||
{
 | 
			
		||||
  // Create the mini frame window
 | 
			
		||||
  mini_frame = new MyMiniFrame((wxFrame *) NULL, -1, "wxMiniFrame sample",
 | 
			
		||||
     wxPoint(100, 100), wxSize(220, 100));
 | 
			
		||||
  mini_frame_exists = TRUE;
 | 
			
		||||
 | 
			
		||||
  mini_frame->CreateToolBar(wxNO_BORDER|wxTB_HORIZONTAL|wxTB_FLAT, ID_TOOLBAR);
 | 
			
		||||
  InitToolbar(mini_frame->GetToolBar());
 | 
			
		||||
 | 
			
		||||
  // Create the main frame window
 | 
			
		||||
  main_frame = new MyMainFrame((wxFrame *) NULL, -1, "wxFrame sample",
 | 
			
		||||
     wxPoint(100, 100), wxSize(300, 200));
 | 
			
		||||
@@ -68,6 +60,14 @@ bool MyApp::OnInit()
 | 
			
		||||
 | 
			
		||||
  button = new wxButton( main_frame, ID_REPARENT, "Press to reparent!" );
 | 
			
		||||
 | 
			
		||||
  // Create the mini frame window
 | 
			
		||||
  mini_frame = new MyMiniFrame( main_frame, -1, "wxMiniFrame sample",
 | 
			
		||||
     wxPoint(100, 100), wxSize(220, 100));
 | 
			
		||||
  mini_frame_exists = TRUE;
 | 
			
		||||
 | 
			
		||||
  mini_frame->CreateToolBar(wxNO_BORDER|wxTB_HORIZONTAL|wxTB_FLAT, ID_TOOLBAR);
 | 
			
		||||
  InitToolbar(mini_frame->GetToolBar());
 | 
			
		||||
 | 
			
		||||
#ifdef __WXMSW__
 | 
			
		||||
  main_frame->SetIcon(wxIcon("mondrian"));
 | 
			
		||||
  mini_frame->SetIcon(wxIcon("mondrian"));
 | 
			
		||||
 
 | 
			
		||||
@@ -195,10 +195,12 @@ void wxPreviewCanvas::OnPaint(wxPaintEvent& WXUNUSED(event))
 | 
			
		||||
    wxPaintDC dc(this);
 | 
			
		||||
    PrepareDC( dc );
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
#ifdef __WXGTK__
 | 
			
		||||
    if (!GetUpdateRegion().IsEmpty())
 | 
			
		||||
        dc.SetClippingRegion( GetUpdateRegion() );
 | 
			
		||||
#endif
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
    if (m_printPreview)
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
@@ -303,7 +303,6 @@ void wxWindowDC::SetUpDC()
 | 
			
		||||
    
 | 
			
		||||
    gdk_gc_set_line_attributes( m_penGC, 0, GDK_LINE_SOLID, GDK_CAP_NOT_LAST, GDK_JOIN_ROUND );
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    /* m_brushGC */
 | 
			
		||||
    m_brush.GetColour().CalcPixel( m_cmap );
 | 
			
		||||
    gdk_gc_set_foreground( m_brushGC, m_brush.GetColour().GetColor() );
 | 
			
		||||
@@ -311,7 +310,6 @@ void wxWindowDC::SetUpDC()
 | 
			
		||||
    
 | 
			
		||||
    gdk_gc_set_fill( m_brushGC, GDK_SOLID );
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    /* m_bgGC */
 | 
			
		||||
    gdk_gc_set_background( m_bgGC, bg_col );
 | 
			
		||||
    gdk_gc_set_foreground( m_bgGC, bg_col );
 | 
			
		||||
@@ -552,8 +550,6 @@ void wxWindowDC::DoDrawPolygon( int n, wxPoint points[], wxCoord xoffset, wxCoor
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // To do: Fillstyle
 | 
			
		||||
 | 
			
		||||
        if (m_pen.GetStyle() != wxTRANSPARENT)
 | 
			
		||||
        {
 | 
			
		||||
            for (i = 0 ; i < n ; i++)
 | 
			
		||||
@@ -666,12 +662,41 @@ void wxWindowDC::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width, wx
 | 
			
		||||
 | 
			
		||||
        if (m_brush.GetStyle() != wxTRANSPARENT)
 | 
			
		||||
        {
 | 
			
		||||
            gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx+rr, yy, ww-dd+1, hh );
 | 
			
		||||
            gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx, yy+rr, ww, hh-dd+1 );
 | 
			
		||||
            gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, dd, dd, 90*64, 90*64 );
 | 
			
		||||
            gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy, dd, dd, 0, 90*64 );
 | 
			
		||||
            gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy+hh-dd, dd, dd, 270*64, 90*64 );
 | 
			
		||||
            gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy+hh-dd, dd, dd, 180*64, 90*64 );
 | 
			
		||||
            if ((m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE) && (m_brush.GetStipple()->GetMask()))
 | 
			
		||||
            {
 | 
			
		||||
                gdk_gc_set_ts_origin( m_textGC, 
 | 
			
		||||
                                      m_deviceOriginX % m_brush.GetStipple()->GetWidth(), 
 | 
			
		||||
                                      m_deviceOriginY % m_brush.GetStipple()->GetHeight() );
 | 
			
		||||
                gdk_draw_rectangle( m_window, m_textGC, TRUE, xx+rr, yy, ww-dd+1, hh );
 | 
			
		||||
                gdk_draw_rectangle( m_window, m_textGC, TRUE, xx, yy+rr, ww, hh-dd+1 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_textGC, TRUE, xx, yy, dd, dd, 90*64, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_textGC, TRUE, xx+ww-dd, yy, dd, dd, 0, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_textGC, TRUE, xx+ww-dd, yy+hh-dd, dd, dd, 270*64, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_textGC, TRUE, xx, yy+hh-dd, dd, dd, 180*64, 90*64 );
 | 
			
		||||
                gdk_gc_set_ts_origin( m_textGC, 0, 0 );
 | 
			
		||||
            }
 | 
			
		||||
            else if (m_brush.GetStyle() == wxSTIPPLE)
 | 
			
		||||
            {
 | 
			
		||||
                gdk_gc_set_ts_origin( m_brushGC, 
 | 
			
		||||
                                      m_deviceOriginX % m_brush.GetStipple()->GetWidth(), 
 | 
			
		||||
                                      m_deviceOriginY % m_brush.GetStipple()->GetHeight() );
 | 
			
		||||
                gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx+rr, yy, ww-dd+1, hh );
 | 
			
		||||
                gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx, yy+rr, ww, hh-dd+1 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, dd, dd, 90*64, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy, dd, dd, 0, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy+hh-dd, dd, dd, 270*64, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy+hh-dd, dd, dd, 180*64, 90*64 );
 | 
			
		||||
                gdk_gc_set_ts_origin( m_brushGC, 0, 0 );
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx+rr, yy, ww-dd+1, hh );
 | 
			
		||||
                gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx, yy+rr, ww, hh-dd+1 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, dd, dd, 90*64, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy, dd, dd, 0, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy+hh-dd, dd, dd, 270*64, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy+hh-dd, dd, dd, 180*64, 90*64 );
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (m_pen.GetStyle() != wxTRANSPARENT)
 | 
			
		||||
@@ -708,7 +733,28 @@ void wxWindowDC::DoDrawEllipse( wxCoord x, wxCoord y, wxCoord width, wxCoord hei
 | 
			
		||||
    if (m_window)
 | 
			
		||||
    {
 | 
			
		||||
        if (m_brush.GetStyle() != wxTRANSPARENT)
 | 
			
		||||
            gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, ww, hh, 0, 360*64 );
 | 
			
		||||
        {
 | 
			
		||||
            if ((m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE) && (m_brush.GetStipple()->GetMask()))
 | 
			
		||||
            {
 | 
			
		||||
                gdk_gc_set_ts_origin( m_textGC, 
 | 
			
		||||
                                      m_deviceOriginX % m_brush.GetStipple()->GetWidth(), 
 | 
			
		||||
                                      m_deviceOriginY % m_brush.GetStipple()->GetHeight() );
 | 
			
		||||
                gdk_draw_arc( m_window, m_textGC, TRUE, xx, yy, ww, hh, 0, 360*64 );
 | 
			
		||||
                gdk_gc_set_ts_origin( m_textGC, 0, 0 );
 | 
			
		||||
            }
 | 
			
		||||
            else if (m_brush.GetStyle() == wxSTIPPLE)
 | 
			
		||||
            {
 | 
			
		||||
                gdk_gc_set_ts_origin( m_brushGC, 
 | 
			
		||||
                                      m_deviceOriginX % m_brush.GetStipple()->GetWidth(), 
 | 
			
		||||
                                      m_deviceOriginY % m_brush.GetStipple()->GetHeight() );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, ww, hh, 0, 360*64 );
 | 
			
		||||
                gdk_gc_set_ts_origin( m_brushGC, 0, 0 );
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, ww, hh, 0, 360*64 );
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (m_pen.GetStyle() != wxTRANSPARENT)
 | 
			
		||||
            gdk_draw_arc( m_window, m_penGC, FALSE, xx, yy, ww, hh, 0, 360*64 );
 | 
			
		||||
@@ -798,14 +844,6 @@ void wxWindowDC::DoDrawBitmap( const wxBitmap &bitmap,
 | 
			
		||||
                gdk_gc_set_fill( gc, GDK_OPAQUE_STIPPLED );
 | 
			
		||||
                gdk_gc_set_stipple( gc, mask );
 | 
			
		||||
                gdk_draw_rectangle( new_mask, gc, TRUE, 0, 0, ww, hh );
 | 
			
		||||
/*                
 | 
			
		||||
                gdk_gc_set_clip_mask( m_brushGC, NULL );
 | 
			
		||||
                gdk_gc_set_clip_mask( m_textGC, NULL );
 | 
			
		||||
                SetBrush( *wxRED_BRUSH );
 | 
			
		||||
                DrawRectangle( 70, 0, 70, 1000 );
 | 
			
		||||
                gdk_draw_bitmap( m_window, m_textGC, new_mask, 0, 0, 100, 5, ww, hh );
 | 
			
		||||
                gdk_draw_bitmap( m_window, m_textGC, mask, 0, 0, 80, 5, ww, hh );
 | 
			
		||||
*/                
 | 
			
		||||
                gdk_gc_unref( gc );
 | 
			
		||||
            }
 | 
			
		||||
        
 | 
			
		||||
@@ -1060,27 +1098,21 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord he
 | 
			
		||||
 | 
			
		||||
            wxBitmap bitmap( width, height );
 | 
			
		||||
            
 | 
			
		||||
            if (srcDC->m_isScreenDC)
 | 
			
		||||
                gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS );
 | 
			
		||||
 | 
			
		||||
            /* copy including child window contents */
 | 
			
		||||
            gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS );
 | 
			
		||||
            gdk_window_copy_area( bitmap.GetPixmap(), m_penGC, 0, 0,
 | 
			
		||||
                                  srcDC->GetWindow(),
 | 
			
		||||
                                  xsrc, ysrc, width, height );
 | 
			
		||||
 | 
			
		||||
            if (srcDC->m_isScreenDC)
 | 
			
		||||
                gdk_gc_set_subwindow( m_penGC, GDK_CLIP_BY_CHILDREN );
 | 
			
		||||
            gdk_gc_set_subwindow( m_penGC, GDK_CLIP_BY_CHILDREN );
 | 
			
		||||
                
 | 
			
		||||
            /* scale image */
 | 
			
		||||
 | 
			
		||||
            wxImage image( bitmap );
 | 
			
		||||
            image = image.Scale( ww, hh );
 | 
			
		||||
 | 
			
		||||
            /* convert to bitmap */
 | 
			
		||||
 | 
			
		||||
            bitmap = image.ConvertToBitmap();
 | 
			
		||||
 | 
			
		||||
            /* draw scaled bitmap */
 | 
			
		||||
 | 
			
		||||
            gdk_draw_pixmap( m_window, m_penGC, bitmap.GetPixmap(), 0, 0, xx, yy, -1, -1 );
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
@@ -1088,15 +1120,12 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord he
 | 
			
		||||
        {
 | 
			
		||||
            /* No scaling and not a memory dc with a mask either */
 | 
			
		||||
 | 
			
		||||
            if (srcDC->m_isScreenDC)
 | 
			
		||||
                gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS );
 | 
			
		||||
 | 
			
		||||
            /* copy including child window contents */
 | 
			
		||||
            gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS );
 | 
			
		||||
            gdk_window_copy_area( m_window, m_penGC, xx, yy,
 | 
			
		||||
                                  srcDC->GetWindow(),
 | 
			
		||||
                                  xsrc, ysrc, width, height );
 | 
			
		||||
                                  
 | 
			
		||||
            if (srcDC->m_isScreenDC)
 | 
			
		||||
                gdk_gc_set_subwindow( m_penGC, GDK_CLIP_BY_CHILDREN );
 | 
			
		||||
            gdk_gc_set_subwindow( m_penGC, GDK_CLIP_BY_CHILDREN );
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -59,7 +59,8 @@ bool gtk_dialog_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED
 | 
			
		||||
    if (g_isIdle)
 | 
			
		||||
        wxapp_install_idle_handler();
 | 
			
		||||
 | 
			
		||||
    win->Close();
 | 
			
		||||
    if (win->IsEnabled())
 | 
			
		||||
        win->Close();
 | 
			
		||||
 | 
			
		||||
    return TRUE;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -139,7 +139,7 @@ static gint gtk_frame_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WX
 | 
			
		||||
    if (g_isIdle)
 | 
			
		||||
        wxapp_install_idle_handler();
 | 
			
		||||
 | 
			
		||||
    if (g_openDialogs == 0)
 | 
			
		||||
    if ((g_openDialogs == 0) && (win->IsEnabled()))
 | 
			
		||||
        win->Close();
 | 
			
		||||
 | 
			
		||||
    return TRUE;
 | 
			
		||||
 
 | 
			
		||||
@@ -318,6 +318,9 @@ bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title
 | 
			
		||||
    
 | 
			
		||||
    wxFrame::Create( parent, id, title, pos, size, style, name );
 | 
			
		||||
 | 
			
		||||
    if ((m_parent) && (GTK_IS_WINDOW(m_parent->m_widget)))
 | 
			
		||||
        gtk_window_set_transient_for( GTK_WINDOW(m_widget), GTK_WINDOW(m_parent->m_widget) );
 | 
			
		||||
 | 
			
		||||
    if ((style & wxSYSTEM_MENU) &&
 | 
			
		||||
        ((style & wxCAPTION) || (style & wxTINY_CAPTION_HORIZ) || (style & wxTINY_CAPTION_VERT)))
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
@@ -192,6 +192,12 @@ bool wxRadioBox::Create( wxWindow *parent, wxWindowID id, const wxString& title,
 | 
			
		||||
 | 
			
		||||
    wxSize ls = LayoutItems();
 | 
			
		||||
 | 
			
		||||
    GtkRequisition req;
 | 
			
		||||
    req.width = 2;
 | 
			
		||||
    req.height = 2;
 | 
			
		||||
    (* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request ) (m_widget, &req );
 | 
			
		||||
    if (req.width > ls.x) ls.x = req.width;
 | 
			
		||||
    
 | 
			
		||||
    wxSize newSize = size;
 | 
			
		||||
    if (newSize.x == -1) newSize.x = ls.x;
 | 
			
		||||
    if (newSize.y == -1) newSize.y = ls.y;
 | 
			
		||||
 
 | 
			
		||||
@@ -208,6 +208,8 @@ extern bool g_mainThreadLocked;
 | 
			
		||||
// debug
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
#define DISABLE_STYLE_IF_BROKEN_THEME 1
 | 
			
		||||
 | 
			
		||||
#ifdef __WXDEBUG__
 | 
			
		||||
 | 
			
		||||
#if wxUSE_THREADS
 | 
			
		||||
@@ -2157,10 +2159,11 @@ wxWindow::~wxWindow()
 | 
			
		||||
 | 
			
		||||
    if (m_widgetStyle)
 | 
			
		||||
    {
 | 
			
		||||
#if DISABLE_STYLE_IF_BROKEN_THEME
 | 
			
		||||
        // don't delete if it's a pixmap theme style
 | 
			
		||||
        if (!m_widgetStyle->engine_data)
 | 
			
		||||
            gtk_style_unref( m_widgetStyle );
 | 
			
		||||
            
 | 
			
		||||
#endif            
 | 
			
		||||
        m_widgetStyle = (GtkStyle*) NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -3053,6 +3056,7 @@ GtkStyle *wxWindow::GetWidgetStyle()
 | 
			
		||||
 | 
			
		||||
void wxWindow::SetWidgetStyle()
 | 
			
		||||
{
 | 
			
		||||
#if DISABLE_STYLE_IF_BROKEN_THEM
 | 
			
		||||
    if (m_widget->style->engine_data)
 | 
			
		||||
    {
 | 
			
		||||
        static bool s_warningPrinted = FALSE;
 | 
			
		||||
@@ -3064,6 +3068,7 @@ void wxWindow::SetWidgetStyle()
 | 
			
		||||
        m_widgetStyle = m_widget->style;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    GtkStyle *style = GetWidgetStyle();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -303,7 +303,6 @@ void wxWindowDC::SetUpDC()
 | 
			
		||||
    
 | 
			
		||||
    gdk_gc_set_line_attributes( m_penGC, 0, GDK_LINE_SOLID, GDK_CAP_NOT_LAST, GDK_JOIN_ROUND );
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    /* m_brushGC */
 | 
			
		||||
    m_brush.GetColour().CalcPixel( m_cmap );
 | 
			
		||||
    gdk_gc_set_foreground( m_brushGC, m_brush.GetColour().GetColor() );
 | 
			
		||||
@@ -311,7 +310,6 @@ void wxWindowDC::SetUpDC()
 | 
			
		||||
    
 | 
			
		||||
    gdk_gc_set_fill( m_brushGC, GDK_SOLID );
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    /* m_bgGC */
 | 
			
		||||
    gdk_gc_set_background( m_bgGC, bg_col );
 | 
			
		||||
    gdk_gc_set_foreground( m_bgGC, bg_col );
 | 
			
		||||
@@ -552,8 +550,6 @@ void wxWindowDC::DoDrawPolygon( int n, wxPoint points[], wxCoord xoffset, wxCoor
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // To do: Fillstyle
 | 
			
		||||
 | 
			
		||||
        if (m_pen.GetStyle() != wxTRANSPARENT)
 | 
			
		||||
        {
 | 
			
		||||
            for (i = 0 ; i < n ; i++)
 | 
			
		||||
@@ -666,12 +662,41 @@ void wxWindowDC::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width, wx
 | 
			
		||||
 | 
			
		||||
        if (m_brush.GetStyle() != wxTRANSPARENT)
 | 
			
		||||
        {
 | 
			
		||||
            gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx+rr, yy, ww-dd+1, hh );
 | 
			
		||||
            gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx, yy+rr, ww, hh-dd+1 );
 | 
			
		||||
            gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, dd, dd, 90*64, 90*64 );
 | 
			
		||||
            gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy, dd, dd, 0, 90*64 );
 | 
			
		||||
            gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy+hh-dd, dd, dd, 270*64, 90*64 );
 | 
			
		||||
            gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy+hh-dd, dd, dd, 180*64, 90*64 );
 | 
			
		||||
            if ((m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE) && (m_brush.GetStipple()->GetMask()))
 | 
			
		||||
            {
 | 
			
		||||
                gdk_gc_set_ts_origin( m_textGC, 
 | 
			
		||||
                                      m_deviceOriginX % m_brush.GetStipple()->GetWidth(), 
 | 
			
		||||
                                      m_deviceOriginY % m_brush.GetStipple()->GetHeight() );
 | 
			
		||||
                gdk_draw_rectangle( m_window, m_textGC, TRUE, xx+rr, yy, ww-dd+1, hh );
 | 
			
		||||
                gdk_draw_rectangle( m_window, m_textGC, TRUE, xx, yy+rr, ww, hh-dd+1 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_textGC, TRUE, xx, yy, dd, dd, 90*64, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_textGC, TRUE, xx+ww-dd, yy, dd, dd, 0, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_textGC, TRUE, xx+ww-dd, yy+hh-dd, dd, dd, 270*64, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_textGC, TRUE, xx, yy+hh-dd, dd, dd, 180*64, 90*64 );
 | 
			
		||||
                gdk_gc_set_ts_origin( m_textGC, 0, 0 );
 | 
			
		||||
            }
 | 
			
		||||
            else if (m_brush.GetStyle() == wxSTIPPLE)
 | 
			
		||||
            {
 | 
			
		||||
                gdk_gc_set_ts_origin( m_brushGC, 
 | 
			
		||||
                                      m_deviceOriginX % m_brush.GetStipple()->GetWidth(), 
 | 
			
		||||
                                      m_deviceOriginY % m_brush.GetStipple()->GetHeight() );
 | 
			
		||||
                gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx+rr, yy, ww-dd+1, hh );
 | 
			
		||||
                gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx, yy+rr, ww, hh-dd+1 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, dd, dd, 90*64, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy, dd, dd, 0, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy+hh-dd, dd, dd, 270*64, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy+hh-dd, dd, dd, 180*64, 90*64 );
 | 
			
		||||
                gdk_gc_set_ts_origin( m_brushGC, 0, 0 );
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx+rr, yy, ww-dd+1, hh );
 | 
			
		||||
                gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx, yy+rr, ww, hh-dd+1 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, dd, dd, 90*64, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy, dd, dd, 0, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy+hh-dd, dd, dd, 270*64, 90*64 );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy+hh-dd, dd, dd, 180*64, 90*64 );
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (m_pen.GetStyle() != wxTRANSPARENT)
 | 
			
		||||
@@ -708,7 +733,28 @@ void wxWindowDC::DoDrawEllipse( wxCoord x, wxCoord y, wxCoord width, wxCoord hei
 | 
			
		||||
    if (m_window)
 | 
			
		||||
    {
 | 
			
		||||
        if (m_brush.GetStyle() != wxTRANSPARENT)
 | 
			
		||||
            gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, ww, hh, 0, 360*64 );
 | 
			
		||||
        {
 | 
			
		||||
            if ((m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE) && (m_brush.GetStipple()->GetMask()))
 | 
			
		||||
            {
 | 
			
		||||
                gdk_gc_set_ts_origin( m_textGC, 
 | 
			
		||||
                                      m_deviceOriginX % m_brush.GetStipple()->GetWidth(), 
 | 
			
		||||
                                      m_deviceOriginY % m_brush.GetStipple()->GetHeight() );
 | 
			
		||||
                gdk_draw_arc( m_window, m_textGC, TRUE, xx, yy, ww, hh, 0, 360*64 );
 | 
			
		||||
                gdk_gc_set_ts_origin( m_textGC, 0, 0 );
 | 
			
		||||
            }
 | 
			
		||||
            else if (m_brush.GetStyle() == wxSTIPPLE)
 | 
			
		||||
            {
 | 
			
		||||
                gdk_gc_set_ts_origin( m_brushGC, 
 | 
			
		||||
                                      m_deviceOriginX % m_brush.GetStipple()->GetWidth(), 
 | 
			
		||||
                                      m_deviceOriginY % m_brush.GetStipple()->GetHeight() );
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, ww, hh, 0, 360*64 );
 | 
			
		||||
                gdk_gc_set_ts_origin( m_brushGC, 0, 0 );
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, ww, hh, 0, 360*64 );
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (m_pen.GetStyle() != wxTRANSPARENT)
 | 
			
		||||
            gdk_draw_arc( m_window, m_penGC, FALSE, xx, yy, ww, hh, 0, 360*64 );
 | 
			
		||||
@@ -798,14 +844,6 @@ void wxWindowDC::DoDrawBitmap( const wxBitmap &bitmap,
 | 
			
		||||
                gdk_gc_set_fill( gc, GDK_OPAQUE_STIPPLED );
 | 
			
		||||
                gdk_gc_set_stipple( gc, mask );
 | 
			
		||||
                gdk_draw_rectangle( new_mask, gc, TRUE, 0, 0, ww, hh );
 | 
			
		||||
/*                
 | 
			
		||||
                gdk_gc_set_clip_mask( m_brushGC, NULL );
 | 
			
		||||
                gdk_gc_set_clip_mask( m_textGC, NULL );
 | 
			
		||||
                SetBrush( *wxRED_BRUSH );
 | 
			
		||||
                DrawRectangle( 70, 0, 70, 1000 );
 | 
			
		||||
                gdk_draw_bitmap( m_window, m_textGC, new_mask, 0, 0, 100, 5, ww, hh );
 | 
			
		||||
                gdk_draw_bitmap( m_window, m_textGC, mask, 0, 0, 80, 5, ww, hh );
 | 
			
		||||
*/                
 | 
			
		||||
                gdk_gc_unref( gc );
 | 
			
		||||
            }
 | 
			
		||||
        
 | 
			
		||||
@@ -1060,27 +1098,21 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord he
 | 
			
		||||
 | 
			
		||||
            wxBitmap bitmap( width, height );
 | 
			
		||||
            
 | 
			
		||||
            if (srcDC->m_isScreenDC)
 | 
			
		||||
                gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS );
 | 
			
		||||
 | 
			
		||||
            /* copy including child window contents */
 | 
			
		||||
            gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS );
 | 
			
		||||
            gdk_window_copy_area( bitmap.GetPixmap(), m_penGC, 0, 0,
 | 
			
		||||
                                  srcDC->GetWindow(),
 | 
			
		||||
                                  xsrc, ysrc, width, height );
 | 
			
		||||
 | 
			
		||||
            if (srcDC->m_isScreenDC)
 | 
			
		||||
                gdk_gc_set_subwindow( m_penGC, GDK_CLIP_BY_CHILDREN );
 | 
			
		||||
            gdk_gc_set_subwindow( m_penGC, GDK_CLIP_BY_CHILDREN );
 | 
			
		||||
                
 | 
			
		||||
            /* scale image */
 | 
			
		||||
 | 
			
		||||
            wxImage image( bitmap );
 | 
			
		||||
            image = image.Scale( ww, hh );
 | 
			
		||||
 | 
			
		||||
            /* convert to bitmap */
 | 
			
		||||
 | 
			
		||||
            bitmap = image.ConvertToBitmap();
 | 
			
		||||
 | 
			
		||||
            /* draw scaled bitmap */
 | 
			
		||||
 | 
			
		||||
            gdk_draw_pixmap( m_window, m_penGC, bitmap.GetPixmap(), 0, 0, xx, yy, -1, -1 );
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
@@ -1088,15 +1120,12 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord he
 | 
			
		||||
        {
 | 
			
		||||
            /* No scaling and not a memory dc with a mask either */
 | 
			
		||||
 | 
			
		||||
            if (srcDC->m_isScreenDC)
 | 
			
		||||
                gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS );
 | 
			
		||||
 | 
			
		||||
            /* copy including child window contents */
 | 
			
		||||
            gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS );
 | 
			
		||||
            gdk_window_copy_area( m_window, m_penGC, xx, yy,
 | 
			
		||||
                                  srcDC->GetWindow(),
 | 
			
		||||
                                  xsrc, ysrc, width, height );
 | 
			
		||||
                                  
 | 
			
		||||
            if (srcDC->m_isScreenDC)
 | 
			
		||||
                gdk_gc_set_subwindow( m_penGC, GDK_CLIP_BY_CHILDREN );
 | 
			
		||||
            gdk_gc_set_subwindow( m_penGC, GDK_CLIP_BY_CHILDREN );
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -59,7 +59,8 @@ bool gtk_dialog_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED
 | 
			
		||||
    if (g_isIdle)
 | 
			
		||||
        wxapp_install_idle_handler();
 | 
			
		||||
 | 
			
		||||
    win->Close();
 | 
			
		||||
    if (win->IsEnabled())
 | 
			
		||||
        win->Close();
 | 
			
		||||
 | 
			
		||||
    return TRUE;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -139,7 +139,7 @@ static gint gtk_frame_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WX
 | 
			
		||||
    if (g_isIdle)
 | 
			
		||||
        wxapp_install_idle_handler();
 | 
			
		||||
 | 
			
		||||
    if (g_openDialogs == 0)
 | 
			
		||||
    if ((g_openDialogs == 0) && (win->IsEnabled()))
 | 
			
		||||
        win->Close();
 | 
			
		||||
 | 
			
		||||
    return TRUE;
 | 
			
		||||
 
 | 
			
		||||
@@ -318,6 +318,9 @@ bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title
 | 
			
		||||
    
 | 
			
		||||
    wxFrame::Create( parent, id, title, pos, size, style, name );
 | 
			
		||||
 | 
			
		||||
    if ((m_parent) && (GTK_IS_WINDOW(m_parent->m_widget)))
 | 
			
		||||
        gtk_window_set_transient_for( GTK_WINDOW(m_widget), GTK_WINDOW(m_parent->m_widget) );
 | 
			
		||||
 | 
			
		||||
    if ((style & wxSYSTEM_MENU) &&
 | 
			
		||||
        ((style & wxCAPTION) || (style & wxTINY_CAPTION_HORIZ) || (style & wxTINY_CAPTION_VERT)))
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
@@ -192,6 +192,12 @@ bool wxRadioBox::Create( wxWindow *parent, wxWindowID id, const wxString& title,
 | 
			
		||||
 | 
			
		||||
    wxSize ls = LayoutItems();
 | 
			
		||||
 | 
			
		||||
    GtkRequisition req;
 | 
			
		||||
    req.width = 2;
 | 
			
		||||
    req.height = 2;
 | 
			
		||||
    (* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request ) (m_widget, &req );
 | 
			
		||||
    if (req.width > ls.x) ls.x = req.width;
 | 
			
		||||
    
 | 
			
		||||
    wxSize newSize = size;
 | 
			
		||||
    if (newSize.x == -1) newSize.x = ls.x;
 | 
			
		||||
    if (newSize.y == -1) newSize.y = ls.y;
 | 
			
		||||
 
 | 
			
		||||
@@ -208,6 +208,8 @@ extern bool g_mainThreadLocked;
 | 
			
		||||
// debug
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
#define DISABLE_STYLE_IF_BROKEN_THEME 1
 | 
			
		||||
 | 
			
		||||
#ifdef __WXDEBUG__
 | 
			
		||||
 | 
			
		||||
#if wxUSE_THREADS
 | 
			
		||||
@@ -2157,10 +2159,11 @@ wxWindow::~wxWindow()
 | 
			
		||||
 | 
			
		||||
    if (m_widgetStyle)
 | 
			
		||||
    {
 | 
			
		||||
#if DISABLE_STYLE_IF_BROKEN_THEME
 | 
			
		||||
        // don't delete if it's a pixmap theme style
 | 
			
		||||
        if (!m_widgetStyle->engine_data)
 | 
			
		||||
            gtk_style_unref( m_widgetStyle );
 | 
			
		||||
            
 | 
			
		||||
#endif            
 | 
			
		||||
        m_widgetStyle = (GtkStyle*) NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -3053,6 +3056,7 @@ GtkStyle *wxWindow::GetWidgetStyle()
 | 
			
		||||
 | 
			
		||||
void wxWindow::SetWidgetStyle()
 | 
			
		||||
{
 | 
			
		||||
#if DISABLE_STYLE_IF_BROKEN_THEM
 | 
			
		||||
    if (m_widget->style->engine_data)
 | 
			
		||||
    {
 | 
			
		||||
        static bool s_warningPrinted = FALSE;
 | 
			
		||||
@@ -3064,6 +3068,7 @@ void wxWindow::SetWidgetStyle()
 | 
			
		||||
        m_widgetStyle = m_widget->style;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    GtkStyle *style = GetWidgetStyle();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user