mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-03 06:01:52 +08:00
fix: prevent hidden files to show on gtk host when opening a file dialog
This commit is contained in:
parent
9efc648e3d
commit
b8ef90cb41
@ -54,7 +54,7 @@ extern "C"
|
|||||||
int ready;
|
int ready;
|
||||||
int js_busy;
|
int js_busy;
|
||||||
int should_exit;
|
int should_exit;
|
||||||
|
|
||||||
int min_width;
|
int min_width;
|
||||||
int min_height;
|
int min_height;
|
||||||
int max_width;
|
int max_width;
|
||||||
@ -179,7 +179,7 @@ struct webview_priv
|
|||||||
WEBVIEW_API int webview_inject_css(struct webview *w, const char *css);
|
WEBVIEW_API int webview_inject_css(struct webview *w, const char *css);
|
||||||
WEBVIEW_API void webview_set_title(struct webview *w, const char *title);
|
WEBVIEW_API void webview_set_title(struct webview *w, const char *title);
|
||||||
WEBVIEW_API void webview_focus(struct webview *w);
|
WEBVIEW_API void webview_focus(struct webview *w);
|
||||||
WEBVIEW_API void webview_minsize(struct webview *w, int width, int height);
|
WEBVIEW_API void webview_minsize(struct webview *w, int width, int height);
|
||||||
WEBVIEW_API void webview_maxsize(struct webview *w, int width, int height);
|
WEBVIEW_API void webview_maxsize(struct webview *w, int width, int height);
|
||||||
WEBVIEW_API void webview_set_fullscreen(struct webview *w, int fullscreen);
|
WEBVIEW_API void webview_set_fullscreen(struct webview *w, int fullscreen);
|
||||||
WEBVIEW_API void webview_set_color(struct webview *w, uint8_t r, uint8_t g,
|
WEBVIEW_API void webview_set_color(struct webview *w, uint8_t r, uint8_t g,
|
||||||
@ -342,12 +342,12 @@ struct webview_priv
|
|||||||
w->priv.should_exit = 0;
|
w->priv.should_exit = 0;
|
||||||
w->priv.queue = g_async_queue_new();
|
w->priv.queue = g_async_queue_new();
|
||||||
w->priv.window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
w->priv.window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||||
|
|
||||||
w->priv.min_width = -1;
|
w->priv.min_width = -1;
|
||||||
w->priv.min_height = -1;
|
w->priv.min_height = -1;
|
||||||
w->priv.max_width = -1;
|
w->priv.max_width = -1;
|
||||||
w->priv.max_height = -1;
|
w->priv.max_height = -1;
|
||||||
|
|
||||||
gtk_window_set_title(GTK_WINDOW(w->priv.window), w->title);
|
gtk_window_set_title(GTK_WINDOW(w->priv.window), w->title);
|
||||||
|
|
||||||
if (w->resizable)
|
if (w->resizable)
|
||||||
@ -421,13 +421,13 @@ struct webview_priv
|
|||||||
}
|
}
|
||||||
|
|
||||||
WEBVIEW_API void webview_minsize(struct webview *w, int width, int height) {
|
WEBVIEW_API void webview_minsize(struct webview *w, int width, int height) {
|
||||||
|
|
||||||
w->priv.min_width = width;
|
w->priv.min_width = width;
|
||||||
w->priv.min_height = height;
|
w->priv.min_height = height;
|
||||||
|
|
||||||
GdkGeometry hints;
|
GdkGeometry hints;
|
||||||
GdkWindowHints usedHints = (GdkWindowHints) GDK_HINT_MIN_SIZE;
|
GdkWindowHints usedHints = (GdkWindowHints) GDK_HINT_MIN_SIZE;
|
||||||
|
|
||||||
hints.min_width = w->priv.min_width;
|
hints.min_width = w->priv.min_width;
|
||||||
hints.min_height = w->priv.min_height;
|
hints.min_height = w->priv.min_height;
|
||||||
if (w->priv.max_width != -1) {
|
if (w->priv.max_width != -1) {
|
||||||
@ -435,18 +435,18 @@ struct webview_priv
|
|||||||
hints.max_height = w->priv.max_height;
|
hints.max_height = w->priv.max_height;
|
||||||
usedHints = (GdkWindowHints)(GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE);
|
usedHints = (GdkWindowHints)(GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_window_set_geometry_hints(GTK_WINDOW(w->priv.window), w->priv.window, &hints, usedHints);
|
gtk_window_set_geometry_hints(GTK_WINDOW(w->priv.window), w->priv.window, &hints, usedHints);
|
||||||
}
|
}
|
||||||
|
|
||||||
WEBVIEW_API void webview_maxsize(struct webview *w, int width, int height) {
|
WEBVIEW_API void webview_maxsize(struct webview *w, int width, int height) {
|
||||||
|
|
||||||
w->priv.max_width = width;
|
w->priv.max_width = width;
|
||||||
w->priv.max_height = height;
|
w->priv.max_height = height;
|
||||||
|
|
||||||
GdkGeometry hints;
|
GdkGeometry hints;
|
||||||
GdkWindowHints usedHints = (GdkWindowHints) GDK_HINT_MAX_SIZE;
|
GdkWindowHints usedHints = (GdkWindowHints) GDK_HINT_MAX_SIZE;
|
||||||
|
|
||||||
if (w->priv.min_width != -1) {
|
if (w->priv.min_width != -1) {
|
||||||
hints.min_width = w->priv.min_width;
|
hints.min_width = w->priv.min_width;
|
||||||
hints.min_height = w->priv.min_height;
|
hints.min_height = w->priv.min_height;
|
||||||
@ -454,7 +454,7 @@ struct webview_priv
|
|||||||
}
|
}
|
||||||
hints.max_width = w->priv.max_width;
|
hints.max_width = w->priv.max_width;
|
||||||
hints.max_height = w->priv.max_height;
|
hints.max_height = w->priv.max_height;
|
||||||
|
|
||||||
gtk_window_set_geometry_hints(GTK_WINDOW(w->priv.window), w->priv.window, &hints, usedHints);
|
gtk_window_set_geometry_hints(GTK_WINDOW(w->priv.window), w->priv.window, &hints, usedHints);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -514,7 +514,6 @@ struct webview_priv
|
|||||||
}
|
}
|
||||||
gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(dlg), FALSE);
|
gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(dlg), FALSE);
|
||||||
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dlg), FALSE);
|
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dlg), FALSE);
|
||||||
gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(dlg), TRUE);
|
|
||||||
gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dlg), TRUE);
|
gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dlg), TRUE);
|
||||||
gtk_file_chooser_set_create_folders(GTK_FILE_CHOOSER(dlg), TRUE);
|
gtk_file_chooser_set_create_folders(GTK_FILE_CHOOSER(dlg), TRUE);
|
||||||
gint response = gtk_dialog_run(GTK_DIALOG(dlg));
|
gint response = gtk_dialog_run(GTK_DIALOG(dlg));
|
||||||
@ -1398,12 +1397,12 @@ struct webview_priv
|
|||||||
case WM_GETMINMAXINFO:
|
case WM_GETMINMAXINFO:
|
||||||
{
|
{
|
||||||
if (w != NULL) {
|
if (w != NULL) {
|
||||||
// get pixel density
|
// get pixel density
|
||||||
HDC hDC = GetDC(NULL);
|
HDC hDC = GetDC(NULL);
|
||||||
double DPIScaleX = GetDeviceCaps(hDC, 88)/96.0;
|
double DPIScaleX = GetDeviceCaps(hDC, 88)/96.0;
|
||||||
double DPIScaleY = GetDeviceCaps(hDC, 90)/96.0;
|
double DPIScaleY = GetDeviceCaps(hDC, 90)/96.0;
|
||||||
ReleaseDC(NULL, hDC);
|
ReleaseDC(NULL, hDC);
|
||||||
|
|
||||||
RECT rcClient, rcWind;
|
RECT rcClient, rcWind;
|
||||||
POINT ptDiff;
|
POINT ptDiff;
|
||||||
GetClientRect(hwnd, &rcClient);
|
GetClientRect(hwnd, &rcClient);
|
||||||
@ -1413,7 +1412,7 @@ struct webview_priv
|
|||||||
int heightExtra = (rcWind.bottom - rcWind.top) - rcClient.bottom;
|
int heightExtra = (rcWind.bottom - rcWind.top) - rcClient.bottom;
|
||||||
|
|
||||||
LPMINMAXINFO lpMMI = (LPMINMAXINFO)lParam;
|
LPMINMAXINFO lpMMI = (LPMINMAXINFO)lParam;
|
||||||
|
|
||||||
if (w->priv.min_width != -1) {
|
if (w->priv.min_width != -1) {
|
||||||
lpMMI->ptMinTrackSize.x = w->priv.min_width * DPIScaleX + widthExtra;
|
lpMMI->ptMinTrackSize.x = w->priv.min_width * DPIScaleX + widthExtra;
|
||||||
lpMMI->ptMinTrackSize.y = w->priv.min_height * DPIScaleY + heightExtra;
|
lpMMI->ptMinTrackSize.y = w->priv.min_height * DPIScaleY + heightExtra;
|
||||||
@ -1423,7 +1422,7 @@ struct webview_priv
|
|||||||
lpMMI->ptMaxTrackSize.y = w->priv.max_height * DPIScaleY + heightExtra;
|
lpMMI->ptMaxTrackSize.y = w->priv.max_height * DPIScaleY + heightExtra;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case WM_DESTROY:
|
case WM_DESTROY:
|
||||||
@ -2328,14 +2327,14 @@ struct webview_priv
|
|||||||
{
|
{
|
||||||
[w->priv.window makeKeyWindow];
|
[w->priv.window makeKeyWindow];
|
||||||
}
|
}
|
||||||
|
|
||||||
WEBVIEW_API void webview_minsize(struct webview *w, int width, int height) {
|
WEBVIEW_API void webview_minsize(struct webview *w, int width, int height) {
|
||||||
NSSize size;
|
NSSize size;
|
||||||
size.width = width;
|
size.width = width;
|
||||||
size.height = height;
|
size.height = height;
|
||||||
[w->priv.window setMinSize:size];
|
[w->priv.window setMinSize:size];
|
||||||
}
|
}
|
||||||
|
|
||||||
WEBVIEW_API void webview_maxsize(struct webview *w, int width, int height) {
|
WEBVIEW_API void webview_maxsize(struct webview *w, int width, int height) {
|
||||||
NSSize size;
|
NSSize size;
|
||||||
size.width = width;
|
size.width = width;
|
||||||
@ -2346,7 +2345,7 @@ struct webview_priv
|
|||||||
[button performSelectorOnMainThread:@selector(setEnabled:) withObject:NO
|
[button performSelectorOnMainThread:@selector(setEnabled:) withObject:NO
|
||||||
waitUntilDone:NO];
|
waitUntilDone:NO];
|
||||||
}
|
}
|
||||||
|
|
||||||
WEBVIEW_API void webview_set_fullscreen(struct webview *w, int fullscreen)
|
WEBVIEW_API void webview_set_fullscreen(struct webview *w, int fullscreen)
|
||||||
{
|
{
|
||||||
int b = ((([w->priv.window styleMask] & NSWindowStyleMaskFullScreen) ==
|
int b = ((([w->priv.window styleMask] & NSWindowStyleMaskFullScreen) ==
|
||||||
@ -2503,4 +2502,4 @@ struct webview_priv
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* WEBVIEW_H */
|
#endif /* WEBVIEW_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user