Fix gtk4 file explorer for windows
This commit is contained in:
parent
0f64054ad0
commit
2934b08742
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools"
|
||||
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
|
||||
"cmake.configureOnOpen": true
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
set(CMAKE_CXX_STANDARD 17)
|
||||
cmake_minimum_required(VERSION 3.0.0)
|
||||
cmake_minimum_required(VERSION 3.5.0)
|
||||
project(gtk149_file_exp VERSION 1.0.0)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../../GCR_CMake/macros)
|
||||
|
@ -59,7 +59,7 @@ if(WIN32)
|
|||
set_property(SOURCE ../icon.rc APPEND PROPERTY
|
||||
OBJECT_DEPENDS ${PROJECT_SOURCE_DIR}/../icon.ico
|
||||
)
|
||||
add_executable(${PROJECT_NAME} WIN32 ${app_WINRC} ${SOURCE_FILE} ${RESOURCE_FILE})
|
||||
add_executable(${PROJECT_NAME} ${app_WINRC} ${SOURCE_FILE} ${RESOURCE_FILE})
|
||||
add_custom_command( TARGET ${PROJECT_NAME}
|
||||
COMMAND echo * > ${CMAKE_BINARY_DIR}/.gitignore
|
||||
COMMAND echo **/* > ${CMAKE_BINARY_DIR}/.hgignore)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "FileColumnView.h"
|
||||
#include "GetFileType.h"
|
||||
|
||||
static void setup_fileicon_item(GtkListItemFactory *factory, GtkListItem *item)
|
||||
{
|
||||
|
@ -103,7 +104,7 @@ static void listview_activated(GtkColumnView *view, guint position, FileWindow *
|
|||
GtkDirectoryList *list = GTK_DIRECTORY_LIST(file_window_get_column_model(win));
|
||||
|
||||
// if the file type is directory, open the directory
|
||||
if (g_file_info_get_file_type(info) == G_FILE_TYPE_DIRECTORY)
|
||||
if (check_directory(info))
|
||||
{
|
||||
// Get the file and set it to the GtkDirectoryList
|
||||
GFile *file = G_FILE(g_file_info_get_attribute_object(info, "standard::file"));
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "FileGridView.h"
|
||||
#include "GetFileType.h"
|
||||
|
||||
static void setup_grid_item(GtkListItemFactory *factory, GtkListItem *item)
|
||||
{
|
||||
|
@ -63,7 +64,7 @@ static void gridview_activate(GtkGridView *view, guint position, FileWindow *win
|
|||
GtkDirectoryList *list = GTK_DIRECTORY_LIST(file_window_get_grid_model(win));
|
||||
|
||||
// if the file type is directory, open the directory
|
||||
if (g_file_info_get_file_type(info) == G_FILE_TYPE_DIRECTORY)
|
||||
if (check_directory(info))
|
||||
{
|
||||
// Get the file and set it to the GtkDirectoryList
|
||||
GFile *file = G_FILE(g_file_info_get_attribute_object(info, "standard::file"));
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
#pragma once
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <cstring>
|
||||
|
||||
// Check the whether the selected file is directory
|
||||
// This is a patch for Microsoft Windows
|
||||
static inline gboolean check_directory(GFileInfo *info)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
const char *file_type = g_file_info_get_content_type(info);
|
||||
if(strncmp(file_type, "inode/directory", strlen("inode/directory")) == 0)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
#else
|
||||
if(g_file_info_get_file_type(info) == G_FILE_TYPE_DIRECTORY){
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
// Not a directory, return FALSE
|
||||
return FALSE;
|
||||
}
|
Loading…
Reference in New Issue