Applied BMP patch.

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
This commit is contained in:
Robert Roebling
2001-04-22 10:20:56 +00:00
parent b06a6b20d5
commit 942bef71b0
5 changed files with 109 additions and 60 deletions

View File

@@ -48,19 +48,6 @@
#include "wx/msw/winundef.h" #include "wx/msw/winundef.h"
#endif #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 // implementation
// ============================================================================ // ============================================================================
@@ -167,24 +154,8 @@ bool wxFileName::DirExists( const wxString &dir )
wxDateTime wxFileName::GetModificationTime() wxDateTime wxFileName::GetModificationTime()
{ {
#ifdef __WXGTK__ wxDateTime ret( wxFileModificationTime( GetFullPath() ) );
struct stat buff;
stat( GetFullName().fn_str(), &buff );
#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; return ret;
} }

View File

@@ -383,7 +383,7 @@ bool wxBMPHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose
if (bpp == 1) if (bpp == 1)
{ {
int bit = 0; int bit = 0;
for (bit = 0; bit < 8; bit++) for (bit = 0; bit < 8 && column < width; bit++)
{ {
index = ((aByte & (0x80 >> bit)) ? 1 : 0); index = ((aByte & (0x80 >> bit)) ? 1 : 0);
ptr[poffset] = cmap[index].r; ptr[poffset] = cmap[index].r;
@@ -405,7 +405,7 @@ bool wxBMPHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose
else else
{ {
int nibble = 0; int nibble = 0;
for (nibble = 0; nibble < 2; nibble++) for (nibble = 0; nibble < 2 && column < width; nibble++)
{ {
index = ((aByte & (0xF0 >> nibble * 4)) >> (!nibble * 4)); index = ((aByte & (0xF0 >> nibble * 4)) >> (!nibble * 4));
if (index >= 16) if (index >= 16)
@@ -461,7 +461,7 @@ bool wxBMPHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose
} }
else else
{ {
for (int l = 0; l < first; l++) for (int l = 0; l < first && column < width; l++)
{ {
ptr[poffset ] = cmap[aByte].r; ptr[poffset ] = cmap[aByte].r;
ptr[poffset + 1] = cmap[aByte].g; ptr[poffset + 1] = cmap[aByte].g;

View File

@@ -103,6 +103,16 @@ wxFileOutputStream::wxFileOutputStream(const wxString& fileName)
{ {
m_file = new wxFile(fileName, wxFile::write); m_file = new wxFile(fileName, wxFile::write);
m_file_destroy = TRUE; 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) wxFileOutputStream::wxFileOutputStream(wxFile& file)
@@ -250,6 +260,16 @@ wxFFileOutputStream::wxFFileOutputStream(const wxString& fileName)
{ {
m_file = new wxFFile(fileName, "w+b"); m_file = new wxFFile(fileName, "w+b");
m_file_destroy = TRUE; 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) wxFFileOutputStream::wxFFileOutputStream(wxFFile& file)

View File

@@ -1600,6 +1600,19 @@ static gint gtk_window_focus_in_callback( GtkWidget *widget, GdkEvent *WXUNUSED(
} }
#endif // wxUSE_CARET #endif // wxUSE_CARET
if (win->IsTopLevel())
{
wxActivateEvent event( wxEVT_ACTIVATE, TRUE, win->GetId() );
event.SetEventObject( win );
if (win->GetEventHandler()->ProcessEvent( event ))
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_in_event" );
return TRUE;
}
}
else
{
wxFocusEvent event( wxEVT_SET_FOCUS, win->GetId() ); wxFocusEvent event( wxEVT_SET_FOCUS, win->GetId() );
event.SetEventObject( win ); event.SetEventObject( win );
@@ -1608,6 +1621,8 @@ static gint gtk_window_focus_in_callback( GtkWidget *widget, GdkEvent *WXUNUSED(
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_in_event" ); gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_in_event" );
return TRUE; return TRUE;
} }
}
return FALSE; return FALSE;
} }
@@ -1658,6 +1673,19 @@ static gint gtk_window_focus_out_callback( GtkWidget *widget, GdkEvent *WXUNUSED
} }
#endif // wxUSE_CARET #endif // wxUSE_CARET
if (win->IsTopLevel())
{
wxActivateEvent event( wxEVT_ACTIVATE, FALSE, win->GetId() );
event.SetEventObject( win );
if (win->GetEventHandler()->ProcessEvent( event ))
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_out_event" );
return TRUE;
}
}
else
{
wxFocusEvent event( wxEVT_KILL_FOCUS, win->GetId() ); wxFocusEvent event( wxEVT_KILL_FOCUS, win->GetId() );
event.SetEventObject( win ); event.SetEventObject( win );
@@ -1666,6 +1694,7 @@ static gint gtk_window_focus_out_callback( GtkWidget *widget, GdkEvent *WXUNUSED
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_out_event" ); gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_out_event" );
return TRUE; return TRUE;
} }
}
return FALSE; return FALSE;
} }
@@ -2647,7 +2676,7 @@ void wxWindow::OnInternalIdle()
// do it only once // do it only once
g_sendActivateEvent = -1; g_sendActivateEvent = -1;
wxActivateEvent event(wxEVT_ACTIVATE, activate, GetId()); wxActivateEvent event(wxEVT_ACTIVATE_APP, activate, GetId());
event.SetEventObject(this); event.SetEventObject(this);
(void)GetEventHandler()->ProcessEvent(event); (void)GetEventHandler()->ProcessEvent(event);

View File

@@ -1600,6 +1600,19 @@ static gint gtk_window_focus_in_callback( GtkWidget *widget, GdkEvent *WXUNUSED(
} }
#endif // wxUSE_CARET #endif // wxUSE_CARET
if (win->IsTopLevel())
{
wxActivateEvent event( wxEVT_ACTIVATE, TRUE, win->GetId() );
event.SetEventObject( win );
if (win->GetEventHandler()->ProcessEvent( event ))
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_in_event" );
return TRUE;
}
}
else
{
wxFocusEvent event( wxEVT_SET_FOCUS, win->GetId() ); wxFocusEvent event( wxEVT_SET_FOCUS, win->GetId() );
event.SetEventObject( win ); event.SetEventObject( win );
@@ -1608,6 +1621,8 @@ static gint gtk_window_focus_in_callback( GtkWidget *widget, GdkEvent *WXUNUSED(
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_in_event" ); gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_in_event" );
return TRUE; return TRUE;
} }
}
return FALSE; return FALSE;
} }
@@ -1658,6 +1673,19 @@ static gint gtk_window_focus_out_callback( GtkWidget *widget, GdkEvent *WXUNUSED
} }
#endif // wxUSE_CARET #endif // wxUSE_CARET
if (win->IsTopLevel())
{
wxActivateEvent event( wxEVT_ACTIVATE, FALSE, win->GetId() );
event.SetEventObject( win );
if (win->GetEventHandler()->ProcessEvent( event ))
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_out_event" );
return TRUE;
}
}
else
{
wxFocusEvent event( wxEVT_KILL_FOCUS, win->GetId() ); wxFocusEvent event( wxEVT_KILL_FOCUS, win->GetId() );
event.SetEventObject( win ); event.SetEventObject( win );
@@ -1666,6 +1694,7 @@ static gint gtk_window_focus_out_callback( GtkWidget *widget, GdkEvent *WXUNUSED
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_out_event" ); gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_out_event" );
return TRUE; return TRUE;
} }
}
return FALSE; return FALSE;
} }
@@ -2647,7 +2676,7 @@ void wxWindow::OnInternalIdle()
// do it only once // do it only once
g_sendActivateEvent = -1; g_sendActivateEvent = -1;
wxActivateEvent event(wxEVT_ACTIVATE, activate, GetId()); wxActivateEvent event(wxEVT_ACTIVATE_APP, activate, GetId());
event.SetEventObject(this); event.SetEventObject(this);
(void)GetEventHandler()->ProcessEvent(event); (void)GetEventHandler()->ProcessEvent(event);