Jeremy Newton fa4f542
diff -rupN wxWidgets-3.0.2-orig/src/generic/grid.cpp wxWidgets-3.0.2/src/generic/grid.cpp
Jeremy Newton fa4f542
--- wxWidgets-3.0.2-orig/src/generic/grid.cpp	2014-10-06 17:33:44.000000000 -0400
Jeremy Newton fa4f542
+++ wxWidgets-3.0.2/src/generic/grid.cpp	2015-06-22 11:50:16.359029017 -0400
Jeremy Newton fa4f542
@@ -2114,7 +2114,8 @@ void wxGridWindow::OnFocus(wxFocusEvent&
Jeremy Newton fa4f542
                                             m_owner->GetGridCursorCol());
Jeremy Newton fa4f542
         const wxRect cursor =
Jeremy Newton fa4f542
             m_owner->BlockToDeviceRect(cursorCoords, cursorCoords);
Jeremy Newton fa4f542
-        Refresh(true, &cursor);
Jeremy Newton fa4f542
+        if (cursor != wxGridNoCellRect)
Jeremy Newton fa4f542
+            Refresh(true, &cursor);
Jeremy Newton fa4f542
     }
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
     if ( !m_owner->GetEventHandler()->ProcessEvent( event ) )
Jeremy Newton fa4f542
diff -rupN wxWidgets-3.0.2-orig/src/generic/listctrl.cpp wxWidgets-3.0.2/src/generic/listctrl.cpp
Jeremy Newton fa4f542
--- wxWidgets-3.0.2-orig/src/generic/listctrl.cpp	2014-10-06 17:33:44.000000000 -0400
Jeremy Newton fa4f542
+++ wxWidgets-3.0.2/src/generic/listctrl.cpp	2015-06-22 12:12:26.838603542 -0400
Jeremy Newton fa4f542
@@ -1935,6 +1935,13 @@ void wxListMainWindow::RefreshLines( siz
Jeremy Newton fa4f542
         size_t visibleFrom, visibleTo;
Jeremy Newton fa4f542
         GetVisibleLinesRange(&visibleFrom, &visibleTo);
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
+        if ( lineFrom > visibleTo || lineTo < visibleFrom )
Jeremy Newton fa4f542
+        {
Jeremy Newton fa4f542
+            // None of these lines are currently visible at all, don't bother
Jeremy Newton fa4f542
+            // doing anything.
Jeremy Newton fa4f542
+            return;
Jeremy Newton fa4f542
+        }
Jeremy Newton fa4f542
+
Jeremy Newton fa4f542
         if ( lineFrom < visibleFrom )
Jeremy Newton fa4f542
             lineFrom = visibleFrom;
Jeremy Newton fa4f542
         if ( lineTo > visibleTo )
Jeremy Newton fa4f542
diff -rupN wxWidgets-3.0.2-orig/src/gtk/aboutdlg.cpp wxWidgets-3.0.2/src/gtk/aboutdlg.cpp
Jeremy Newton fa4f542
--- wxWidgets-3.0.2-orig/src/gtk/aboutdlg.cpp	2014-10-06 17:33:44.000000000 -0400
Jeremy Newton fa4f542
+++ wxWidgets-3.0.2/src/gtk/aboutdlg.cpp	2015-06-22 12:09:00.951644896 -0400
Jeremy Newton fa4f542
@@ -23,7 +23,7 @@
Jeremy Newton fa4f542
 #include "wx/aboutdlg.h"
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
 #ifndef WX_PRECOMP
Jeremy Newton fa4f542
-    #include "wx/utils.h"       // for wxLaunchDefaultBrowser()
Jeremy Newton fa4f542
+    #include "wx/window.h"
Jeremy Newton fa4f542
 #endif //WX_PRECOMP
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
 #include <gtk/gtk.h>
Jeremy Newton fa4f542
@@ -131,7 +131,7 @@ static void wxGtkAboutDialogOnLink(GtkAb
Jeremy Newton fa4f542
 }
Jeremy Newton fa4f542
 #endif
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
-void wxAboutBox(const wxAboutDialogInfo& info, wxWindow* WXUNUSED(parent))
Jeremy Newton fa4f542
+void wxAboutBox(const wxAboutDialogInfo& info, wxWindow* parent)
Jeremy Newton fa4f542
 {
Jeremy Newton fa4f542
     // don't create another dialog if one is already present
Jeremy Newton fa4f542
     if ( !gs_aboutDialog )
Jeremy Newton fa4f542
@@ -235,6 +235,11 @@ void wxAboutBox(const wxAboutDialogInfo&
Jeremy Newton fa4f542
     g_signal_connect(dlg, "response",
Jeremy Newton fa4f542
                         G_CALLBACK(wxGtkAboutDialogOnClose), NULL);
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
+    GtkWindow* gtkParent = NULL;
Jeremy Newton fa4f542
+    if (parent && parent->m_widget)
Jeremy Newton fa4f542
+        gtkParent = (GtkWindow*)gtk_widget_get_ancestor(parent->m_widget, GTK_TYPE_WINDOW);
Jeremy Newton fa4f542
+    gtk_window_set_transient_for(GTK_WINDOW(dlg), gtkParent);
Jeremy Newton fa4f542
+
Jeremy Newton fa4f542
     gtk_window_present(GTK_WINDOW(dlg));
Jeremy Newton fa4f542
 }
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
diff -rupN wxWidgets-3.0.2-orig/src/gtk/filedlg.cpp wxWidgets-3.0.2/src/gtk/filedlg.cpp
Jeremy Newton fa4f542
--- wxWidgets-3.0.2-orig/src/gtk/filedlg.cpp	2014-10-06 17:33:44.000000000 -0400
Jeremy Newton fa4f542
+++ wxWidgets-3.0.2/src/gtk/filedlg.cpp	2015-06-22 12:16:47.386285719 -0400
Jeremy Newton fa4f542
@@ -187,7 +187,8 @@ bool wxFileDialog::Create(wxWindow *pare
Jeremy Newton fa4f542
                            const wxSize& sz,
Jeremy Newton fa4f542
                            const wxString& name)
Jeremy Newton fa4f542
 {
Jeremy Newton fa4f542
-    parent = GetParentForModalDialog(parent, style);
Jeremy Newton fa4f542
+    // wxFD_MULTIPLE has the same value as wxDIALOG_NO_PARENT
Jeremy Newton fa4f542
+    parent = GetParentForModalDialog(parent, style & ~wxFD_MULTIPLE);
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
     if (!wxFileDialogBase::Create(parent, message, defaultDir, defaultFileName,
Jeremy Newton fa4f542
                                   wildCard, style, pos, sz, name))
Jeremy Newton fa4f542
diff -rupN wxWidgets-3.0.2-orig/src/gtk/fontdlg.cpp wxWidgets-3.0.2/src/gtk/fontdlg.cpp
Jeremy Newton fa4f542
--- wxWidgets-3.0.2-orig/src/gtk/fontdlg.cpp	2014-10-06 17:33:44.000000000 -0400
Jeremy Newton fa4f542
+++ wxWidgets-3.0.2/src/gtk/fontdlg.cpp	2015-06-22 11:51:23.827727490 -0400
Jeremy Newton fa4f542
@@ -78,6 +78,7 @@ bool wxFontDialog::DoCreate(wxWindow *pa
Jeremy Newton fa4f542
         gtk_parent = GTK_WINDOW(parent->m_widget);
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
 #if GTK_CHECK_VERSION(3,2,0)
Jeremy Newton fa4f542
+    g_type_ensure(PANGO_TYPE_FONT_FACE);
Jeremy Newton fa4f542
     if (gtk_check_version(3,2,0) == NULL)
Jeremy Newton fa4f542
         m_widget = gtk_font_chooser_dialog_new(wxGTK_CONV(message), gtk_parent);
Jeremy Newton fa4f542
     else
Jeremy Newton fa4f542
diff -rupN wxWidgets-3.0.2-orig/src/gtk/print.cpp wxWidgets-3.0.2/src/gtk/print.cpp
Jeremy Newton fa4f542
--- wxWidgets-3.0.2-orig/src/gtk/print.cpp	2014-10-06 17:33:44.000000000 -0400
Jeremy Newton fa4f542
+++ wxWidgets-3.0.2/src/gtk/print.cpp	2015-06-22 12:01:37.173889476 -0400
Jeremy Newton fa4f542
@@ -32,7 +32,6 @@
Jeremy Newton fa4f542
 #include "wx/fontutil.h"
Jeremy Newton fa4f542
 #include "wx/dynlib.h"
Jeremy Newton fa4f542
 #include "wx/paper.h"
Jeremy Newton fa4f542
-#include "wx/scopeguard.h"
Jeremy Newton fa4f542
 #include "wx/modalhook.h"
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
 #include <gtk/gtk.h>
Jeremy Newton fa4f542
@@ -612,6 +611,11 @@ wxGtkPrintDialog::wxGtkPrintDialog( wxWi
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
     m_parent = parent;
Jeremy Newton fa4f542
     SetShowDialog(true);
Jeremy Newton fa4f542
+
Jeremy Newton fa4f542
+    const wxPrintData& printData = m_printDialogData.GetPrintData();
Jeremy Newton fa4f542
+    wxGtkPrintNativeData* native =
Jeremy Newton fa4f542
+        static_cast<wxGtkPrintNativeData*>(printData.GetNativeData());
Jeremy Newton fa4f542
+    native->SetPrintJob(gtk_print_operation_new());
Jeremy Newton fa4f542
 }
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
 wxGtkPrintDialog::wxGtkPrintDialog( wxWindow *parent, wxPrintData *data )
Jeremy Newton fa4f542
@@ -625,11 +629,22 @@ wxGtkPrintDialog::wxGtkPrintDialog( wxWi
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
     m_parent = parent;
Jeremy Newton fa4f542
     SetShowDialog(true);
Jeremy Newton fa4f542
+
Jeremy Newton fa4f542
+    const wxPrintData& printData = m_printDialogData.GetPrintData();
Jeremy Newton fa4f542
+    wxGtkPrintNativeData* native =
Jeremy Newton fa4f542
+        static_cast<wxGtkPrintNativeData*>(printData.GetNativeData());
Jeremy Newton fa4f542
+    native->SetPrintJob(gtk_print_operation_new());
Jeremy Newton fa4f542
 }
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
 wxGtkPrintDialog::~wxGtkPrintDialog()
Jeremy Newton fa4f542
 {
Jeremy Newton fa4f542
+    const wxPrintData& printData = m_printDialogData.GetPrintData();
Jeremy Newton fa4f542
+    wxGtkPrintNativeData* native =
Jeremy Newton fa4f542
+        static_cast<wxGtkPrintNativeData*>(printData.GetNativeData());
Jeremy Newton fa4f542
+    GtkPrintOperation* printOp = native->GetPrintJob();
Jeremy Newton fa4f542
+    g_object_unref(printOp);
Jeremy Newton fa4f542
+    native->SetPrintJob(NULL);
Jeremy Newton fa4f542
 }
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
 // This is called even if we actually don't want the dialog to appear.
Jeremy Newton fa4f542
@@ -921,10 +936,9 @@ bool wxGtkPrinter::Print(wxWindow *paren
Jeremy Newton fa4f542
     wxPrintData printdata = GetPrintDialogData().GetPrintData();
Jeremy Newton fa4f542
     wxGtkPrintNativeData *native = (wxGtkPrintNativeData*) printdata.GetNativeData();
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
-    wxGtkObject<GtkPrintOperation> printOp(gtk_print_operation_new());
Jeremy Newton fa4f542
-    native->SetPrintJob(printOp);
Jeremy Newton fa4f542
-    wxON_BLOCK_EXIT_OBJ1(*native, wxGtkPrintNativeData::SetPrintJob,
Jeremy Newton fa4f542
-                         static_cast<GtkPrintOperation*>(NULL));
Jeremy Newton fa4f542
+    // wxGtkPrintDialog needs to be created first as it creates the PrintOp
Jeremy Newton fa4f542
+    wxGtkPrintDialog dialog(parent, &m_printDialogData);
Jeremy Newton fa4f542
+    GtkPrintOperation* printOp = native->GetPrintJob();
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
     wxPrinterToGtkData dataToSend;
Jeremy Newton fa4f542
     dataToSend.printer = this;
Jeremy Newton fa4f542
@@ -937,7 +951,6 @@ bool wxGtkPrinter::Print(wxWindow *paren
Jeremy Newton fa4f542
 
Jeremy Newton fa4f542
     // This is used to setup the DC and
Jeremy Newton fa4f542
     // show the dialog if desired
Jeremy Newton fa4f542
-    wxGtkPrintDialog dialog( parent, &m_printDialogData );
Jeremy Newton fa4f542
     dialog.SetPrintDC(m_dc);
Jeremy Newton fa4f542
     dialog.SetShowDialog(prompt);
Jeremy Newton fa4f542