tFix crash when trying to set dialog box texture - vaccinewars - be a doctor and try to vaccinate the world (HTM) git clone git://src.adamsgaard.dk/vaccinewars (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit f6e1f6dab594b9695e0e220c8b20ad9184019283 (DIR) parent 5e1b6dffc76d08b7c479d420b46a66711538632d (HTM) Author: Ben Webb <ben@salilab.org> Date: Wed, 11 Nov 2020 18:45:47 -0800 Fix crash when trying to set dialog box texture Diffstat: M configure.ac | 2 +- M src/gtkport/gtkport.c | 31 +++---------------------------- 2 files changed, 4 insertions(+), 29 deletions(-) --- (DIR) diff --git a/configure.ac b/configure.ac t@@ -113,7 +113,7 @@ if test "$CYGWIN" = "yes" ; then dnl Libraries and flags CFLAGS="$CFLAGS -mwindows $mscompat $nocyg" CPPFLAGS="$CPPFLAGS $nocyg" - LIBS="$LIBS -lwsock32 -lcomctl32 -lmpr" + LIBS="$LIBS -lwsock32 -lcomctl32 -luxtheme -lmpr" LDFLAGS="$LDFLAGS $nocyg" AM_PATH_GLIB_2_0(2.0.0, , [AC_MSG_ERROR(GLib is required)]) (DIR) diff --git a/src/gtkport/gtkport.c b/src/gtkport/gtkport.c t@@ -58,6 +58,7 @@ const gchar *GTK_STOCK_HELP = N_("_Help"); #include <windows.h> #include <commctrl.h> #include <richedit.h> +#include <uxtheme.h> #include <shlwapi.h> #define LISTITEMVPACK 0 t@@ -78,8 +79,6 @@ static const gchar *WC_GTKHPANED = "WC_GTKHPANED"; static const gchar *WC_GTKDIALOG = "WC_GTKDIALOG"; static const gchar *WC_GTKURL = "WC_GTKURL"; -static const int ETDT_ENABLETAB = 0x6; - static void gtk_button_size_request(GtkWidget *widget, GtkRequisition *requisition); static void gtk_entry_size_request(GtkWidget *widget, t@@ -1204,30 +1203,6 @@ static gboolean CheckForXPControls(void) return retval; } -/* - * On systems with suitable DLLs, sets the background texture of the - * given dialog. dwFlags can be one or more of the ETDT_ constants. - */ -static void myEnableThemeDialogTexture(HWND hWnd, DWORD dwFlags) -{ - typedef HRESULT (*ENABLETHEMEDIALOGTEXTUREPROC)(HWND hWnd, DWORD dwFlags); - HINSTANCE module; - - /* Dialog textures are only worth setting when using XP common controls */ - if (!HaveXPControls) return; - - module = LoadLibrary("UXTHEME.DLL"); - if (module) { - ENABLETHEMEDIALOGTEXTUREPROC func; - func = (ENABLETHEMEDIALOGTEXTUREPROC) - GetProcAddress(module, "EnableThemeDialogTexture"); - if (func) { - func(hWnd, dwFlags); - } - FreeLibrary(module); - } -} - void win32_init(HINSTANCE hInstance, HINSTANCE hPrevInstance, char *MainIcon) { t@@ -4168,7 +4143,7 @@ void gtk_notebook_insert_page(GtkNotebook *notebook, GtkWidget *child, note_child->tabpage = myCreateDialog(hInst, "tabpage", gtk_get_parent_hwnd(widget->parent), MainDlgProc); - myEnableThemeDialogTexture(note_child->tabpage, ETDT_ENABLETAB); + EnableThemeDialogTexture(note_child->tabpage, ETDT_ENABLETAB); notebook->children = g_slist_insert(notebook->children, note_child, position); child->parent = GTK_WIDGET(notebook); t@@ -4240,7 +4215,7 @@ void gtk_notebook_realize(GtkWidget *widget) note_child->tabpage = myCreateDialog(hInst, "tabpage", gtk_get_parent_hwnd(widget->parent), MainDlgProc); - myEnableThemeDialogTexture(note_child->tabpage, ETDT_ENABLETAB); + EnableThemeDialogTexture(note_child->tabpage, ETDT_ENABLETAB); if (note_child->child) { gtk_widget_realize(note_child->child); }