X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0e09f76e6d499a32ab3522d0f9c41a1999f6f73a..a95e38c03464c854af73b960b17db12624bd8f8c:/src/gtk/window.cpp diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index a08961fed8..befad324ff 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -612,7 +612,8 @@ static void gtk_window_expose_callback( GtkWidget *WXUNUSED(widget), GdkEventExp { DEBUG_MAIN_THREAD - if (win->GetName() == wxT("columntitles")) +/* + if (win->GetName() == wxT("grid window")) { wxPrintf( wxT("OnExpose from ") ); if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) @@ -622,6 +623,7 @@ static void gtk_window_expose_callback( GtkWidget *WXUNUSED(widget), GdkEventExp (int)gdk_event->area.width, (int)gdk_event->area.height ); } +*/ win->GetUpdateRegion().Union( gdk_event->area.x, gdk_event->area.y, @@ -661,7 +663,8 @@ static void gtk_window_draw_callback( GtkWidget *WXUNUSED(widget), if ((rect->x == 0) && (rect->y == 0) && (rect->width <= 1) && (rect->height <= 1)) return; - if (win->GetName() == wxT("columntitles")) +/* + if (win->GetName() == wxT("grid window")) { wxPrintf( wxT("OnDraw from ") ); if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) @@ -671,6 +674,7 @@ static void gtk_window_draw_callback( GtkWidget *WXUNUSED(widget), (int)rect->width, (int)rect->height ); } +*/ win->GetUpdateRegion().Union( rect->x, rect->y, rect->width, rect->height ); @@ -3440,6 +3444,60 @@ void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) ) wxCHECK_RET( m_widget != NULL, wxT("invalid window") ); wxCHECK_RET( m_wxwindow != NULL, wxT("window needs client area for scrolling") ); + + if ((dx == 0) && (dy == 0)) return; gtk_pizza_scroll( GTK_PIZZA(m_wxwindow), -dx, -dy ); + +/* + if (m_children.GetCount() > 0) + { + gtk_pizza_scroll( GTK_PIZZA(m_wxwindow), -dx, -dy ); + } + else + { + GtkPizza *pizza = GTK_PIZZA(m_wxwindow); + + pizza->xoffset -= dx; + pizza->yoffset -= dy; + + GdkGC *m_scrollGC = gdk_gc_new( pizza->bin_window ); + gdk_gc_set_exposures( m_scrollGC, TRUE ); + + int cw = 0; + int ch = 0; + GetClientSize( &cw, &ch ); + int w = cw - abs(dx); + int h = ch - abs(dy); + + if ((h < 0) || (w < 0)) + { + Refresh(); + } + else + { + int s_x = 0; + int s_y = 0; + if (dx < 0) s_x = -dx; + if (dy < 0) s_y = -dy; + int d_x = 0; + int d_y = 0; + if (dx > 0) d_x = dx; + if (dy > 0) d_y = dy; + + gdk_window_copy_area( pizza->bin_window, m_scrollGC, d_x, d_y, + pizza->bin_window, s_x, s_y, w, h ); + + wxRect rect; + if (dx < 0) rect.x = cw+dx; else rect.x = 0; + if (dy < 0) rect.y = ch+dy; else rect.y = 0; + if (dy != 0) rect.width = cw; else rect.width = abs(dx); + if (dx != 0) rect.height = ch; else rect.height = abs(dy); + + Refresh( TRUE, &rect ); + } + + gdk_gc_unref( m_scrollGC ); + } +*/ }