]> git.saurik.com Git - wxWidgets.git/blobdiff - src/stc/PlatWX.cpp
Mutiple updates from SciTech for wxWindows including the following:
[wxWidgets.git] / src / stc / PlatWX.cpp
index 2b478141af6e6ddc62f8e84c00752f15b7665240..0e7390741484ce8e61b0d2123c91f9db2edc4a95 100644 (file)
@@ -112,6 +112,8 @@ Font::~Font() {
 }
 
 void Font::Create(const char *faceName, int characterSet, int size, bool bold, bool italic) {
+    // TODO:  what to do about the characterSet?
+
     Release();
     id = new wxFont(size,
                     wxDEFAULT,
@@ -161,22 +163,21 @@ void Surface::Init() {
     Release();
     hdc = new wxMemoryDC();
     hdcOwned = true;
-    // **** ::SetTextAlign(hdc, TA_BASELINE);
 }
 
 void Surface::Init(SurfaceID hdc_) {
     Release();
     hdc = hdc_;
-    // **** ::SetTextAlign(hdc, TA_BASELINE);
 }
 
 void Surface::InitPixMap(int width, int height, Surface *surface_) {
     Release();
     hdc = new wxMemoryDC(surface_->hdc);
     hdcOwned = true;
+    if (width < 1) width = 1;
+    if (height < 1) height = 1;
     bitmap = new wxBitmap(width, height);
     ((wxMemoryDC*)hdc)->SelectObject(*bitmap);
-    // **** ::SetTextAlign(hdc, TA_BASELINE);
 }
 
 void Surface::PenColour(Colour fore) {
@@ -199,7 +200,7 @@ int Surface::LogPixelsY() {
 
 
 int Surface::DeviceHeightFont(int points) {
-    return points * LogPixelsY() / 72;
+    return points;
 }
 
 
@@ -353,7 +354,7 @@ int Surface::AverageCharWidth(Font &font) {
 }
 
 int Surface::SetPalette(Palette *pal, bool inBackGround) {
-    return 0;  // **** figure out what to do with palettes...
+    return 0;
 }
 
 void Surface::SetClip(PRectangle rc) {
@@ -455,7 +456,7 @@ class wxSTCListBox : public wxListBox {
 public:
     wxSTCListBox(wxWindow* parent, wxWindowID id)
         : wxListBox(parent, id, wxDefaultPosition, wxDefaultSize,
-                    0, NULL, wxLB_SINGLE | wxLB_SORT | wxSIMPLE_BORDER)
+                    0, NULL, wxLB_SINGLE | wxSIMPLE_BORDER | wxLB_SORT )
         {}
 
     void OnFocus(wxFocusEvent& event) {
@@ -463,7 +464,7 @@ public:
         event.Skip();
     }
 
-#ifdef __WXGTK__
+#if 0 // #ifdef __WXGTK__
     void DoSetFirstItem(int n);
 #endif
 
@@ -478,7 +479,7 @@ END_EVENT_TABLE()
 
 
 
-#ifdef __WXGTK__
+#if 0 // #ifdef __WXGTK__
     // This can be removed after 2.2.2 I think
 void wxSTCListBox::DoSetFirstItem( int n )
 {
@@ -534,15 +535,21 @@ void ListBox::Create(Window &parent, int ctrlID) {
 //                       0, NULL, wxLB_SINGLE | wxLB_SORT | wxSIMPLE_BORDER);
 }
 
+void ListBox::SetVisibleRows(int rows) {
+       desiredVisibleRows = rows;
+        printf("SetVisibleRows: %d\n", rows);
+}
+
 PRectangle ListBox::GetDesiredRect() {
     wxSize sz = ((wxListBox*)id)->GetBestSize();
+    printf("GetDesiredRect: %d, %d\n", sz.x, sz.y);
     PRectangle rc;
     rc.top = 0;
     rc.left = 0;
-    if (sz.x > 150)   // TODO: A better way to determine these max sizes
-        sz.x = 150;
-    if (sz.y > 100)
-        sz.y = 100;
+    if (sz.x > 400)
+        sz.x = 400;
+    if (sz.y > 150)
+        sz.y = 150;
     rc.right = sz.x;
     rc.bottom = sz.y;
 
@@ -697,6 +704,36 @@ void Platform::DebugPrintf(const char *format, ...) {
 #endif
 }
 
+
+static bool assertionPopUps = true;
+
+bool Platform::ShowAssertionPopUps(bool assertionPopUps_) {
+       bool ret = assertionPopUps;
+       assertionPopUps = assertionPopUps_;
+       return ret;
+}
+
+void Platform::Assert(const char *c, const char *file, int line) {
+       char buffer[2000];
+       sprintf(buffer, "Assertion [%s] failed at %s %d", c, file, line);
+       if (assertionPopUps) {
+               int idButton = wxMessageBox(buffer, "Assertion failure",
+                                            wxICON_HAND | wxOK);
+//             if (idButton == IDRETRY) {
+//                     ::DebugBreak();
+//             } else if (idButton == IDIGNORE) {
+//                     // all OK
+//             } else {
+//                     abort();
+//             }
+       } else {
+               strcat(buffer, "\r\n");
+               Platform::DebugDisplay(buffer);
+               abort();
+       }
+}
+
+
 int Platform::Clamp(int val, int minVal, int maxVal) {
     if (val > maxVal)
         val = maxVal;