]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/window.cpp
added default icons for binary and unknown filetype
[wxWidgets.git] / src / gtk1 / window.cpp
index ccdd0eb927680de2b78829159c0c409e410b4a86..2d3fc4c7ab147b1c777532b4466985a1cbfb648d 100644 (file)
@@ -301,7 +301,7 @@ static void draw_frame( GtkWidget *widget, wxWindow *win )
     int dw = 0;
     int dh = 0;
 
-    if (win->HasScrolling())
+    if (win->m_hasScrolling)
     {
             GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(widget);
             
@@ -1627,7 +1627,7 @@ static void gtk_window_hscroll_change_callback( GtkWidget *WXUNUSED(widget), wxW
 
 static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
                                                  GdkEventButton *WXUNUSED(gdk_event),
-                                                 wxWindow *win )
+                                                 wxWindow *WXUNUSED(win))
 {
     DEBUG_MAIN_THREAD
 
@@ -1639,7 +1639,7 @@ static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
 //
 //    if (gdk_event->window != widget->slider) return FALSE;
 
-    win->SetScrolling( TRUE );
+    g_blockEventsOnScroll = TRUE;
 
     return FALSE;
 }
@@ -1650,7 +1650,7 @@ static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
 
 static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget),
                                                    GdkEventButton *WXUNUSED(gdk_event),
-                                                   wxWindow *win )
+                                                   wxWindow *WXUNUSED(win))
 {
     DEBUG_MAIN_THREAD
 
@@ -1660,7 +1660,7 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget),
 //
 //    if (gdk_event->window != widget->slider) return FALSE;
 
-    win->SetScrolling( FALSE );
+    g_blockEventsOnScroll = FALSE;
 
     return FALSE;
 }
@@ -1707,6 +1707,34 @@ gtk_window_realized_callback( GtkWidget *WXUNUSED(m_widget), wxWindow *win )
 // "size_allocate"
 //-----------------------------------------------------------------------------
 
+static
+void gtk_window_size_callback( GtkWidget *WXUNUSED(widget),
+                               GtkAllocation *WXUNUSED(alloc),
+                               wxWindow *win )
+{
+    if (g_isIdle)
+        wxapp_install_idle_handler();
+    
+    if (!win->m_hasScrolling) return;
+    
+    int client_width = 0;
+    int client_height = 0;
+    win->GetClientSize( &client_width, &client_height );
+    if ((client_width == win->m_oldClientWidth) && (client_height == win->m_oldClientHeight))
+        return;
+        
+    win->m_oldClientWidth = client_width;
+    win->m_oldClientHeight = client_height;
+    
+    if (!win->m_nativeSizeEvent)
+    {
+        wxSizeEvent event( win->GetSize(), win->GetId() );
+        event.SetEventObject( win );
+        win->GetEventHandler()->ProcessEvent( event );
+    }
+}
+
+
 #ifdef HAVE_XIM
     #define WXUNUSED_UNLESS_XIM(param)  param
 #else
@@ -1716,13 +1744,13 @@ gtk_window_realized_callback( GtkWidget *WXUNUSED(m_widget), wxWindow *win )
 /* Resize XIM window */
 
 static
-void gtk_wxwindow_size_callback( GtkWidget * WXUNUSED_UNLESS_XIM(widget),
-                                 GtkAllocation * WXUNUSED_UNLESS_XIM(alloc),
-                                 wxFrame * WXUNUSED_UNLESS_XIM(win) )
+void gtk_wxwindow_size_callback( GtkWidget* WXUNUSED_UNLESS_XIM(widget),
+                                 GtkAllocation* WXUNUSED_UNLESS_XIM(alloc),
+                                 wxWindow* WXUNUSED_UNLESS_XIM(win) )
 {
     if (g_isIdle)
         wxapp_install_idle_handler();
-
+        
 #ifdef HAVE_XIM
     if (!win->m_ic)
         return;
@@ -1898,7 +1926,6 @@ void wxWindow::Init()
     m_nativeSizeEvent = FALSE;
 
     m_hasScrolling = FALSE;
-    m_isScrolling = FALSE;
 
     m_hAdjust = (GtkAdjustment*) NULL;
     m_vAdjust = (GtkAdjustment*) NULL;
@@ -2211,11 +2238,15 @@ void wxWindow::PostCreation()
  
     if (m_wxwindow)
     {
-        /* Initialize XIM support.  */
+        /* Catch native resize events. */
+        gtk_signal_connect( GTK_OBJECT(m_wxwindow), "size_allocate",
+                            GTK_SIGNAL_FUNC(gtk_window_size_callback), (gpointer)this );
+                            
+        /* Initialize XIM support. */
         gtk_signal_connect( GTK_OBJECT(m_wxwindow), "realize",
                             GTK_SIGNAL_FUNC(gtk_wxwindow_realized_callback), (gpointer) this );
-                           
-        /* And resize XIM window.  */
+
+        /* And resize XIM window. */
         gtk_signal_connect( GTK_OBJECT(m_wxwindow), "size_allocate",
                             GTK_SIGNAL_FUNC(gtk_wxwindow_size_callback), (gpointer)this );
     }
@@ -2327,6 +2358,11 @@ void wxWindow::DoSetSize( int x, int y, int width, int height, int sizeFlags )
                       m_height+border+bottom_border );
     }
 
+    if (m_hasScrolling)
+    {
+        GetClientSize( &m_oldClientWidth, &m_oldClientHeight );
+    }
+
 /*
     wxPrintf( "OnSize sent from " );
     if (GetClassInfo() && GetClassInfo()->GetClassName())
@@ -2430,7 +2466,7 @@ void wxWindow::DoSetClientSize( int width, int height )
             dh += 1 * 2;
         }
 
-        if (HasScrolling())
+        if (m_hasScrolling)
         {
             GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
             
@@ -2492,7 +2528,7 @@ void wxWindow::DoGetClientSize( int *width, int *height ) const
             dh += 1 * 2;
         }
 
-        if (HasScrolling())
+        if (m_hasScrolling)
         {
             GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
             
@@ -3298,20 +3334,13 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
         m_vAdjust->value = fpos;
     }
 
-/*
-    if (!m_isScrolling)
+    if (m_wxwindow->window)
     {
-*/
-        if (m_wxwindow->window)
-        {
-            if (orient == wxHORIZONTAL)
-                gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
-            else
-                gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
-        }
-/*
+        if (orient == wxHORIZONTAL)
+            gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
+        else
+            gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
     }
-*/
 }
 
 int wxWindow::GetScrollThumb( int orient ) const
@@ -3414,8 +3443,3 @@ void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
     }
 */
 }
-
-void wxWindow::SetScrolling(bool scroll)
-{
-    m_isScrolling = g_blockEventsOnScroll = scroll;
-}