Merge branch 'hotfix-1.5.6' into feature-listbox
This commit is contained in:
commit
196d0bf351
@ -35,6 +35,9 @@ matrix:
|
|||||||
- libx11-dev
|
- libx11-dev
|
||||||
- libxft-dev
|
- libxft-dev
|
||||||
- libboost-filesystem-dev
|
- libboost-filesystem-dev
|
||||||
|
- libboost-system-dev
|
||||||
|
- libboost-thread-dev
|
||||||
|
- libboost-chrono-dev
|
||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
|
@ -5,7 +5,8 @@
|
|||||||
# Robert Hauck - Enable support for PNG/Freetype
|
# Robert Hauck - Enable support for PNG/Freetype
|
||||||
# Qiangqiang Wu - Add biicode support
|
# Qiangqiang Wu - Add biicode support
|
||||||
# Ariel Vina-Rodriguez (qPCR4vir)
|
# Ariel Vina-Rodriguez (qPCR4vir)
|
||||||
# Frostbane - Add option for compiling a shared library
|
# Pavel O. - fix compilation with boost::filesystem (#281)
|
||||||
|
# Frostbane - Add option for compiling a shared library (#263,#265)
|
||||||
#
|
#
|
||||||
# Nana uses some build systems: MS-VS solution, MAKE, bakefile, codeblock, etc. manually optimized.
|
# Nana uses some build systems: MS-VS solution, MAKE, bakefile, codeblock, etc. manually optimized.
|
||||||
# In the future CMake could be the prefered, and maybe will be used to generate the others and the central nana repo
|
# In the future CMake could be the prefered, and maybe will be used to generate the others and the central nana repo
|
||||||
@ -245,7 +246,7 @@ elseif (NANA_CMAKE_STD_FILESYSTEM_FORCE)
|
|||||||
add_definitions(-DSTD_FILESYSTEM_FORCE)
|
add_definitions(-DSTD_FILESYSTEM_FORCE)
|
||||||
elseif (NANA_CMAKE_FIND_BOOST_FILESYSTEM OR NANA_CMAKE_BOOST_FILESYSTEM_FORCE)
|
elseif (NANA_CMAKE_FIND_BOOST_FILESYSTEM OR NANA_CMAKE_BOOST_FILESYSTEM_FORCE)
|
||||||
if (NANA_CMAKE_BOOST_FILESYSTEM_FORCE)
|
if (NANA_CMAKE_BOOST_FILESYSTEM_FORCE)
|
||||||
add_definitions(-DNANA_BOOST_FILESYSTEM_FORCE)
|
add_definitions(-DBOOST_FILESYSTEM_FORCE)
|
||||||
endif(NANA_CMAKE_BOOST_FILESYSTEM_FORCE)
|
endif(NANA_CMAKE_BOOST_FILESYSTEM_FORCE)
|
||||||
# https://cmake.org/cmake/help/git-master/module/FindBoost.html
|
# https://cmake.org/cmake/help/git-master/module/FindBoost.html
|
||||||
# Implicit dependencies such as Boost::filesystem requiring Boost::system will be automatically detected and satisfied,
|
# Implicit dependencies such as Boost::filesystem requiring Boost::system will be automatically detected and satisfied,
|
||||||
@ -253,7 +254,7 @@ elseif (NANA_CMAKE_FIND_BOOST_FILESYSTEM OR NANA_CMAKE_BOOST_FILESYSTEM_FORCE)
|
|||||||
# If using Boost::thread, then Thread::Thread will also be added automatically.
|
# If using Boost::thread, then Thread::Thread will also be added automatically.
|
||||||
find_package(Boost COMPONENTS filesystem)
|
find_package(Boost COMPONENTS filesystem)
|
||||||
if (Boost_FOUND)
|
if (Boost_FOUND)
|
||||||
add_definitions(-DNANA_BOOST_FILESYSTEM_AVAILABLE)
|
add_definitions(-DBOOST_FILESYSTEM_AVAILABLE)
|
||||||
include_directories(SYSTEM "${Boost_INCLUDE_DIR}")
|
include_directories(SYSTEM "${Boost_INCLUDE_DIR}")
|
||||||
list(APPEND NANA_LINKS ${Boost_LIBRARIES}) ###### FIRST !!!!!!!!!!!!!!!!! add is not first
|
list(APPEND NANA_LINKS ${Boost_LIBRARIES}) ###### FIRST !!!!!!!!!!!!!!!!! add is not first
|
||||||
endif (Boost_FOUND)
|
endif (Boost_FOUND)
|
||||||
|
@ -53,6 +53,7 @@
|
|||||||
|
|
||||||
#undef NANA_USING_BOOST_FILESYSTEM
|
#undef NANA_USING_BOOST_FILESYSTEM
|
||||||
#define NANA_USING_BOOST_FILESYSTEM 1
|
#define NANA_USING_BOOST_FILESYSTEM 1
|
||||||
|
# include <chrono>
|
||||||
# include <boost/filesystem.hpp>
|
# include <boost/filesystem.hpp>
|
||||||
|
|
||||||
// add boost::filesystem into std::experimental::filesystem
|
// add boost::filesystem into std::experimental::filesystem
|
||||||
@ -60,6 +61,20 @@ namespace std {
|
|||||||
namespace experimental {
|
namespace experimental {
|
||||||
namespace filesystem {
|
namespace filesystem {
|
||||||
using namespace boost::filesystem;
|
using namespace boost::filesystem;
|
||||||
|
using file_time_type = std::chrono::time_point<std::chrono::system_clock>;
|
||||||
|
|
||||||
|
enum class file_type {
|
||||||
|
none = boost::filesystem::file_type::status_unknown,
|
||||||
|
not_found = boost::filesystem::file_type::file_not_found,
|
||||||
|
regular = boost::filesystem::file_type::regular_file,
|
||||||
|
directory = boost::filesystem::file_type::directory_file,
|
||||||
|
symlink = boost::filesystem::file_type::symlink_file,
|
||||||
|
block = boost::filesystem::file_type::block_file,
|
||||||
|
character = boost::filesystem::file_type::character_file,
|
||||||
|
fifo = boost::filesystem::file_type::fifo_file,
|
||||||
|
socket = boost::filesystem::file_type::socket_file,
|
||||||
|
unknown = boost::filesystem::file_type::type_unknown,
|
||||||
|
};
|
||||||
} // filesystem
|
} // filesystem
|
||||||
} // experimental
|
} // experimental
|
||||||
} // std
|
} // std
|
||||||
|
@ -12,6 +12,9 @@
|
|||||||
* @brief Implement the lack support of standard library.
|
* @brief Implement the lack support of standard library.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef NANA_STDCXX_INCLUDED
|
||||||
|
#define NANA_STDCXX_INCLUDED
|
||||||
|
|
||||||
#include "c++defines.hpp"
|
#include "c++defines.hpp"
|
||||||
|
|
||||||
//Implement workarounds for GCC/MinGW which version is below 4.8.2
|
//Implement workarounds for GCC/MinGW which version is below 4.8.2
|
||||||
@ -153,4 +156,6 @@ namespace std
|
|||||||
return (v < lo ? lo : (hi < v ? hi : v));
|
return (v < lo ? lo : (hi < v ? hi : v));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif // NANA_STDCXX_INCLUDED
|
||||||
|
@ -14,7 +14,13 @@
|
|||||||
#include <nana/filesystem/filesystem_ext.hpp>
|
#include <nana/filesystem/filesystem_ext.hpp>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iomanip> //put_time
|
|
||||||
|
#include <nana/config.hpp>
|
||||||
|
#ifdef _enable_std_put_time
|
||||||
|
#include <nana/stdc++.hpp>
|
||||||
|
#else
|
||||||
|
#include <iomanip>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(NANA_WINDOWS)
|
#if defined(NANA_WINDOWS)
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
@ -97,7 +103,13 @@ namespace nana
|
|||||||
std::string pretty_file_date(const fs::path& path) // todo: move to .cpp
|
std::string pretty_file_date(const fs::path& path) // todo: move to .cpp
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
#if NANA_USING_BOOST_FILESYSTEM
|
||||||
|
// The return type of boost::filesystem::last_write_time isn't
|
||||||
|
// the same as in nana and std implementations of this function
|
||||||
|
auto ftime = std::chrono::system_clock::from_time_t(fs::last_write_time(path));
|
||||||
|
#else
|
||||||
auto ftime = fs::last_write_time(path);
|
auto ftime = fs::last_write_time(path);
|
||||||
|
#endif
|
||||||
|
|
||||||
// crash: VS2015 will not read the time for some files (for example: C:/hiberfil.sys)
|
// crash: VS2015 will not read the time for some files (for example: C:/hiberfil.sys)
|
||||||
// and will return file_time_type(-1) without throwing
|
// and will return file_time_type(-1) without throwing
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Window Layout Implementation
|
* Window Layout Implementation
|
||||||
* Nana C++ Library(http://www.nanapro.org)
|
* Nana C++ Library(http://www.nanapro.org)
|
||||||
* Copyright(C) 2003-2017 Jinhao(cnjinhao@hotmail.com)
|
* Copyright(C) 2003-2018 Jinhao(cnjinhao@hotmail.com)
|
||||||
*
|
*
|
||||||
* Distributed under the Boost Software License, Version 1.0.
|
* Distributed under the Boost Software License, Version 1.0.
|
||||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -386,6 +386,13 @@ namespace nana
|
|||||||
nana::rectangle r_of_sigwd(sigwd->pos_root, sigwd->dimension);
|
nana::rectangle r_of_sigwd(sigwd->pos_root, sigwd->dimension);
|
||||||
for (auto wd : data_sect.effects_bground_windows)
|
for (auto wd : data_sect.effects_bground_windows)
|
||||||
{
|
{
|
||||||
|
//Don't notify the window if both native root windows are not same(e.g. wd and sigwd have
|
||||||
|
//a some parent). Otherwise, _m_paint_glass_window() recursively paints sigwd to make stack overflow.
|
||||||
|
//On the other hand, a nested root window is always floating on its parent's child widgets, it's unnecessary to
|
||||||
|
//notify the wd if they haven't a same native root window.
|
||||||
|
if (sigwd->root != wd->root)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (wd == sigwd || !wd->displayed() ||
|
if (wd == sigwd || !wd->displayed() ||
|
||||||
(false == overlapped(nana::rectangle{ wd->pos_root, wd->dimension }, r_of_sigwd)))
|
(false == overlapped(nana::rectangle{ wd->pos_root, wd->dimension }, r_of_sigwd)))
|
||||||
continue;
|
continue;
|
||||||
|
@ -505,21 +505,18 @@ namespace nana
|
|||||||
|
|
||||||
auto fpath = i->path().native();
|
auto fpath = i->path().native();
|
||||||
auto fattr = fs::status(fpath);
|
auto fattr = fs::status(fpath);
|
||||||
|
auto ftype = static_cast<fs::file_type>(fattr.type());
|
||||||
|
|
||||||
item_fs m;
|
item_fs m;
|
||||||
m.name = name;
|
m.name = name;
|
||||||
m.directory = fs::is_directory(fattr);
|
m.directory = fs::is_directory(fattr);
|
||||||
|
|
||||||
switch(fattr.type())
|
if (ftype == fs::file_type::not_found ||
|
||||||
{
|
ftype == fs::file_type::unknown ||
|
||||||
case fs::file_type::not_found:
|
ftype == fs::file_type::directory)
|
||||||
case fs::file_type::unknown:
|
|
||||||
case fs::file_type::directory:
|
|
||||||
m.bytes = 0;
|
m.bytes = 0;
|
||||||
break;
|
else
|
||||||
default:
|
|
||||||
m.bytes = fs::file_size(fpath);
|
m.bytes = fs::file_size(fpath);
|
||||||
}
|
|
||||||
|
|
||||||
fs_ext::modified_file_time(fpath, m.modified_time);
|
fs_ext::modified_file_time(fpath, m.modified_time);
|
||||||
|
|
||||||
@ -692,13 +689,12 @@ namespace nana
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
using file_type = fs::file_type;
|
|
||||||
|
|
||||||
fs::path fspath(fb_.addr_.filesystem + path);
|
fs::path fspath(fb_.addr_.filesystem + path);
|
||||||
|
|
||||||
auto fst = fs::status(fspath);
|
auto fattr = fs::status(fspath);
|
||||||
|
auto ftype = static_cast<fs::file_type>(fattr.type());
|
||||||
|
|
||||||
if(fst.type() != file_type::not_found && fst.type() != file_type::none)
|
if(ftype != fs::file_type::not_found && ftype != fs::file_type::none)
|
||||||
{
|
{
|
||||||
mb<<i18n("NANA_FILEBOX_ERROR_RENAME_FOLDER_BECAUSE_OF_EXISTING");
|
mb<<i18n("NANA_FILEBOX_ERROR_RENAME_FOLDER_BECAUSE_OF_EXISTING");
|
||||||
mb();
|
mb();
|
||||||
@ -800,6 +796,7 @@ namespace nana
|
|||||||
tar = addr_.filesystem + file;
|
tar = addr_.filesystem + file;
|
||||||
|
|
||||||
auto fattr = fs::status(tar);
|
auto fattr = fs::status(tar);
|
||||||
|
auto ftype = static_cast<fs::file_type>(fattr.type());
|
||||||
|
|
||||||
//Check if the selected name is a directory
|
//Check if the selected name is a directory
|
||||||
auto is_dir = fs::is_directory(fattr);
|
auto is_dir = fs::is_directory(fattr);
|
||||||
@ -808,6 +805,7 @@ namespace nana
|
|||||||
{
|
{
|
||||||
//Add the extension, then check if it is a directory again.
|
//Add the extension, then check if it is a directory again.
|
||||||
fattr = fs::status(tar);
|
fattr = fs::status(tar);
|
||||||
|
ftype = static_cast<fs::file_type>(fattr.type());
|
||||||
is_dir = fs::is_directory(fattr);
|
is_dir = fs::is_directory(fattr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -820,7 +818,7 @@ namespace nana
|
|||||||
|
|
||||||
if(io_read_)
|
if(io_read_)
|
||||||
{
|
{
|
||||||
if(fs::file_type::not_found == fattr.type())
|
if(fs::file_type::not_found == ftype)
|
||||||
{
|
{
|
||||||
msgbox mb(*this, caption());
|
msgbox mb(*this, caption());
|
||||||
mb.icon(msgbox::icon_information);
|
mb.icon(msgbox::icon_information);
|
||||||
@ -832,7 +830,7 @@ namespace nana
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(fs::file_type::not_found != fattr.type())
|
if(fs::file_type::not_found != ftype)
|
||||||
{
|
{
|
||||||
msgbox mb(*this, caption(), msgbox::yes_no);
|
msgbox mb(*this, caption(), msgbox::yes_no);
|
||||||
mb.icon(msgbox::icon_question);
|
mb.icon(msgbox::icon_question);
|
||||||
|
@ -4735,12 +4735,12 @@ namespace nana
|
|||||||
|
|
||||||
bool item_proxy::operator==(const std::string& s) const
|
bool item_proxy::operator==(const std::string& s) const
|
||||||
{
|
{
|
||||||
return (text(pos_.item) == s);
|
return (text(0) == s);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool item_proxy::operator==(const std::wstring& s) const
|
bool item_proxy::operator==(const std::wstring& s) const
|
||||||
{
|
{
|
||||||
return (text(pos_.item) == to_utf8(s));
|
return (text(0) == to_utf8(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
item_proxy & item_proxy::operator=(const item_proxy& rhs)
|
item_proxy & item_proxy::operator=(const item_proxy& rhs)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* A Progress Indicator Implementation
|
* A Progress Indicator Implementation
|
||||||
* Copyright(C) 2003-2017 Jinhao(cnjinhao@hotmail.com)
|
* Copyright(C) 2003-2018 Jinhao(cnjinhao@hotmail.com)
|
||||||
*
|
*
|
||||||
* Distributed under the Boost Software License, Version 1.0.
|
* Distributed under the Boost Software License, Version 1.0.
|
||||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -96,7 +96,11 @@ namespace nana
|
|||||||
{
|
{
|
||||||
if (widget_)
|
if (widget_)
|
||||||
{
|
{
|
||||||
auto value_px = (widget_->size().width - border_px * 2) * value_ / max_;
|
auto value_px = (widget_->size().width - border_px * 2);
|
||||||
|
|
||||||
|
//avoid overflow
|
||||||
|
if (value_ < max_)
|
||||||
|
value_px = static_cast<unsigned>(value_px * (double(value_) / double(max_)));
|
||||||
|
|
||||||
if (value_px != value_px_)
|
if (value_px != value_px_)
|
||||||
{
|
{
|
||||||
|
@ -15,7 +15,12 @@
|
|||||||
#include <nana/gui/detail/bedrock.hpp>
|
#include <nana/gui/detail/bedrock.hpp>
|
||||||
#include <nana/std_thread.hpp>
|
#include <nana/std_thread.hpp>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <chrono>
|
|
||||||
|
#ifdef STD_THREAD_NOT_SUPPORTED
|
||||||
|
# include <boost/chrono.hpp>
|
||||||
|
#else
|
||||||
|
# include <chrono>
|
||||||
|
#endif
|
||||||
|
|
||||||
//#define NANA_AUTOMATIC_GUI_TESTING
|
//#define NANA_AUTOMATIC_GUI_TESTING
|
||||||
namespace nana
|
namespace nana
|
||||||
|
Loading…
x
Reference in New Issue
Block a user