Fixed module code

Fixed printing and preview
  Grid: event handlers MUST NOT BE VIRTUAL
  Corrected init code for all DCs


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1055 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1998-11-25 17:55:08 +00:00
parent 6e7a2c38f2
commit 031b2a7b8d
12 changed files with 127 additions and 98 deletions

View File

@@ -150,21 +150,21 @@ class WXDLLEXPORT wxGenericGrid: public wxPanel
virtual void OnSelectCellImplementation(wxDC *dc, int row, int col); virtual void OnSelectCellImplementation(wxDC *dc, int row, int col);
virtual void OnSelectCell(int WXUNUSED(row), int WXUNUSED(col)) {}; virtual void OnSelectCell(int WXUNUSED(row), int WXUNUSED(col)) {};
virtual void _OnSelectCell(wxGridEvent& event); void _OnSelectCell(wxGridEvent& event);
// Override to create your own class of grid cell // Override to create your own class of grid cell
virtual wxGridCell *OnCreateCell(void); virtual wxGridCell *OnCreateCell(void);
virtual void _OnCreateCell(wxGridEvent& event); void _OnCreateCell(wxGridEvent& event);
// Override to change labels e.g. creation of grid, inserting/deleting a row/col. // Override to change labels e.g. creation of grid, inserting/deleting a row/col.
// By default, auto-labels the grid. // By default, auto-labels the grid.
virtual void OnChangeLabels(void); virtual void OnChangeLabels(void);
virtual void _OnChangeLabels(wxGridEvent& event); void _OnChangeLabels(wxGridEvent& event);
// Override to change the label of the edit field when selecting a cell // Override to change the label of the edit field when selecting a cell
// By default, sets it to e.g. A12 // By default, sets it to e.g. A12
virtual void OnChangeSelectionLabel(void); virtual void OnChangeSelectionLabel(void);
virtual void _OnChangeSelectionLabel(wxGridEvent& event); void _OnChangeSelectionLabel(wxGridEvent& event);
// Override for event processing // Override for event processing
virtual void OnCellChange(int WXUNUSED(row), int WXUNUSED(col)) {}; virtual void OnCellChange(int WXUNUSED(row), int WXUNUSED(col)) {};
@@ -173,12 +173,11 @@ class WXDLLEXPORT wxGenericGrid: public wxPanel
virtual void OnLabelLeftClick(int WXUNUSED(row), int WXUNUSED(col), int WXUNUSED(x), int WXUNUSED(y), bool WXUNUSED(control), bool WXUNUSED(shift)) {}; virtual void OnLabelLeftClick(int WXUNUSED(row), int WXUNUSED(col), int WXUNUSED(x), int WXUNUSED(y), bool WXUNUSED(control), bool WXUNUSED(shift)) {};
virtual void OnLabelRightClick(int WXUNUSED(row), int WXUNUSED(col), int WXUNUSED(x), int WXUNUSED(y), bool WXUNUSED(control), bool WXUNUSED(shift)) {}; virtual void OnLabelRightClick(int WXUNUSED(row), int WXUNUSED(col), int WXUNUSED(x), int WXUNUSED(y), bool WXUNUSED(control), bool WXUNUSED(shift)) {};
virtual void _OnCellChange(wxGridEvent& event); void _OnCellChange(wxGridEvent& event);
virtual void _OnCellLeftClick(wxGridEvent& event); void _OnCellLeftClick(wxGridEvent& event);
virtual void _OnCellRightClick(wxGridEvent& event); void _OnCellRightClick(wxGridEvent& event);
virtual void _OnLabelLeftClick(wxGridEvent& event); void _OnLabelLeftClick(wxGridEvent& event);
virtual void _OnLabelRightClick(wxGridEvent& event); void _OnLabelRightClick(wxGridEvent& event);
// Activation: call from wxFrame::OnActivate // Activation: call from wxFrame::OnActivate
void OnActivate(bool active); void OnActivate(bool active);

View File

@@ -38,6 +38,8 @@
#include "wx/print.h" #include "wx/print.h"
#include "wx/printdlg.h" #include "wx/printdlg.h"
#include "wx/accel.h"
#if wxTEST_POSTSCRIPT_IN_MSW #if wxTEST_POSTSCRIPT_IN_MSW
#include "wx/generic/printps.h" #include "wx/generic/printps.h"
#include "wx/generic/prntdlgg.h" #include "wx/generic/prntdlgg.h"
@@ -91,6 +93,12 @@ bool MyApp::OnInit(void)
file_menu->Append(WXPRINT_PAGE_SETUP, "Page Set&up...", "Page setup"); file_menu->Append(WXPRINT_PAGE_SETUP, "Page Set&up...", "Page setup");
file_menu->Append(WXPRINT_PREVIEW, "Print Pre&view", "Preview"); file_menu->Append(WXPRINT_PREVIEW, "Print Pre&view", "Preview");
// Accelerators
wxAcceleratorEntry entries[1];
entries[0].Set(wxACCEL_CTRL, (int) 'V', WXPRINT_PREVIEW);
wxAcceleratorTable accel(1, entries);
frame->SetAcceleratorTable(accel);
#if defined(__WXMSW__) && wxTEST_POSTSCRIPT_IN_MSW #if defined(__WXMSW__) && wxTEST_POSTSCRIPT_IN_MSW
file_menu->AppendSeparator(); file_menu->AppendSeparator();
file_menu->Append(WXPRINT_PRINT_PS, "Print PostScript...", "Print (PostScript)"); file_menu->Append(WXPRINT_PRINT_PS, "Print PostScript...", "Print (PostScript)");

View File

@@ -22,10 +22,6 @@
#include "wx/defs.h" #include "wx/defs.h"
#ifndef __WXGTK__
#define __GOOD_COMPILER__
#endif
#ifndef WX_PRECOMP #ifndef WX_PRECOMP
#include "wx/utils.h" #include "wx/utils.h"
#include "wx/dc.h" #include "wx/dc.h"
@@ -203,6 +199,7 @@ wxPreviewCanvas::~wxPreviewCanvas()
void wxPreviewCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) void wxPreviewCanvas::OnPaint(wxPaintEvent& WXUNUSED(event))
{ {
wxPaintDC dc(this); wxPaintDC dc(this);
PrepareDC( dc );
if (m_printPreview) if (m_printPreview)
{ {
@@ -313,8 +310,6 @@ void wxPreviewControlBar::OnZoom(wxCommandEvent& WXUNUSED(event))
void wxPreviewControlBar::CreateButtons() void wxPreviewControlBar::CreateButtons()
{ {
#ifdef __GOOD_COMPILER__ // Robert Roebling
SetSize(0, 0, 400, 40); SetSize(0, 0, 400, 40);
#ifdef __WXMSW__ #ifdef __WXMSW__
@@ -327,7 +322,11 @@ void wxPreviewControlBar::CreateButtons()
SetFont(buttonFont); SetFont(buttonFont);
int buttonWidth = 65; int buttonWidth = 65;
int buttonHeight = 24; #ifdef __WXGTK__
int buttonHeight = -1;
#else
int buttonHeight = 24;
#endif
int x = 5; int x = 5;
int y = 5; int y = 5;
@@ -359,10 +358,33 @@ void wxPreviewControlBar::CreateButtons()
x += gap + buttonWidth; x += gap + buttonWidth;
} }
// Can't be static because gcc bails out // Yes, this look stupid, but this is because gcc gives up otherwise.
wxString choices[] = { "10%", "20%", "25%", "30%", "35%", "40%", "45%", "50%", "55%", "60%", wxString *choices = new wxString[23];
"65%", "70%", "75%", "80%", "85%", "90%", "95%", "100%", "110%", "120%", "150%", "200%" }; choices[0] = "10%";
int n = 22; choices[1] = "15%";
choices[2] = "20%";
choices[3] = "25%";
choices[4] = "30%";
choices[5] = "35%";
choices[6] = "40%";
choices[7] = "45%";
choices[8] = "50%";
choices[9] = "55%";
choices[10] = "60%";
choices[11] = "65%";
choices[12] = "70%";
choices[13] = "75%";
choices[14] = "80%";
choices[15] = "85%";
choices[16] = "90%";
choices[17] = "95%";
choices[18] = "100%";
choices[19] = "110%";
choices[20] = "120%";
choices[21] = "150%";
choices[22] = "200%";
int n = 23;
if (m_buttonFlags & wxPREVIEW_ZOOM) if (m_buttonFlags & wxPREVIEW_ZOOM)
{ {
m_zoomControl = new wxChoice(this, wxID_PREVIEW_ZOOM, wxPoint(x, y), m_zoomControl = new wxChoice(this, wxID_PREVIEW_ZOOM, wxPoint(x, y),
@@ -370,24 +392,21 @@ void wxPreviewControlBar::CreateButtons()
SetZoomControl(m_printPreview->GetZoom()); SetZoomControl(m_printPreview->GetZoom());
} }
m_closeButton->SetDefault(); delete[] choices;
#endif m_closeButton->SetDefault();
} }
void wxPreviewControlBar::SetZoomControl(int zoom) void wxPreviewControlBar::SetZoomControl(int zoom)
{ {
#ifdef __GOOD_COMPILER__ // Robert Roebling
char buf[20]; char buf[20];
sprintf(buf, "%d%%", zoom); sprintf(buf, "%d%%", zoom);
if (m_zoomControl) if (m_zoomControl)
m_zoomControl->SetStringSelection(buf); m_zoomControl->SetStringSelection(buf);
#endif
} }
int wxPreviewControlBar::GetZoomControl() int wxPreviewControlBar::GetZoomControl()
{ {
#ifdef __GOOD_COMPILER__ // Robert Roebling
char buf[20]; char buf[20];
if (m_zoomControl && m_zoomControl->GetStringSelection()) if (m_zoomControl && m_zoomControl->GetStringSelection())
{ {
@@ -396,9 +415,6 @@ int wxPreviewControlBar::GetZoomControl()
return (int)atoi(buf); return (int)atoi(buf);
} }
else return 0; else return 0;
#else
return 0;
#endif
} }
@@ -410,11 +426,9 @@ wxPreviewFrame::wxPreviewFrame(wxPrintPreviewBase *preview, wxFrame *parent, con
const wxPoint& pos, const wxSize& size, long style, const wxString& name): const wxPoint& pos, const wxSize& size, long style, const wxString& name):
wxFrame(parent, -1, title, pos, size, style, name) wxFrame(parent, -1, title, pos, size, style, name)
{ {
#ifdef __GOOD_COMPILER__ // Robert Roebling
m_printPreview = preview; m_printPreview = preview;
m_controlBar = NULL; m_controlBar = NULL;
m_previewCanvas = NULL; m_previewCanvas = NULL;
#endif
} }
wxPreviewFrame::~wxPreviewFrame() wxPreviewFrame::~wxPreviewFrame()
@@ -423,8 +437,6 @@ wxPreviewFrame::~wxPreviewFrame()
bool wxPreviewFrame::OnClose() bool wxPreviewFrame::OnClose()
{ {
#ifdef __GOOD_COMPILER__ // Robert Roebling
MakeModal(FALSE); MakeModal(FALSE);
// Need to delete the printout and the print preview // Need to delete the printout and the print preview
@@ -438,16 +450,10 @@ bool wxPreviewFrame::OnClose()
} }
delete m_printPreview; delete m_printPreview;
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
void wxPreviewFrame::Initialize() void wxPreviewFrame::Initialize()
{ {
#ifdef __GOOD_COMPILER__ // Robert Roebling
CreateStatusBar(); CreateStatusBar();
CreateCanvas(); CreateCanvas();
@@ -463,7 +469,7 @@ void wxPreviewFrame::Initialize()
// int w, h; // int w, h;
// m_controlBar->GetSize(&w, &h); // m_controlBar->GetSize(&w, &h);
int h; int h;
#ifdef __WXMSW__ #if (defined(__WXMSW__) || defined(__WXGTK__))
h = 40; h = 40;
#else #else
h = 60; h = 60;
@@ -491,30 +497,21 @@ void wxPreviewFrame::Initialize()
MakeModal(TRUE); MakeModal(TRUE);
Layout(); Layout();
#endif
} }
void wxPreviewFrame::CreateCanvas() void wxPreviewFrame::CreateCanvas()
{ {
#ifdef __GOOD_COMPILER__ // Robert Roebling
m_previewCanvas = new wxPreviewCanvas(m_printPreview, this); m_previewCanvas = new wxPreviewCanvas(m_printPreview, this);
#endif
} }
void wxPreviewFrame::CreateControlBar() void wxPreviewFrame::CreateControlBar()
{ {
#ifdef __GOOD_COMPILER__ // Robert Roebling
long buttons = wxPREVIEW_DEFAULT; long buttons = wxPREVIEW_DEFAULT;
if (m_printPreview->GetPrintoutForPrinting()) if (m_printPreview->GetPrintoutForPrinting())
buttons |= wxPREVIEW_PRINT; buttons |= wxPREVIEW_PRINT;
m_controlBar = new wxPreviewControlBar(m_printPreview, buttons, this, wxPoint(0, 0), wxSize(400, 40)); m_controlBar = new wxPreviewControlBar(m_printPreview, buttons, this, wxPoint(0, 0), wxSize(400, 40));
m_controlBar->CreateButtons(); m_controlBar->CreateButtons();
#endif
} }
/* /*
@@ -523,9 +520,6 @@ void wxPreviewFrame::CreateControlBar()
wxPrintPreviewBase::wxPrintPreviewBase(wxPrintout *printout, wxPrintout *printoutForPrinting, wxPrintData *data) wxPrintPreviewBase::wxPrintPreviewBase(wxPrintout *printout, wxPrintout *printoutForPrinting, wxPrintData *data)
{ {
#ifdef __GOOD_COMPILER__ // Robert Roebling
m_isOk = TRUE; m_isOk = TRUE;
m_previewPrintout = printout; m_previewPrintout = printout;
if (m_previewPrintout) if (m_previewPrintout)
@@ -550,27 +544,20 @@ wxPrintPreviewBase::wxPrintPreviewBase(wxPrintout *printout, wxPrintout *printou
// Get some parameters from the printout, if defined // Get some parameters from the printout, if defined
int selFrom, selTo; int selFrom, selTo;
printout->GetPageInfo(&m_minPage, &m_maxPage, &selFrom, &selTo); printout->GetPageInfo(&m_minPage, &m_maxPage, &selFrom, &selTo);
#endif
} }
wxPrintPreviewBase::~wxPrintPreviewBase() wxPrintPreviewBase::~wxPrintPreviewBase()
{ {
#ifdef __GOOD_COMPILER__ // Robert Roebling
if (m_previewPrintout) if (m_previewPrintout)
delete m_previewPrintout; delete m_previewPrintout;
if (m_previewBitmap) if (m_previewBitmap)
delete m_previewBitmap; delete m_previewBitmap;
if (m_printPrintout) if (m_printPrintout)
delete m_printPrintout; delete m_printPrintout;
#endif
} }
bool wxPrintPreviewBase::SetCurrentPage(int pageNum) bool wxPrintPreviewBase::SetCurrentPage(int pageNum)
{ {
#ifdef __GOOD_COMPILER__ // Robert Roebling
if (m_currentPage == pageNum) if (m_currentPage == pageNum)
return TRUE; return TRUE;
@@ -586,16 +573,11 @@ bool wxPrintPreviewBase::SetCurrentPage(int pageNum)
RenderPage(pageNum); RenderPage(pageNum);
m_previewCanvas->Refresh(); m_previewCanvas->Refresh();
} }
#endif
return TRUE; return TRUE;
} }
bool wxPrintPreviewBase::PaintPage(wxWindow *canvas, wxDC& dc) bool wxPrintPreviewBase::PaintPage(wxWindow *canvas, wxDC& dc)
{ {
#ifdef __GOOD_COMPILER__ // Robert Roebling
DrawBlankPage(canvas, dc); DrawBlankPage(canvas, dc);
if (!m_previewBitmap) if (!m_previewBitmap)
@@ -626,8 +608,6 @@ bool wxPrintPreviewBase::PaintPage(wxWindow *canvas, wxDC& dc)
temp_dc.SelectObject(wxNullBitmap); temp_dc.SelectObject(wxNullBitmap);
#endif
return TRUE; return TRUE;
} }
@@ -635,8 +615,6 @@ bool wxPrintPreviewBase::RenderPage(int pageNum)
{ {
int canvasWidth, canvasHeight; int canvasWidth, canvasHeight;
#ifdef __GOOD_COMPILER__ // Robert Roebling
if (!m_previewCanvas) if (!m_previewCanvas)
{ {
wxMessageBox(_("wxPrintPreviewBase::RenderPage: must use wxPrintPreviewBase::SetCanvas to let me know about the canvas!"), wxMessageBox(_("wxPrintPreviewBase::RenderPage: must use wxPrintPreviewBase::SetCanvas to let me know about the canvas!"),
@@ -695,7 +673,6 @@ bool wxPrintPreviewBase::RenderPage(int pageNum)
m_previewPrintout->SetDC(NULL); m_previewPrintout->SetDC(NULL);
memoryDC.SelectObject(wxNullBitmap); memoryDC.SelectObject(wxNullBitmap);
#endif
char buf[200]; char buf[200];
if (m_maxPage != 0) if (m_maxPage != 0)
@@ -712,9 +689,6 @@ bool wxPrintPreviewBase::RenderPage(int pageNum)
bool wxPrintPreviewBase::DrawBlankPage(wxWindow *canvas, wxDC& dc) bool wxPrintPreviewBase::DrawBlankPage(wxWindow *canvas, wxDC& dc)
{ {
#ifdef __GOOD_COMPILER__ // Robert Roebling
int canvasWidth, canvasHeight; int canvasWidth, canvasHeight;
canvas->GetSize(&canvasWidth, &canvasHeight); canvas->GetSize(&canvasWidth, &canvasHeight);
@@ -740,14 +714,11 @@ bool wxPrintPreviewBase::DrawBlankPage(wxWindow *canvas, wxDC& dc)
dc.DrawRectangle((int)(x-1), (int)(y-1), (int)(actualWidth+2), (int)(actualHeight+2)); dc.DrawRectangle((int)(x-1), (int)(y-1), (int)(actualWidth+2), (int)(actualHeight+2));
#endif
return TRUE; return TRUE;
} }
void wxPrintPreviewBase::SetZoom(int percent) void wxPrintPreviewBase::SetZoom(int percent)
{ {
#ifdef __GOOD_COMPILER__ // Robert Roebling
if (m_currentZoom == percent) if (m_currentZoom == percent)
return; return;
@@ -764,6 +735,4 @@ void wxPrintPreviewBase::SetZoom(int percent)
m_previewCanvas->Clear(); m_previewCanvas->Clear();
m_previewCanvas->Refresh(); m_previewCanvas->Refresh();
} }
#endif
} }

View File

@@ -1406,9 +1406,10 @@ void wxGenericGrid::OnSelectCellImplementation(wxDC *dc, int row, int col)
SetGridClippingRegion(dc); SetGridClippingRegion(dc);
// Why isn't this needed for Windows?? // 1) Why isn't this needed for Windows??
// Probably because of the SetValue?? // Probably because of the SetValue?? JS.
// Arrrrrgh. This isn't needed anywhere, of course. RR. // 2) Arrrrrgh. This isn't needed anywhere,
// of course. One hour of debugging... RR.
#ifndef __WXMSW__ #ifndef __WXMSW__
// HighlightCell(dc); // HighlightCell(dc);
#endif #endif
@@ -2518,12 +2519,12 @@ void wxGenericGrid::_OnCreateCell(wxGridEvent& ev)
ev.m_cell = OnCreateCell(); ev.m_cell = OnCreateCell();
} }
void wxGenericGrid::_OnChangeLabels(wxGridEvent& ev) void wxGenericGrid::_OnChangeLabels(wxGridEvent& WXUNUSED(ev))
{ {
OnChangeLabels(); OnChangeLabels();
} }
void wxGenericGrid::_OnChangeSelectionLabel(wxGridEvent& ev) void wxGenericGrid::_OnChangeSelectionLabel(wxGridEvent& WXUNUSED(ev))
{ {
OnChangeSelectionLabel(); OnChangeSelectionLabel();
} }

View File

@@ -20,6 +20,7 @@
#include "wx/font.h" #include "wx/font.h"
#include "wx/settings.h" #include "wx/settings.h"
#include "wx/resource.h" #include "wx/resource.h"
#include "wx/module.h"
#include "unistd.h" #include "unistd.h"
@@ -424,6 +425,9 @@ int wxEntry( int argc, char *argv[] )
wxApp::CommonInit(); wxApp::CommonInit();
wxModule::RegisterModules();
if (!wxModule::InitializeModules()) return FALSE;
wxTheApp->OnInitGui(); wxTheApp->OnInitGui();
// Here frames insert themselves automatically // Here frames insert themselves automatically
@@ -442,6 +446,8 @@ int wxEntry( int argc, char *argv[] )
wxTheApp->OnExit(); wxTheApp->OnExit();
wxModule::CleanUpModules();
wxApp::CommonCleanUp(); wxApp::CommonCleanUp();
wxDELETE(wxTheApp); wxDELETE(wxTheApp);

View File

@@ -555,7 +555,7 @@ bool wxPaintDC::Blit( long xdest, long ydest, long width, long height,
gdk_gc_set_clip_mask( m_textGC, mask ); gdk_gc_set_clip_mask( m_textGC, mask );
gdk_gc_set_clip_origin( m_textGC, xx, yy ); gdk_gc_set_clip_origin( m_textGC, xx, yy );
} }
gdk_draw_pixmap( m_window, m_textGC, pmap, gdk_draw_pixmap( m_window, m_textGC, pmap,
source->DeviceToLogicalX(xsrc), source->DeviceToLogicalX(xsrc),
source->DeviceToLogicalY(ysrc), source->DeviceToLogicalY(ysrc),
@@ -829,6 +829,7 @@ void wxPaintDC::SetBackground( const wxBrush &brush )
m_backgroundBrush.GetColour().CalcPixel( m_cmap ); m_backgroundBrush.GetColour().CalcPixel( m_cmap );
gdk_gc_set_background( m_brushGC, m_backgroundBrush.GetColour().GetColor() ); gdk_gc_set_background( m_brushGC, m_backgroundBrush.GetColour().GetColor() );
gdk_gc_set_background( m_bgGC, m_backgroundBrush.GetColour().GetColor() );
gdk_gc_set_foreground( m_bgGC, m_backgroundBrush.GetColour().GetColor() ); gdk_gc_set_foreground( m_bgGC, m_backgroundBrush.GetColour().GetColor() );
GdkFill fillStyle = GDK_SOLID; GdkFill fillStyle = GDK_SOLID;
@@ -950,9 +951,22 @@ void wxPaintDC::SetUpDC(void)
m_bgGC = gdk_gc_new( m_window ); m_bgGC = gdk_gc_new( m_window );
SetTextForeground( m_textForegroundColour ); SetTextForeground( m_textForegroundColour );
SetTextBackground( m_textBackgroundColour ); SetTextBackground( m_textBackgroundColour );
SetPen( m_pen );
SetFont( m_font ); wxPen tmp_pen( m_pen );
SetBrush( m_brush ); m_pen = wxNullPen;
SetPen( tmp_pen );
wxFont tmp_font( m_font );
m_font = wxNullFont;
SetFont( tmp_font );
wxBrush tmp_brush( m_brush );
m_brush = wxNullBrush;
SetBrush( tmp_brush );
tmp_brush = m_backgroundBrush;
m_backgroundBrush = wxNullBrush;
SetBackground( tmp_brush );
gdk_gc_set_background( m_penGC, wxWHITE->GetColor() ); gdk_gc_set_background( m_penGC, wxWHITE->GetColor() );

View File

@@ -19,14 +19,14 @@
IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxPaintDC) IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxPaintDC)
wxMemoryDC::wxMemoryDC(void) wxMemoryDC::wxMemoryDC(void) : wxPaintDC()
{ {
m_ok = FALSE; m_ok = FALSE;
m_cmap = gtk_widget_get_default_colormap(); m_cmap = gtk_widget_get_default_colormap();
} }
wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) ) wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) ) : wxPaintDC()
{ {
m_ok = FALSE; m_ok = FALSE;

View File

@@ -186,15 +186,15 @@ static void gtk_window_draw_callback( GtkWidget *WXUNUSED(widget), GdkRectangle
static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxWindow *win ) static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxWindow *win )
{ {
printf( "OnKeyPress.\n " );
if (!win->HasVMT()) return FALSE; if (!win->HasVMT()) return FALSE;
if (g_blockEventsOnDrag) return FALSE; if (g_blockEventsOnDrag) return FALSE;
/*
printf( "OnKeyPress from " ); printf( "OnKeyPress from " );
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
printf( win->GetClassInfo()->GetClassName() ); printf( win->GetClassInfo()->GetClassName() );
printf( ".\n" ); printf( ".\n" );
*/
long key_code = 0; long key_code = 0;
switch (gdk_event->keyval) switch (gdk_event->keyval)
@@ -286,13 +286,19 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
event.m_y = 0; event.m_y = 0;
event.SetEventObject( win ); event.SetEventObject( win );
printf( "process key.\n" );
bool ret = win->GetEventHandler()->ProcessEvent( event ); bool ret = win->GetEventHandler()->ProcessEvent( event );
printf( "no handler.\n" );
if (!ret) if (!ret)
{ {
wxWindow *ancestor = win; wxWindow *ancestor = win;
while (ancestor) while (ancestor)
{ {
printf( "check accel in %s .\n", WXSTRINGCAST ancestor->GetName() );
int command = ancestor->GetAcceleratorTable()->GetCommand( event ); int command = ancestor->GetAcceleratorTable()->GetCommand( event );
if (command != -1) if (command != -1)
{ {

View File

@@ -20,6 +20,7 @@
#include "wx/font.h" #include "wx/font.h"
#include "wx/settings.h" #include "wx/settings.h"
#include "wx/resource.h" #include "wx/resource.h"
#include "wx/module.h"
#include "unistd.h" #include "unistd.h"
@@ -424,6 +425,9 @@ int wxEntry( int argc, char *argv[] )
wxApp::CommonInit(); wxApp::CommonInit();
wxModule::RegisterModules();
if (!wxModule::InitializeModules()) return FALSE;
wxTheApp->OnInitGui(); wxTheApp->OnInitGui();
// Here frames insert themselves automatically // Here frames insert themselves automatically
@@ -442,6 +446,8 @@ int wxEntry( int argc, char *argv[] )
wxTheApp->OnExit(); wxTheApp->OnExit();
wxModule::CleanUpModules();
wxApp::CommonCleanUp(); wxApp::CommonCleanUp();
wxDELETE(wxTheApp); wxDELETE(wxTheApp);

View File

@@ -555,7 +555,7 @@ bool wxPaintDC::Blit( long xdest, long ydest, long width, long height,
gdk_gc_set_clip_mask( m_textGC, mask ); gdk_gc_set_clip_mask( m_textGC, mask );
gdk_gc_set_clip_origin( m_textGC, xx, yy ); gdk_gc_set_clip_origin( m_textGC, xx, yy );
} }
gdk_draw_pixmap( m_window, m_textGC, pmap, gdk_draw_pixmap( m_window, m_textGC, pmap,
source->DeviceToLogicalX(xsrc), source->DeviceToLogicalX(xsrc),
source->DeviceToLogicalY(ysrc), source->DeviceToLogicalY(ysrc),
@@ -829,6 +829,7 @@ void wxPaintDC::SetBackground( const wxBrush &brush )
m_backgroundBrush.GetColour().CalcPixel( m_cmap ); m_backgroundBrush.GetColour().CalcPixel( m_cmap );
gdk_gc_set_background( m_brushGC, m_backgroundBrush.GetColour().GetColor() ); gdk_gc_set_background( m_brushGC, m_backgroundBrush.GetColour().GetColor() );
gdk_gc_set_background( m_bgGC, m_backgroundBrush.GetColour().GetColor() );
gdk_gc_set_foreground( m_bgGC, m_backgroundBrush.GetColour().GetColor() ); gdk_gc_set_foreground( m_bgGC, m_backgroundBrush.GetColour().GetColor() );
GdkFill fillStyle = GDK_SOLID; GdkFill fillStyle = GDK_SOLID;
@@ -950,9 +951,22 @@ void wxPaintDC::SetUpDC(void)
m_bgGC = gdk_gc_new( m_window ); m_bgGC = gdk_gc_new( m_window );
SetTextForeground( m_textForegroundColour ); SetTextForeground( m_textForegroundColour );
SetTextBackground( m_textBackgroundColour ); SetTextBackground( m_textBackgroundColour );
SetPen( m_pen );
SetFont( m_font ); wxPen tmp_pen( m_pen );
SetBrush( m_brush ); m_pen = wxNullPen;
SetPen( tmp_pen );
wxFont tmp_font( m_font );
m_font = wxNullFont;
SetFont( tmp_font );
wxBrush tmp_brush( m_brush );
m_brush = wxNullBrush;
SetBrush( tmp_brush );
tmp_brush = m_backgroundBrush;
m_backgroundBrush = wxNullBrush;
SetBackground( tmp_brush );
gdk_gc_set_background( m_penGC, wxWHITE->GetColor() ); gdk_gc_set_background( m_penGC, wxWHITE->GetColor() );

View File

@@ -19,14 +19,14 @@
IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxPaintDC) IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxPaintDC)
wxMemoryDC::wxMemoryDC(void) wxMemoryDC::wxMemoryDC(void) : wxPaintDC()
{ {
m_ok = FALSE; m_ok = FALSE;
m_cmap = gtk_widget_get_default_colormap(); m_cmap = gtk_widget_get_default_colormap();
} }
wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) ) wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) ) : wxPaintDC()
{ {
m_ok = FALSE; m_ok = FALSE;

View File

@@ -186,15 +186,15 @@ static void gtk_window_draw_callback( GtkWidget *WXUNUSED(widget), GdkRectangle
static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxWindow *win ) static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxWindow *win )
{ {
printf( "OnKeyPress.\n " );
if (!win->HasVMT()) return FALSE; if (!win->HasVMT()) return FALSE;
if (g_blockEventsOnDrag) return FALSE; if (g_blockEventsOnDrag) return FALSE;
/*
printf( "OnKeyPress from " ); printf( "OnKeyPress from " );
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
printf( win->GetClassInfo()->GetClassName() ); printf( win->GetClassInfo()->GetClassName() );
printf( ".\n" ); printf( ".\n" );
*/
long key_code = 0; long key_code = 0;
switch (gdk_event->keyval) switch (gdk_event->keyval)
@@ -286,13 +286,19 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
event.m_y = 0; event.m_y = 0;
event.SetEventObject( win ); event.SetEventObject( win );
printf( "process key.\n" );
bool ret = win->GetEventHandler()->ProcessEvent( event ); bool ret = win->GetEventHandler()->ProcessEvent( event );
printf( "no handler.\n" );
if (!ret) if (!ret)
{ {
wxWindow *ancestor = win; wxWindow *ancestor = win;
while (ancestor) while (ancestor)
{ {
printf( "check accel in %s .\n", WXSTRINGCAST ancestor->GetName() );
int command = ancestor->GetAcceleratorTable()->GetCommand( event ); int command = ancestor->GetAcceleratorTable()->GetCommand( event );
if (command != -1) if (command != -1)
{ {