Patch level : 2.2

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :

Corretti alcuni problemi di compatibilita' tra wxWindows 2.4.0 e wxWidgets 2.6.1


git-svn-id: svn://10.65.10.50/trunk@13377 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2005-09-28 11:51:41 +00:00
parent 85dbb537b5
commit 93f7c60c80
5 changed files with 54 additions and 50 deletions

View File

@ -124,7 +124,7 @@ int FamilySorter(const void* p1,const void* p2)
return strcmp(s1, s2);
}
int OsWin32_EnumerateFamilies(unsigned int hDC, char** families, int max_count)
int OsWin32_EnumerateFamilies(WXHDC hDC, char** families, int max_count)
{
XvtData data;
data.families = families;
@ -136,7 +136,7 @@ int OsWin32_EnumerateFamilies(unsigned int hDC, char** families, int max_count)
return data.cur_count;
}
int OsWin32_EnumerateSizes(unsigned int hDC, const char* name, long* sizes, short* scalable, int max_count)
int OsWin32_EnumerateSizes(WXHDC hDC, const char* name, long* sizes, short* scalable, int max_count)
{
XvtData data;
data.sizes = sizes;
@ -183,7 +183,7 @@ void* OsWin32_GetPrinterInfo(int& size, const char* printer)
return pdm;
}
void OsWin32_SetCaptionStyle(unsigned int handle, bool set)
void OsWin32_SetCaptionStyle(WXHWND handle, bool set)
{
HWND hwnd = (HWND)handle;
DWORD s = ::GetWindowLong(hwnd, GWL_STYLE);
@ -391,7 +391,7 @@ bool OsWin32_DrawBitmap(HBITMAP hBMP, wxDC& dc, const wxRect& dst, const wxRect&
return ok;
}
void OsWin32_DrawDottedRect(unsigned int hDC, int left, int top, int right, int bottom)
void OsWin32_DrawDottedRect(WXHDC hDC, int left, int top, int right, int bottom)
{
LOGBRUSH lBrush;
lBrush.lbHatch = 0; lBrush.lbStyle = BS_SOLID;
@ -448,7 +448,7 @@ static wxString FindHelpFile(const char* topic)
return str;
}
int OsWin32_Help(unsigned int handle, const char* hlp, unsigned int cmd, const char* topic)
int OsWin32_Help(WXHWND handle, const char* hlp, unsigned int cmd, const char* topic)
{
HWND hwnd = (HWND)handle;

View File

@ -4,21 +4,21 @@ void* OsWin32_ConvertFromNativePrinterInfo(void* hGlobal, unsigned int& nSize);
void* OsWin32_ConvertToNativePrinterInfo(void* data, unsigned int nSize);
HBITMAP OsWin32_CreateBitmap(const wxImage& img, wxDC& dc);
bool OsWin32_DrawBitmap(HBITMAP hBMP, wxDC& dc, const wxRect& dst, const wxRect& src);
void OsWin32_DrawDottedRect(unsigned int hDC, int left, int top, int right, int bottom);
void OsWin32_DrawDottedRect(WXHDC hDC, int left, int top, int right, int bottom);
wxString OsWin32_File2App(const char* filename);
bool OsWin32_GotoUrl(const char* url, const char* action);
unsigned int OsWin32_LoadIcon(const char* file);
int OsWin32_EnumerateFamilies(unsigned int hDC, char** families, int max_count);
int OsWin32_EnumerateSizes(unsigned int hDC, const char* name, long* sizes, short* scalable, int max_count);
void OsWin32_SetCaptionStyle(unsigned int handle, bool set);
int OsWin32_EnumerateFamilies(WXHDC hDC, char** families, int max_count);
int OsWin32_EnumerateSizes(WXHDC hDC, const char* name, long* sizes, short* scalable, int max_count);
void OsWin32_SetCaptionStyle(WXHWND handle, bool set);
void* OsWin32_GetPrinterInfo(int& size, const char* printer);
void OsWin32_PlaceProcessInWindow(unsigned int instance, const char* name, unsigned int parent);
void OsWin32_UpdateWindow(unsigned int handle);
int OsWin32_Help(unsigned int handle, const char* hlp, unsigned int cmd, const char* topic);
int OsWin32_Help(WXHWND handle, const char* hlp, unsigned int cmd, const char* topic);
bool OsWin32_TestNetworkVersion();
bool OsWin32_HL_Crypt(unsigned short* data);
@ -33,7 +33,6 @@ bool OsWin32_SL_Logout() ;
bool OsWin32_SL_ReadBlock(unsigned short reg, unsigned short size, unsigned short* data);
bool OsWin32_SL_WriteBlock(unsigned short reg, unsigned short size, const unsigned short* data);
//BOOL OsWin32_SpoolRow(const char* pData, unsigned int cbBytes, unsigned int hPrnDC);
void OsWin32_SpoolNewLine(unsigned int hdc);
bool OsWin32_IsGenericTextOnly(void* devmode);

View File

@ -397,7 +397,10 @@ wxDC& TDC::GetDC(bool bPaint)
{
if (_dc == NULL)
{
_dc = new wxClientDC(_owner);
if (_owner == NULL || (unsigned long)_owner == SCREEN_WIN)
_dc = new wxScreenDC();
else
_dc = new wxClientDC(_owner);
_dirty = -1;
}
}
@ -483,11 +486,7 @@ void TDC::KillDC()
{
if (_dc != NULL)
{
#if wxCHECK_VERSION(2,6,1)
SetClippingBox(NULL);
#else
SetClippingBox(NULL);
#endif
delete _dc;
_dc = NULL;
}
@ -623,6 +622,13 @@ bool TDCMapper::HasValidDC(WINDOW owner) const
class TwxWindowBase : public wxWindow
{
#ifdef LINUX
private:
wxString m_strTitle;
virtual void SetTitle(const wxString& title) { wxWindow::SetTitle(m_strTitle = title); }
virtual wxString GetTitle() const { return m_strTitle; }
#endif
public:
TwxWindowBase() { }
TwxWindowBase(wxWindow *parent, wxWindowID id, const wxString &title,
@ -639,18 +645,11 @@ TwxWindowBase::TwxWindowBase(wxWindow *parent, wxWindowID id, const wxString &ti
// Evita inutili sfarfallamenti in quanto wxWidgets crea le finestre visibili per default
wxWindowBase::Show(false);
Create(parent, id, pos, size, style, title);
SetTitle(title); // Triste necessita', la Create sembra ignorare il titolo
}
class TwxWindow : public TwxWindowBase
{
#ifdef LINUX
private:
wxString m_strTitle;
public:
virtual void SetTitle(const wxString& title) { wxWindow::SetTitle(m_strTitle = title); }
virtual wxString GetTitle() const { return m_strTitle; }
#endif
private:
MENU_ITEM* m_menu;
@ -1914,7 +1913,7 @@ BOOLEAN xvt_help_process_event(XVT_HELP_INFO hi, WINDOW win, EVENT *ev)
BOOLEAN bProcessed = FALSE;
#ifdef WIN32
unsigned int hwnd = (unsigned int)xvt_vobj_get_attr(win, ATTR_NATIVE_WINDOW);
WXHWND hwnd = (WXHWND)xvt_vobj_get_attr(win, ATTR_NATIVE_WINDOW);
switch (ev->type)
{
case E_COMMAND:
@ -2065,6 +2064,11 @@ bool TFontId::Underline() const
return (m_wMask & XVT_FS_UNDERLINE) != 0;
}
int TFontId::Weight() const
{
return (m_wMask & XVT_FS_BOLD) ? wxBOLD : wxNORMAL;
}
wxFont& TFontId::Font(wxDC* dc, WINDOW win) const
{
int nSize = PointSize();
@ -2075,9 +2079,9 @@ wxFont& TFontId::Font(wxDC* dc, WINDOW win) const
if (dc != lastDC)
{
#ifdef WIN32
const char* strDefaultFaceName = "Courier New";
const char* DEFAULT_FONT_NAME = "Courier New";
#else
const char* strDefaultFaceName = "Courier";
const char* DEFAULT_FONT_NAME = "Courier";
#endif
const wxSize ppi = dc->GetPPI();
@ -2091,7 +2095,7 @@ wxFont& TFontId::Font(wxDC* dc, WINDOW win) const
while (nMin <= nMax)
{
const int nFontSize = (nMin+nMax)/2;
wxFont courier(-nFontSize, wxDEFAULT, wxNORMAL, wxNORMAL, FALSE, strDefaultFaceName);
wxFont courier(-nFontSize, wxDEFAULT, wxNORMAL, wxNORMAL, FALSE, DEFAULT_FONT_NAME);
dc->SetFont(courier);
int tw; dc->GetTextExtent(str, &tw, NULL);
if (tw <= nTarget10)
@ -2117,7 +2121,7 @@ wxFont& TFontId::Font(wxDC* dc, WINDOW win) const
for (int i = 15; i > 0; i--)
{
const int nFontSize = nBest-i;
wxFont courier(-nFontSize, Family(), wxNORMAL, wxNORMAL, FALSE, strDefaultFaceName);
wxFont courier(-nFontSize, Family(), wxNORMAL, wxNORMAL, FALSE, DEFAULT_FONT_NAME);
dc->SetFont(courier);
int tw; dc->GetTextExtent(str, &tw, NULL);
if (tw > nTarget10 && bPrevGood)
@ -2138,16 +2142,14 @@ wxFont& TFontId::Font(wxDC* dc, WINDOW win) const
lastDC = dc;
}
nSize = (int)(nSize * dPrintScale + 0.5);
#ifdef WIN32
// In Windows rendo negativa la dimensione perche' e' piu' preciso!
nSize = -nSize;
#endif
}
const int nWeight = (m_wMask & XVT_FS_BOLD) ? wxBOLD : wxNORMAL;
wxFont* font = wxTheFontList->FindOrCreateFont(
nSize, Family(), Style(), nWeight, Underline(), FaceName());
nSize, Family(), Style(), Weight(), Underline(), FaceName());
return *font;
}
@ -2321,7 +2323,7 @@ void xvt_dwin_draw_dotted_rect(WINDOW win, RCT *rctp)
if (can_draw_dots)
{
CAST_DC(win, dc);
OsWin32_DrawDottedRect((unsigned int)dc.GetHDC(), rctp->left, rctp->top, rctp->right, rctp->bottom);
OsWin32_DrawDottedRect(dc.GetHDC(), rctp->left, rctp->top, rctp->right, rctp->bottom);
return;
}
#endif
@ -2369,8 +2371,7 @@ void xvt_dwin_draw_text(WINDOW win, int x, int y, const char *s, int len)
#ifdef LINUX
if (tdc._dct.opaque_text)
{
RCT back;
RCT back;
back.left = x;
back.right = x + xvt_dwin_get_text_width(win, str, -1);
back.top = y - delta;
@ -2477,7 +2478,7 @@ BOOLEAN xvt_dwin_is_update_needed(WINDOW win, RCT* rctp)
{
if (win != NULL_WIN && rctp != NULL)
{
if (win == PRINTER_WIN)
if (win == PRINTER_WIN || win == SCREEN_WIN)
return TRUE;
CAST_WIN(win, w);
const wxRect rect1 = NormalizeRCT(rctp);
@ -2495,8 +2496,7 @@ void xvt_dwin_scroll_rect(WINDOW win, RCT *rctp, int dh, int dv)
if (rctp != NULL)
{
wxRect rct = NormalizeRCT(rctp);
if (rct.width > 0 && rct.height > 0)
if (rct.width > 0 && rct.height > 0)
#ifdef WIN32
w.ScrollWindow(dh, dv, &rct);
#else
@ -2645,7 +2645,7 @@ XVT_FNTID xvt_font_create(void)
return (XVT_FNTID)pFont;
}
void xvt_font_deserialize(XVT_FNTID font_id, const char *buf)
void xvt_font_deserialize(XVT_FNTID font_id, const char* buf)
{
// 01\\Courier\\0\\10\\WIN01/-13/0/0/0/400/0/0/0/0/1/2/1/49/Courier
@ -3041,6 +3041,7 @@ XVT_IMAGE xvt_image_capture(WINDOW win, const RCT* src)
wxBitmap bmp(r.GetWidth(), r.GetHeight());
CAST_DC(win, wdc);
wxMemoryDC mdc;
mdc.SelectObject(bmp);
mdc.Blit(wxPoint(0,0), r.GetSize(), &wdc, r.GetPosition());
@ -4452,8 +4453,8 @@ long xvt_vobj_get_attr(WINDOW win, long data)
ret = wxSystemSettings::GetMetric(wxSYS_SCREEN_X);
break;
case ATTR_SCREEN_WINDOW:
ret = NULL_WIN; // Non bellissimo ma per ora...
break;
ret = 882L; // Scelta arbitraria ma accettabile
break;
case ATTR_SPEECH_MODE:
ret = m_nSpeechMode;
break;
@ -4486,14 +4487,18 @@ RCT* xvt_vobj_get_client_rect(WINDOW win, RCT *rctp)
if (win == PRINTER_WIN)
{
l = h = 6000; // circa A4 height
}
else
} else
if (win == SCREEN_WIN)
{
l = wxSystemSettings::GetMetric(wxSYS_SCREEN_X);
h = wxSystemSettings::GetMetric(wxSYS_SCREEN_Y) - 32; // Puerile tentativo di escludere la task bar
} else
{
CAST_WIN(win, w);
w.GetClientSize(&l, &h);
}
}
else // NULL_WIN -> SREEN_WINDOW
else // NULL_WIN = schermo intero
{
l = wxSystemSettings::GetMetric(wxSYS_SCREEN_X);
h = wxSystemSettings::GetMetric(wxSYS_SCREEN_Y);
@ -4698,7 +4703,7 @@ WINDOW xvt_win_create(WIN_TYPE wtype, const RCT* rct_p, const char* title, int m
#endif
#ifdef WIN32
OsWin32_SetCaptionStyle((unsigned int)w->GetHWND(), wtype == W_DOC);
OsWin32_SetCaptionStyle(w->GetHWND(), wtype == W_DOC);
#else
OsLinux_SetCaptionStyle((wxWindow*)w, style);
#endif
@ -4737,8 +4742,7 @@ WINDOW xvt_win_create(WIN_TYPE wtype, const RCT* rct_p, const char* title, int m
e.type = E_CREATE;
eh((WINDOW)w, &e);
// Rende visibili i giusti flag di visibilita e disabilitazione
xvt_app_process_pending_events();
// xvt_app_process_pending_events(); // Vietatissimo: arrivano E_PAINT prima di assegnare TWindow::_win
return (WINDOW)w;
}

View File

@ -23,6 +23,7 @@ public:
XVT_FONT_STYLE_MASK Mask() const { return m_wMask; }
int Style() const;
bool Underline() const;
int Weight() const;
void SetFaceName(const char* f) { m_strFace = f; }
const char* FaceName() const;

View File

@ -459,7 +459,7 @@ long xvt_fmap_get_family_sizes(PRINT_RCD *precp, char *family, long *size_array,
{
const TwxPrintOut& po = m_PrintoutCache.Get((TPRINT_RCD*)precp);
if (!po.HasBadDriver())
size = OsWin32_EnumerateSizes((unsigned int)po.GetDC()->GetHDC(), family, size_array, scalable, max_sizes);
size = OsWin32_EnumerateSizes(po.GetDC()->GetHDC(), family, size_array, scalable, max_sizes);
}
else
{
@ -481,7 +481,7 @@ long xvt_fmap_get_families(PRINT_RCD *precp, char **family_array, long max_famil
if (xvt_print_is_valid(precp))
{
TwxPrintOut& po = m_PrintoutCache.Get((TPRINT_RCD*)precp);
size = OsWin32_EnumerateFamilies((unsigned int)po.GetDC()->GetHDC(), family_array, max_families);
size = OsWin32_EnumerateFamilies(po.GetDC()->GetHDC(), family_array, max_families);
if (size == 0)
po.SetBadDriver(true);
}
@ -489,7 +489,7 @@ long xvt_fmap_get_families(PRINT_RCD *precp, char **family_array, long max_famil
{
wxFrame* tw = (wxFrame*)TASK_WIN;
wxClientDC dc(tw);
size = OsWin32_EnumerateFamilies((unsigned int)dc.GetHDC(), family_array, max_families);
size = OsWin32_EnumerateFamilies(dc.GetHDC(), family_array, max_families);
}
#else
size = OsLinux_EnumerateFamilies(family_array, max_families);