]> git.saurik.com Git - wxWidgets.git/commitdiff
Applied BMP patch.
authorRobert Roebling <robert@roebling.de>
Sun, 22 Apr 2001 10:20:56 +0000 (10:20 +0000)
committerRobert Roebling <robert@roebling.de>
Sun, 22 Apr 2001 10:20:56 +0000 (10:20 +0000)
  Applied deferred wxBitmapButton patch.
  Added error checking to wxFileStream and wxFFileStream.
  Corrected activate event things.

  All these patches work in the stable branch, the
   dev-branch does not currently compile.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9836 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/filename.cpp
src/common/imagbmp.cpp
src/common/wfstream.cpp
src/gtk/window.cpp
src/gtk1/window.cpp

index c84ded0f6e4f586dda74653b6e421a6e160d0a6c..cebec267bcbf4aa68334d5c3e501aca0c3918fdb 100644 (file)
 #include "wx/msw/winundef.h"
 #endif
 
-// at least some of these are required for file mod time
-#ifdef __WXGTK__
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <dirent.h>
-#include <pwd.h>
-#ifndef __VMS
-# include <grp.h>
-#endif
-# include <time.h>
-#include <unistd.h>
-#endif
-
 // ============================================================================
 // implementation
 // ============================================================================
@@ -167,24 +154,8 @@ bool wxFileName::DirExists( const wxString &dir )
 
 wxDateTime wxFileName::GetModificationTime()
 {
-#ifdef __WXGTK__
-    struct stat buff;
-    stat( GetFullName().fn_str(), &buff );
+    wxDateTime ret( wxFileModificationTime( GetFullPath() ) );
 
-#if !defined( __EMX__ ) && !defined(__VMS)
-    struct stat lbuff;
-    lstat( GetFullName().fn_str(), &lbuff );
-    struct tm *t = localtime( &lbuff.st_mtime );
-#else
-    struct tm *t = localtime( &buff.st_mtime );
-#endif
-
-    wxDateTime ret( t->tm_mday, (wxDateTime::Month)t->tm_mon, t->tm_year+1900, t->tm_hour, t->tm_min, t->tm_sec );
-#else
-    
-    wxDateTime ret = wxDateTime::Now();
-
-#endif
     return ret;
 }
 
@@ -607,7 +578,7 @@ wxString wxFileName::GetLongPath() const
         s_triedToLoad = TRUE;
 
         wxDllType dllKernel = wxDllLoader::LoadLibrary(_T("kernel32"));
-               short avoidCompilerWarning = 0;
+        short avoidCompilerWarning = 0;
         if ( avoidCompilerWarning ) // dllKernel )
         {
             // may succeed or fail depending on the Windows version
index 5819bd7ec69ce66f0e50b464405fff80d56a030d..7caff9078edb052cf8f262be538ece27ed95b78b 100644 (file)
@@ -383,7 +383,7 @@ bool wxBMPHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose
                 if (bpp == 1)
                 {
                     int bit = 0;
-                    for (bit = 0; bit < 8; bit++)
+                    for (bit = 0; bit < 8 && column < width; bit++)
                     {
                         index = ((aByte & (0x80 >> bit)) ? 1 : 0);
                         ptr[poffset] = cmap[index].r;
@@ -405,7 +405,7 @@ bool wxBMPHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose
                     else
                     {
                         int nibble = 0;
-                        for (nibble = 0; nibble < 2; nibble++)
+                        for (nibble = 0; nibble < 2 && column < width; nibble++)
                         {
                             index = ((aByte & (0xF0 >> nibble * 4)) >> (!nibble * 4));
                             if (index >= 16)
@@ -461,7 +461,7 @@ bool wxBMPHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose
                         }
                         else
                         {
-                            for (int l = 0; l < first; l++)
+                            for (int l = 0; l < first && column < width; l++)
                             {
                                 ptr[poffset    ] = cmap[aByte].r;
                                 ptr[poffset + 1] = cmap[aByte].g;
index b28617d537d666bf65146a5edea093b3c957626b..3605e2a7071b91c19e617a079665f092f5a16336 100644 (file)
@@ -103,6 +103,16 @@ wxFileOutputStream::wxFileOutputStream(const wxString& fileName)
 {
     m_file = new wxFile(fileName, wxFile::write);
     m_file_destroy = TRUE;
+    
+    if (!m_file->IsOpened())
+    {
+        m_lasterror = wxSTREAM_WRITE_ERROR;
+    }
+    else
+    {
+        if (m_file->Error())
+            m_lasterror = wxSTREAM_WRITE_ERROR;
+    }
 }
 
 wxFileOutputStream::wxFileOutputStream(wxFile& file)
@@ -250,6 +260,16 @@ wxFFileOutputStream::wxFFileOutputStream(const wxString& fileName)
 {
     m_file = new wxFFile(fileName, "w+b");
     m_file_destroy = TRUE;
+    
+    if (!m_file->IsOpened())
+    {
+        m_lasterror = wxSTREAM_WRITE_ERROR;
+    }
+    else
+    {
+        if (m_file->Error())
+            m_lasterror = wxSTREAM_WRITE_ERROR;
+    }
 }
 
 wxFFileOutputStream::wxFFileOutputStream(wxFFile& file)
index 753c10c86d05d7ffd1099d10a8afda4e9f92ca28..cf23db38e6e77004daa6cff5d620ebbeb1ca0d75 100644 (file)
@@ -1600,15 +1600,30 @@ static gint gtk_window_focus_in_callback( GtkWidget *widget, GdkEvent *WXUNUSED(
     }
 #endif // wxUSE_CARET
 
-    wxFocusEvent event( wxEVT_SET_FOCUS, win->GetId() );
-    event.SetEventObject( win );
+    if (win->IsTopLevel())
+    {
+        wxActivateEvent event( wxEVT_ACTIVATE, TRUE, win->GetId() );
+        event.SetEventObject( win );
 
-    if (win->GetEventHandler()->ProcessEvent( event ))
+        if (win->GetEventHandler()->ProcessEvent( event ))
+        {
+            gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_in_event" );
+            return TRUE;
+        }
+    }
+    else
     {
-        gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_in_event" );
-        return TRUE;
+        wxFocusEvent event( wxEVT_SET_FOCUS, win->GetId() );
+        event.SetEventObject( win );
+
+        if (win->GetEventHandler()->ProcessEvent( event ))
+        {
+            gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_in_event" );
+            return TRUE;
+        }
     }
 
+
     return FALSE;
 }
 
@@ -1658,13 +1673,27 @@ static gint gtk_window_focus_out_callback( GtkWidget *widget, GdkEvent *WXUNUSED
     }
 #endif // wxUSE_CARET
 
-    wxFocusEvent event( wxEVT_KILL_FOCUS, win->GetId() );
-    event.SetEventObject( win );
+    if (win->IsTopLevel())
+    {
+        wxActivateEvent event( wxEVT_ACTIVATE, FALSE, win->GetId() );
+        event.SetEventObject( win );
 
-    if (win->GetEventHandler()->ProcessEvent( event ))
+        if (win->GetEventHandler()->ProcessEvent( event ))
+        {
+            gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_out_event" );
+            return TRUE;
+        }
+    }
+    else
     {
-        gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_out_event" );
-        return TRUE;
+        wxFocusEvent event( wxEVT_KILL_FOCUS, win->GetId() );
+        event.SetEventObject( win );
+
+        if (win->GetEventHandler()->ProcessEvent( event ))
+        {
+            gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_out_event" );
+            return TRUE;
+        }
     }
 
     return FALSE;
@@ -2647,7 +2676,7 @@ void wxWindow::OnInternalIdle()
         // do it only once
         g_sendActivateEvent = -1;
 
-        wxActivateEvent event(wxEVT_ACTIVATE, activate, GetId());
+        wxActivateEvent event(wxEVT_ACTIVATE_APP, activate, GetId());
         event.SetEventObject(this);
 
         (void)GetEventHandler()->ProcessEvent(event);
index 753c10c86d05d7ffd1099d10a8afda4e9f92ca28..cf23db38e6e77004daa6cff5d620ebbeb1ca0d75 100644 (file)
@@ -1600,15 +1600,30 @@ static gint gtk_window_focus_in_callback( GtkWidget *widget, GdkEvent *WXUNUSED(
     }
 #endif // wxUSE_CARET
 
-    wxFocusEvent event( wxEVT_SET_FOCUS, win->GetId() );
-    event.SetEventObject( win );
+    if (win->IsTopLevel())
+    {
+        wxActivateEvent event( wxEVT_ACTIVATE, TRUE, win->GetId() );
+        event.SetEventObject( win );
 
-    if (win->GetEventHandler()->ProcessEvent( event ))
+        if (win->GetEventHandler()->ProcessEvent( event ))
+        {
+            gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_in_event" );
+            return TRUE;
+        }
+    }
+    else
     {
-        gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_in_event" );
-        return TRUE;
+        wxFocusEvent event( wxEVT_SET_FOCUS, win->GetId() );
+        event.SetEventObject( win );
+
+        if (win->GetEventHandler()->ProcessEvent( event ))
+        {
+            gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_in_event" );
+            return TRUE;
+        }
     }
 
+
     return FALSE;
 }
 
@@ -1658,13 +1673,27 @@ static gint gtk_window_focus_out_callback( GtkWidget *widget, GdkEvent *WXUNUSED
     }
 #endif // wxUSE_CARET
 
-    wxFocusEvent event( wxEVT_KILL_FOCUS, win->GetId() );
-    event.SetEventObject( win );
+    if (win->IsTopLevel())
+    {
+        wxActivateEvent event( wxEVT_ACTIVATE, FALSE, win->GetId() );
+        event.SetEventObject( win );
 
-    if (win->GetEventHandler()->ProcessEvent( event ))
+        if (win->GetEventHandler()->ProcessEvent( event ))
+        {
+            gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_out_event" );
+            return TRUE;
+        }
+    }
+    else
     {
-        gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_out_event" );
-        return TRUE;
+        wxFocusEvent event( wxEVT_KILL_FOCUS, win->GetId() );
+        event.SetEventObject( win );
+
+        if (win->GetEventHandler()->ProcessEvent( event ))
+        {
+            gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_out_event" );
+            return TRUE;
+        }
     }
 
     return FALSE;
@@ -2647,7 +2676,7 @@ void wxWindow::OnInternalIdle()
         // do it only once
         g_sendActivateEvent = -1;
 
-        wxActivateEvent event(wxEVT_ACTIVATE, activate, GetId());
+        wxActivateEvent event(wxEVT_ACTIVATE_APP, activate, GetId());
         event.SetEventObject(this);
 
         (void)GetEventHandler()->ProcessEvent(event);