}
wxRect wxRectFromPRectangle(PRectangle prc) {
- wxRect rc(prc.left, prc.top,
- prc.right-prc.left, prc.bottom-prc.top);
- return rc;
+ wxRect r(prc.left, prc.top,
+ prc.Width(), prc.Height());
+ return r;
}
PRectangle PRectangleFromwxRect(wxRect rc) {
// ybase is where the baseline should be, but wxWin uses the upper left
// corner, so I need to calculate the real position for the text...
- hdc->DrawText(stc2wx(s, len), rc.left, ybase - font.ascent - 1);
+ hdc->DrawText(stc2wx(s, len), rc.left, ybase - font.ascent);
}
void SurfaceImpl::DrawTextClipped(PRectangle rc, Font &font, int ybase,
hdc->SetClippingRegion(wxRectFromPRectangle(rc));
// see comments above
- hdc->DrawText(stc2wx(s, len), rc.left, ybase - font.ascent - 1);
+ hdc->DrawText(stc2wx(s, len), rc.left, ybase - font.ascent);
hdc->DestroyClippingRegion();
}
// ybase is where the baseline should be, but wxWin uses the upper left
// corner, so I need to calculate the real position for the text...
- hdc->DrawText(stc2wx(s, len), rc.left, ybase - font.ascent - 1);
+ hdc->DrawText(stc2wx(s, len), rc.left, ybase - font.ascent);
hdc->SetBackgroundMode(wxSOLID);
}
int SurfaceImpl::Height(Font &font) {
SetFont(font);
- return hdc->GetCharHeight();
+ return hdc->GetCharHeight() + 1;
}
int SurfaceImpl::AverageCharWidth(Font &font) {
void* doubleClickActionData;
public:
wxSTCListBoxWin(wxWindow* parent, wxWindowID id) :
- wxWindow(parent, id, wxDefaultPosition, wxSize(0,0), wxNO_BORDER )
+ wxWindow(parent, id, wxDefaultPosition, wxSize(0,0), wxSIMPLE_BORDER )
{
- SetBackgroundColour(*wxBLACK);
lv = new wxSTCListBox(this, id, wxDefaultPosition, wxDefaultSize,
wxLC_REPORT | wxLC_SINGLE_SEL | wxLC_NO_HEADER | wxNO_BORDER);
lv->SetCursor(wxCursor(wxCURSOR_ARROW));
Hide();
}
-
+
// On OSX and (possibly others) there can still be pending
// messages/events for the list control when Scintilla wants to
// close it, so do a pending delete of it instead of destroying
// immediately.
bool Destroy() {
+#ifdef __WXMAC__
+ // There bottom edge of this window is not getting properly
+ // refreshed upon deletion, so help it out...
+ wxWindow* p = GetParent();
+ wxRect r(GetPosition(), GetSize());
+ r.SetHeight(r.GetHeight()+1);
+ p->Refresh(false, &r);
+#endif
if ( !wxPendingDelete.Member(this) )
wxPendingDelete.Append(this);
return TRUE;
}
void OnSize(wxSizeEvent& event) {
- // resize the child, leaving a 1 pixel border
+ // resize the child
wxSize sz = GetClientSize();
- lv->SetSize(1, 1, sz.x-2, sz.y-2);
+ lv->SetSize(sz);
// reset the column widths
lv->SetColumnWidth(0, IconWidth()+4);
lv->SetColumnWidth(1, sz.x - 2 - lv->GetColumnWidth(0) -
strncpy(buffer, str, len);
buffer[len]=0;
- wxString cstr(buffer, wxConvUTF8);
+ wxString cstr(buffer, wxConvUTF8, len);
delete[] buffer;
return cstr;