OSDN Git Service

winmerge-jp/winmerge-jp.git
5 years agoImprovements to CSuperComboBox (4)
GreyMerlin [Wed, 29 Aug 2018 19:26:41 +0000 (12:26 -0700)]
Improvements to CSuperComboBox (4)

- modernize many `BOOL` to `bool`
- reorganize layout of `SuperComboBox.h`
- better internal detection of "Optional" third file control.  Better
handling of that control's "empty" state.
- Minor code cleanup, not affecting overall logic.
- Add comments to procedure parameters with default values.

5 years agoImprovements to CSuperComboBox (3)
GreyMerlin [Mon, 20 Aug 2018 19:53:26 +0000 (12:53 -0700)]
Improvements to CSuperComboBox (3)

- Simplify `IsComboBox()` checking and make it `const` and `private`

5 years agoImprovements to CSuperComboBox (2)
GreyMerlin [Mon, 20 Aug 2018 18:42:23 +0000 (11:42 -0700)]
Improvements to CSuperComboBox (2)

- Comments and simple text edits

5 years agoImprovements to CSuperComboBox
GreyMerlin [Mon, 25 Jun 2018 21:54:08 +0000 (14:54 -0700)]
Improvements to CSuperComboBox

5 years agoUpdate Poco SharedMemory to current standard
GreyMerlin [Mon, 25 Jun 2018 21:53:31 +0000 (14:53 -0700)]
Update Poco SharedMemory to current standard

- Eliminate unused parameters

5 years ago"Private Build" is now easy and useful for developers
GreyMerlin [Fri, 17 Aug 2018 21:27:20 +0000 (14:27 -0700)]
"Private Build" is now easy and useful for developers

* A Private Build string can now be #defined in `version.h`; the
default value is an empty string (as it should be for all released
versions of **WinMerge**).   This value propagates into the
VersionInfo block via the `Merge2.rc` file, and is therefore available
to all checking of the VersionInfo block of the `.exe` file.

* The About dialog is modified to remove the separate line that
displayed the "Private Build:" information in the past, as that line
overlapped the "Copyright" text immediately below.  The "Private Build"
info is now displayed on the same line as the Version, separated by
" + ".  There is room for about 11 characters of "Private Build" text.

* The Configuration Log File now indicates the Private Build
information following the Version, rather that simply stating
"(Private Build)"

* Cleanup the mechanics of getting the "Private Build" information into
the About dialog.

* Also a few trivial code and comment changes.

5 years agoRestore lost translations
sdottaka@users.sourceforge.net [Sat, 1 Sep 2018 15:34:59 +0000 (00:34 +0900)]
Restore lost translations

5 years agoMerge.rc: Make setting button in OpenDlg wider. bitbucket#111
sdottaka@users.sourceforge.net [Sat, 1 Sep 2018 14:48:37 +0000 (23:48 +0900)]
Merge.rc: Make setting button in OpenDlg wider. bitbucket#111

5 years agoAttempt to fix bitbucket#109
sdottaka@users.sourceforge.net [Sat, 1 Sep 2018 14:03:08 +0000 (23:03 +0900)]
Attempt to fix bitbucket#109

5 years agoUpdate translations
sdottaka@users.sourceforge.net [Sat, 1 Sep 2018 13:19:56 +0000 (22:19 +0900)]
Update translations

5 years agoMerge pull request #94 from GreyMerlin/master
Takashi Sawanaka [Sat, 18 Aug 2018 11:21:06 +0000 (20:21 +0900)]
Merge pull request #94 from GreyMerlin/master

Adapt to latest VS2017 version 15.8, and more ...

5 years agoAdapt to latest VS2017 version 15.8 (2)
GreyMerlin [Fri, 17 Aug 2018 00:52:31 +0000 (17:52 -0700)]
Adapt to latest VS2017 version 15.8 (2)

* Update the presentation of the Visual Studio Version in the WinMerge
Configuration Log file.

5 years agoAdd new node to Solution Explorer for a few gtest files
GreyMerlin [Fri, 17 Aug 2018 00:49:51 +0000 (17:49 -0700)]
Add new node to Solution Explorer for a few gtest files

* With the testing for the recent `gtest` bug it became convenient to
have a new filter node in the Solution Explorer for making the code
visible to Intellisense.  Additional files beyond simply
`gtest-printers.h` were necessary to prevent Intellisense from
presuming various configuration errors.

* The Solution Explorer additions are copied into VS2015, simply for
consistency

5 years agoAdapt to latest VS2017 version 15.8
GreyMerlin [Fri, 17 Aug 2018 00:43:56 +0000 (17:43 -0700)]
Adapt to latest VS2017 version 15.8

* As is often the case, the boost library needs to update its warning
message for the new compiler version.

* There is a bug in the gtest software; it is using a non-portable
`operator<<` overload.  The ambiguity of this usage is now being
flagged as an error by version 15.8.  There have been many updates to
the gtest software since the version incorporated into WinMerge, but
fortunately the "accepted" and merged solution to this problem simply
drops into WinMerge without issue (although I've added some comments
referencing the gtest PR#1620 -
https://github.com/google/googletest/pull/1620)

* Unfortunately, in order to trigger the source code in gtest PR#1620,
the value of the predefined macro `__cplusplus` must be accurate.  For
various reasons (see
https://blogs.msdn.microsoft.com/vcblog/2018/04/09/msvc-now-correctly-reports-__cplusplus/)
the compiler option `Zc:__cplusplus` must be set in order to generate
correct values for `__cplusplus`.  The changes to the
`*.vs2017.vcxproj`file accomplish this.  Note that the elimination of
the "additional option" `/EHa` is acceptable because that option is
properly specified elsewhere in the project's build properties.

5 years agoCorrect Extended Length Path Name handling on UNC
GreyMerlin [Fri, 17 Aug 2018 00:12:22 +0000 (17:12 -0700)]
Correct Extended Length Path Name handling on UNC

* Too many `\\` characters were being inserted when forming Extended
Length Path Names on UNC (i.e. Network Storage) devices.  This is a bug
in the original Poco library code

* Cleanup awkward code in `SuperComboBox.cpp` for detecting and
handling UNC file path names.

5 years agoMerge pull request #93 from GreyMerlin/master
Takashi Sawanaka [Sat, 4 Aug 2018 20:15:28 +0000 (05:15 +0900)]
Merge pull request #93 from GreyMerlin/master

"Ghost Lines" at the end of file comparisons.

5 years agoReduce Level 4 Build Warnings (12)
GreyMerlin [Fri, 3 Aug 2018 19:32:01 +0000 (12:32 -0700)]
Reduce Level 4 Build Warnings (12)

* I must have missed these three Level 4 Warning situations in the
earlier Pull.
* They are only generated when building the Test configuration for the
Win32 platform.

5 years agoLast Line of Files vs "Ghost Lines" (4)
GreyMerlin [Fri, 3 Aug 2018 19:13:54 +0000 (12:13 -0700)]
Last Line of Files vs "Ghost Lines" (4)

Re-implements the Undo handling for the last line (see my final comments
in the earlier "...Ghost Lines (2)" commit) to move the "Ghost"
sensitive parts out of the `CCrystalTextBuffer` class and into the
`GhostTextBuffer` class.

A new virtual procedure `UndoInsert()`now exists in both
`CCrystalTextBuffer` and `GhostTextBuffer`, with the WinMerge and Ghost
specific checking in the `GhostTextBuffer`class, and the basic deletion
code in the `CCrystalTextBuffer`class.

Also, modify the `VERIFY()`testing in the Undo paths to correctly
interface with the general failure mechanism within `Undo()`

5 years agoLast Line of Files vs "Ghost Lines" (3)
GreyMerlin [Thu, 2 Aug 2018 22:10:34 +0000 (15:10 -0700)]
Last Line of Files vs "Ghost Lines" (3)

`LineInfo::Delete()` was not correctly handling the case of deleting
all text in a line _including_ the CRLF at the end.  This particular
situation exists because of deleting text at the very end of a file.

5 years agoLast Line of Files vs "Ghost Lines" (2)
GreyMerlin [Thu, 2 Aug 2018 22:06:37 +0000 (15:06 -0700)]
Last Line of Files vs "Ghost Lines" (2)

Handle the special case of `Undo()` at the very end of a file.

`Undo()` checks that the text that is being replaced in the file
matches the records being kept in the `m_aUndoBuf[]` structure.  The
deletion of text at very end of the file necessary involves removing an
additional CRLF (because of an LF_GHOST line which was removed too)
which causes this Undo comparison-checking to fail.

Following failure, and only if the failure is at the very end of the
file, a new secondary check is made to check for the deletion of the
additional CRLF.

I don't particularly like this code because it puts knowledge of
"Ghost" lines directly into the code of the `CCrystalTextBuffer` class.
A subsequent patch will factor this into virtual procedures shared with
the `CGhostTextBuffer` class.

5 years agoLast Line of files vs "Ghost Lines" (1)
GreyMerlin [Thu, 2 Aug 2018 19:42:00 +0000 (12:42 -0700)]
Last Line of files vs "Ghost Lines" (1)

The special case of inserting text into the very last line of a file
when that last line is marked as LF_GHOST.  Effectively, the new text
is supposed to go "before" the Ghost, but mechanically the text is
inserted into the Ghost itself, with a new Ghost line appearing at the
end of the file.

Later, the Ghost status of both the first and last inserted lines will
get straightened out, with the trailing Ghost line becoming a NULL
line.  By setting the last line to NULL, the line will eventually be
removed or become an actual LF_GHOST line in
`CMergeDoc::PrimeTextBuffers()`

5 years agoImprove comments relating to "ghost buffers" (2)
GreyMerlin [Thu, 2 Aug 2018 19:39:44 +0000 (12:39 -0700)]
Improve comments relating to "ghost buffers" (2)

* continuing from earlier commit

5 years agoImprove Various ASSERTs related to "Ghost Buffers"
GreyMerlin [Thu, 2 Aug 2018 18:01:48 +0000 (11:01 -0700)]
Improve Various ASSERTs related to "Ghost Buffers"

5 years agoEnable `checkFlagsFromReality()` Debug checking
GreyMerlin [Thu, 2 Aug 2018 17:39:15 +0000 (10:39 -0700)]
Enable `checkFlagsFromReality()` Debug checking

5 years agoImprove comments relating to "ghost buffers"
GreyMerlin [Thu, 2 Aug 2018 17:35:23 +0000 (10:35 -0700)]
Improve comments relating to "ghost buffers"

* Correct and extend various parameter comments, esp. for Doxygen
* Make sure default parameter values in a function definition are
properly commented in the function declaration as well
* Add either `/*virtual base*/` or `/*virtual override*/` comments to
various "ghost buffer " related procedure declarations.
* Eliminate (using `#if 0` and `#endif`) the procedures
`InternalInsertGhostLine()` and `InsertGhostLine()`

5 years agoMerge pull request #92 from GreyMerlin/master
Takashi Sawanaka [Mon, 30 Jul 2018 20:23:49 +0000 (05:23 +0900)]
Merge pull request #92 from GreyMerlin/master

Improve ConfigLog, Build All at Warning Level 4

5 years agoRepair new "old style" casts
GreyMerlin [Sun, 29 Jul 2018 16:12:49 +0000 (09:12 -0700)]
Repair new "old style" casts

* A few "old style" casts were inserted in the various recent patches.
These are now all changed to proper `static_cast<>`

5 years agoWinMerge now builds at Warning Level = 4
GreyMerlin [Sat, 28 Jul 2018 01:57:49 +0000 (18:57 -0700)]
WinMerge now builds at Warning Level = 4

* Both executables: UnitTests and WinMergeU
* All Configurations: Test, Debug, Release
* All Platforms : Win32, X64
* Both Compilers: VS2015, VS2017

* No Warning Messages !!

* Note: the three Poco sub-projects still compile at Warning Level 3,
no effort has been made to move them to warning level 4

5 years agoEliminate most uses of _WIN32 preprocessor symbol
GreyMerlin [Sat, 28 Jul 2018 00:49:22 +0000 (17:49 -0700)]
Eliminate most uses of _WIN32 preprocessor symbol

* WinMerge is very much a Windows product; no need to test for it.  The
only remaining reference to __WIN32 is within GNU's diffutils.
* This change has no impact on the projects within the "poco" software,
`Foundation`, `Utils`or `XML`.

5 years agoCleanup some standard #include file names
GreyMerlin [Fri, 27 Jul 2018 23:13:22 +0000 (16:13 -0700)]
Cleanup some standard #include file names

* Use C++ standard include names rather than old C names (but only in
`*.cpp` files, and `*.h` where appropriate).  For example, use <cstdio>
or <cstdint> rather than <stdio.h> or <stdint.h>

* Make sure to use C-style include names in `*.c` files.  For example
<assert.h> rather than <cassert>

* Remove many (but not all) <shlwapi.h>

* Remove <cstdint>, <cstdarg>, <stdint.h> where not actually necessary

5 years agoRemove most <mbctype.h> includes
GreyMerlin [Fri, 27 Jul 2018 19:43:11 +0000 (12:43 -0700)]
Remove most <mbctype.h> includes

* <mbctype.h> is needed for Multibyte character handling, which is not
needed in a Unicode program.
* The file remains necessary in the `Src/stringdiffs.cpp` however

5 years agoTurn off the build option for Browse Information
GreyMerlin [Fri, 27 Jul 2018 18:21:47 +0000 (11:21 -0700)]
Turn off the build option for Browse Information

* Turn off the build option for Browse Information (/FR for `*.sbr` and
`*.bsc` files).  This has not been needed since VS2008 and can cause the
spurious BK4504 warning message ...
"file contains too many references; ignoring further references from
this source"
that is produced _after_ the compilation is otherwise successfully
completed.

* Additionally, this noticeably speeds up the Debug and Test
compilations

* For a reference to VS2008, see...
https://docs.microsoft.com/en-us/cpp/build/reference/bscmake-reference

* Also, remove the old (and not maintained for a long time)
`*.vcxproj`files for VS2013 for the UnitTests project.

5 years agoReduce Level 4 Build Warnings (11)
GreyMerlin [Fri, 27 Jul 2018 17:45:27 +0000 (10:45 -0700)]
Reduce Level 4 Build Warnings (11)

* Warning C4389: '==': signed/unsigned mismatch

* At this point there are **NO** compilation warnings issued when
compiling WinMerge or UnitTests with Warning Level = 4.  This is for
all build configurations (Debug, Release and Test), all build platforms
(X64 and Win32) and both VS2017 and VS2015 compilers.

5 years agoReduce Level 4 Build Warnings (10)
GreyMerlin [Fri, 27 Jul 2018 16:31:43 +0000 (09:31 -0700)]
Reduce Level 4 Build Warnings (10)

* More casting: some `int` vs. `UINT`, some `int` vs. `char`
* Cast various font Options into (BYTE)
* Use #Pragma warning(push) and (pop) for
"Warning 4244: conversion from 'int' to 'char', possible loss of data",
because there are three large areas that would each need to have many
individual casting otherwise.

5 years agoReduce Level 4 Build Warnings (9)
GreyMerlin [Thu, 26 Jul 2018 23:54:36 +0000 (16:54 -0700)]
Reduce Level 4 Build Warnings (9)

* Copy all `*.vcxproj` into VS2015

5 years agoReduce Level 4 Build Warnings (8)
GreyMerlin [Thu, 26 Jul 2018 23:42:35 +0000 (16:42 -0700)]
Reduce Level 4 Build Warnings (8)

* More use of `TCHAR` rather than `int`
* Warning C4702: unreachable code

* Remove `Src/Merge7zFormatShellImpl.cpp` and `.h` files.  These were
not included in all build configurations, provides no entry points,
causes a syntax warning for "providing too many symbols", and is then
ignored.   Gone Now!

* Disabled in `*.vcxproj` files
 Warning C4204: nonstandard extension used: non-constant aggregate
initializer
Warning C4505  'ff': unreferenced local function has been removed

5 years agoReduce Level 4 Build Warnings (7)
GreyMerlin [Thu, 26 Jul 2018 22:15:50 +0000 (15:15 -0700)]
Reduce Level 4 Build Warnings (7)

* Another "name hiding" issue (analyze.c)
* various string casting

5 years agoReduce Level 4 Build Warnings (6)
GreyMerlin [Thu, 26 Jul 2018 22:00:17 +0000 (15:00 -0700)]
Reduce Level 4 Build Warnings (6)

* cleanup a funny std::transform() warning by simply inlining the code
(DiffWrapper.cpp)
* Make Bomsize calculation less obscure (io.c)
* Misc casting

5 years agoReduce Level 4 Build Warnings (5)
GreyMerlin [Thu, 26 Jul 2018 21:33:06 +0000 (14:33 -0700)]
Reduce Level 4 Build Warnings (5)

* Use `wchar_t` in various places instead of `int` or `UINT`
* use `::towlower()` rather than `::tolower()` for various
`std::transform()` templates

5 years agoReduce Level 4 Build Warnings (4)
GreyMerlin [Thu, 26 Jul 2018 21:18:45 +0000 (14:18 -0700)]
Reduce Level 4 Build Warnings (4)

* declare an `enum` as unsigned or long, especially for bit masking
values.

5 years agoReduce Level 4 Build Warnings (3)
GreyMerlin [Thu, 26 Jul 2018 20:57:11 +0000 (13:57 -0700)]
Reduce Level 4 Build Warnings (3)

* Use appropriate type names rather than generic `int` or `uint`.

* Mostly CLIPFORMAT on procedure definitions.

5 years agoReduce Level 4 Build Warnings (2)
GreyMerlin [Thu, 26 Jul 2018 20:40:22 +0000 (13:40 -0700)]
Reduce Level 4 Build Warnings (2)

* Warning C4459: declaration of 'c' hides global declaration
* Warning C4458: declaration of 'd' hides class member
* Warning C4457 : declaration of 'e' hides function parameter
* Warning C4456: declaration of 'f' hides previous local declaration

I consider that using identifier scope to "hide" more "global"
identifier names is a very misleading and dangerous programming
practice.

5 years agoReduce Level 4 Build Warnings (1)
GreyMerlin [Thu, 26 Jul 2018 20:07:59 +0000 (13:07 -0700)]
Reduce Level 4 Build Warnings (1)

I'm starting on a quest to eliminate as many Level=4 build warnings as
makes sense (and is reasonably easy).  I will not actually "release"
the patches to the `*.vcxproj`files that change the warning level of
the builds (which remain at Level 3); maybe someday ...

I'm not addressing changes to any of the `poco\*` software, except
perhaps a few of the `*.h` files that generate warnings when included
into a WinMerge source file.

* Warning C4100 'a': unreferenced formal parameter
* Warning C4189 'b': local variable is initialized but not referenced

These warnings are suppressed simply by disabling them in the
appropriate `*.vcxproj` file.  I disable them because I claim that
(because of conditional compilation, etc) they are normal and
reasonable coding practice.

5 years agoEliminate use of deprecated `GetVersionEx()` (3)
GreyMerlin [Thu, 26 Jul 2018 18:07:28 +0000 (11:07 -0700)]
Eliminate use of deprecated `GetVersionEx()` (3)

* Tweak comment
* Proper test before calling FindClose() in TempFile.cpp

5 years agoEliminate use of deprecated `GetVersionEx()` (2)
GreyMerlin [Thu, 26 Jul 2018 06:29:13 +0000 (23:29 -0700)]
Eliminate use of deprecated `GetVersionEx()` (2)

* Also for VS2015

5 years agoEliminate use of deprecated `GetVersionEx()`
GreyMerlin [Thu, 26 Jul 2018 02:20:17 +0000 (19:20 -0700)]
Eliminate use of deprecated `GetVersionEx()`

* Add "Win_VersionHelper.h" to implement the proper modern runtime
checking for the Windows version.

* Unrelated: <mbstring.h> is useless in a UNICODE application.

5 years agoRemove various unneeded build command-line options
GreyMerlin [Wed, 25 Jul 2018 23:19:29 +0000 (16:19 -0700)]
Remove various unneeded build command-line options

* _STATIC_CPPLIB, HAVE_STDLIB_H, STDC_HEADERS
* HAVE_STRING_H, REGEX_MALLOC, __MSC__, USG

* Remove use of #include <multimon.h> and COMPILE_MULTIMON_STUBS

5 years agoMajor Improvements to ConfigLog (3)
GreyMerlin [Wed, 25 Jul 2018 17:42:09 +0000 (10:42 -0700)]
Major Improvements to ConfigLog (3)

* Add Modified file date/time to Plugin filenames
* Make Plugin filename relative to WinMerge code file

* Additional formatting and comment tweaks

5 years agoMajor Improvements to ConfigLog (2)
GreyMerlin [Tue, 24 Jul 2018 21:47:57 +0000 (14:47 -0700)]
Major Improvements to ConfigLog (2)

* Add 'Build Software' (e.g. "VS.2017 (15.7) - C/C++ Compiler
19.14.26433")

* Additional formatting tweaks

5 years agoMajor Improvements to ConfigLog
GreyMerlin [Mon, 23 Jul 2018 18:46:46 +0000 (11:46 -0700)]
Major Improvements to ConfigLog

* Add Windows version and Processor, Memory info
* Full WinMerge code file name, full version, file Modified date
* Add Kernel32.dll and shell32.dll windows modules
* Add Modified date for WinMerge modules
* Display registry color values in hex
* Add TEST_WINMERGE to build flags

* Generally improved formatting

5 years agoMerge pull request #91 from GreyMerlin/master
Takashi Sawanaka [Tue, 17 Jul 2018 15:49:31 +0000 (00:49 +0900)]
Merge pull request #91 from GreyMerlin/master

Attempt to fix the issue #100 - Part 2 ... and more

5 years agoAdditions to .gitignore
Bill [Mon, 16 Jul 2018 23:35:38 +0000 (16:35 -0700)]
Additions to .gitignore

- I don't know why these "all of a sudden" became necessary.  The files
have always existed and have always seemed to be ignored before ??

5 years agoUpdate project to latest "Platform Version"
Bill [Mon, 16 Jul 2018 23:26:47 +0000 (16:26 -0700)]
Update project to latest "Platform Version"

5 years agoAdd a new Solution Filter for TestMerge source files
Bill [Mon, 16 Jul 2018 23:25:53 +0000 (16:25 -0700)]
Add a new Solution Filter for TestMerge source files

- Add **MergeTest** as a filter folder to the Solution Explorer.

- Move the Files `Test.cpp`, `TestMain.cpp`, `TestMain.h` and
`...\gtest\gtest.h` to this new filter folder (they were in the MFCGui
folder)

- Add new MergeTest solution filter to VS2015

5 years agoAttempt to fix the issue #100 - Part 2
Bill [Mon, 16 Jul 2018 23:13:08 +0000 (16:13 -0700)]
Attempt to fix the issue #100 - Part 2

- Commit
[2f8e009](https://bitbucket.org/winmerge/winmerge/commits/2f8e009c3f473ca0f6a639990d6307ed95d7694e)
checks for the existence of the `WinIMergeLib.dll` and abandons the
**ImageCompareTest.Open** test if the `.dll` cannot be loaded
correctly.  This checking prevents the inappropriate (and seriously
misleading) SEH error later in the code; _**however**_ it allows the test to
Pass even when the `.dll` is not present.

This follow-on patch forces the test to Fail cleanly, with a
relevant message, when the `.dll` cannot be loaded correctly.

- Also, the handling of `EXPECT_NE(nullptr, pDoc)` in other tests is
improved to prevent SEH errors if `pDoc==nullptr` should ever become
true.

5 years agoFilepathEdit.cpp: Copy all text when pressing Ctrl+C shortcut key while text is not...
Takashi Sawanaka [Mon, 16 Jul 2018 17:23:37 +0000 (02:23 +0900)]
FilepathEdit.cpp: Copy all text when pressing Ctrl+C shortcut key while text is not selected

5 years agoFilepathEdit.*: Enable Ctrl+C shortcut key
Takashi Sawanaka [Mon, 16 Jul 2018 10:29:58 +0000 (19:29 +0900)]
FilepathEdit.*: Enable Ctrl+C shortcut key

5 years agoMerge
Takashi Sawanaka [Mon, 16 Jul 2018 07:23:21 +0000 (16:23 +0900)]
Merge

5 years agoAttempt to fix the issue #100 (bitbucket)
Takashi Sawanaka [Mon, 16 Jul 2018 07:22:38 +0000 (16:22 +0900)]
Attempt to fix the issue #100 (bitbucket)

5 years agoFix Charset meta tag from ShellExtension/Italian.po
Tim Gerundt [Tue, 10 Jul 2018 03:55:31 +0000 (05:55 +0200)]
Fix Charset meta tag from ShellExtension/Italian.po

5 years agoTweak output from GetTranslationsStatus.py
Tim Gerundt [Tue, 10 Jul 2018 03:53:26 +0000 (05:53 +0200)]
Tweak output from GetTranslationsStatus.py

5 years agoUse README.md in root directory
Tim Gerundt [Tue, 10 Jul 2018 03:47:31 +0000 (05:47 +0200)]
Use README.md in root directory

6 years agoMerge pull request #90 from GreyMerlin/master
Takashi Sawanaka [Thu, 28 Jun 2018 15:22:10 +0000 (00:22 +0900)]
Merge pull request #90 from GreyMerlin/master

Improve Handling of Last Lines in Files, *Plus More*

6 years agoFix problems with _countf() in newest VS 15.7.2 (2)
GreyMerlin [Wed, 27 Jun 2018 18:23:43 +0000 (11:23 -0700)]
Fix problems with _countf() in newest VS 15.7.2 (2)

 - See earlier commit [76754ec1...]
(https://github.com/GreyMerlin/winmerge-v2/commit/
76754ec1f47042b8b857ad5082054033190788b8),
05/27/2018  "Fix problems with _countf() in newest VS 15.7.2"]

6 years agoFix a few comments in procedure declarations
GreyMerlin [Tue, 26 Jun 2018 23:24:44 +0000 (16:24 -0700)]
Fix a few comments in procedure declarations

- Fixed (just a few) comments where the definition specifies and
initial value for a parameter, but the declaration has an incorrect or
missing comment.

6 years agoRemoval of more "signed/unsigned mismatch" warnings
GreyMerlin [Tue, 26 Jun 2018 14:54:46 +0000 (07:54 -0700)]
Removal of more "signed/unsigned mismatch" warnings

6 years agoMark more masking constants as unsigned
GreyMerlin [Tue, 26 Jun 2018 14:53:59 +0000 (07:53 -0700)]
Mark more masking constants as unsigned

6 years agoMerge branch 'master' of https://github.com/sdottaka/winmerge-v2
GreyMerlin [Tue, 26 Jun 2018 14:22:32 +0000 (07:22 -0700)]
Merge branch 'master' of https://github.com/sdottaka/winmerge-v2

6 years agoImprove handling of last lines in files (6)
GreyMerlin [Tue, 26 Jun 2018 06:14:57 +0000 (23:14 -0700)]
Improve handling of last lines in files (6)

- Hex mask constants (#define and enum values) are now explicitly marked
as Unsigned.

6 years agoImprove handling of last lines in files (5)
GreyMerlin [Tue, 26 Jun 2018 01:27:21 +0000 (18:27 -0700)]
Improve handling of last lines in files (5)

- When using Copy Left (or Copy Right) on a block of line differences at
the _very_ end of both files, a fatal abort would occur when copying
lines into the shortest of the two end blocks.

- This fatal error would occur when deleting "ghost" lines at the end
of that shortest block, because the starting location of the "ghost"
lines was improperly calculated.

- There remains a non-fatal bug in that an extra EOL (and thus an
extra blank line) is added to the end of a Copy (Left or Right) when
that action is on the text block at the very end of the file.

- The Undo action (ctrl-Z) continues to function correctly for these
situations.

6 years agoImprove handling of last lines in files (4)
GreyMerlin [Mon, 25 Jun 2018 21:40:21 +0000 (14:40 -0700)]
Improve handling of last lines in files (4)

- Slightly improved boundary checking

6 years agoImprove handling of last lines in files (3)
GreyMerlin [Sat, 23 Jun 2018 22:45:57 +0000 (15:45 -0700)]
Improve handling of last lines in files (3)

Trivial textual cleanup ...

- Change `ASSERT(0)` to `ASSERT(false)`
- change  `bFirstLineGhost` from `int` to `bool'

6 years agoImprove handling of last lines in files (2)
GreyMerlin [Sat, 23 Jun 2018 22:21:42 +0000 (15:21 -0700)]
Improve handling of last lines in files (2)

Optimization for `CGhostTextBuffer:: RemoveAllGhostLines()`

- Only compress `m_aLines[]` if there actually are ghost lines
- Only start compression at the first ghost line

6 years agoImprove handling of last lines in files (1)
GreyMerlin [Sat, 23 Jun 2018 22:02:19 +0000 (15:02 -0700)]
Improve handling of last lines in files (1)

- Simply tweaks to comments and debug code
- A few tiny optimizations

6 years agoAdopt newer GNU diffutils (2001-11-24, ver 2.7.3 ) (1)
GreyMerlin [Sun, 17 Jun 2018 21:28:02 +0000 (14:28 -0700)]
Adopt newer GNU diffutils (2001-11-24, ver 2.7.3 ) (1)

* Remove unused files
* Remove some unused defines and functions

6 years agoLocationView.*: Remove functions that are not called
Takashi Sawanaka [Sun, 24 Jun 2018 14:01:55 +0000 (23:01 +0900)]
LocationView.*: Remove functions that are not called

6 years agoBump revision to 1.17.2.0
Takashi Sawanaka [Sun, 24 Jun 2018 12:51:48 +0000 (21:51 +0900)]
Bump revision to 1.17.2.0

6 years agoupdate frhed to 0.10904.2017.1
Takashi Sawanaka [Sun, 24 Jun 2018 06:39:19 +0000 (15:39 +0900)]
update frhed to 0.10904.2017.1

6 years ago- Fix warning C6054: String '...' might not be zero-terminated.
Takashi Sawanaka [Sun, 17 Jun 2018 13:04:16 +0000 (22:04 +0900)]
- Fix warning C6054: String '...' might not be zero-terminated.
- Fix warning C28183: '...' could be '0', and is a copy of the value found in '...'
- Fix warning C6387: warning C6387: <argument> may be <value>: this does not adhere to the specification for the function <function name>: Lines: x, y

6 years agoMerge
Takashi Sawanaka [Sun, 17 Jun 2018 08:57:19 +0000 (17:57 +0900)]
Merge

6 years agoMerge pull request #89 from GreyMerlin/master
Takashi Sawanaka [Sun, 17 Jun 2018 04:37:20 +0000 (13:37 +0900)]
Merge pull request #89 from GreyMerlin/master

Various, esp. Improve compare+display of last lines in files

6 years agoImprove Options > Color > Differences dialog layout
GreyMerlin [Sun, 17 Jun 2018 00:19:44 +0000 (17:19 -0700)]
Improve Options > Color > Differences dialog layout

- Allow more room for the various lines of caption test by sliding the
various controls slightly to the right.

6 years agoImprove compare+display of last lines in files (2)
GreyMerlin [Sun, 17 Jun 2018 00:16:23 +0000 (17:16 -0700)]
Improve compare+display of last lines in files (2)

Symptom ...

An F5 Refresh could produce slightly different comparison results
(near the end of the file) when input files did not have explicit EOL
marking after the last line of the file.

Discussion ...

The original file compare window is generated directly from the
original files.  However, subsequent F5 Refresh displays are
generated from temporary copies of the files that are made after they
are read for the first time; these temporary files would **never** have
EOL markings following the last line of the file - thus causing slightly
different output.

Solutions ...

When making internal temporary copies of the original input files,
a final EOL marking will be written to the temp file **if** the original
file had a final EOL.

6 years agoImprove compare+display of last lines in files (1)
GreyMerlin [Sun, 17 Jun 2018 00:11:17 +0000 (17:11 -0700)]
Improve compare+display of last lines in files (1)

Symptoms ...

ASSERT could occur (with Debug build), and possibly a fault could
occur with Release builds, if longest file was the Left File and that
file did not have an explicit EOL marking after the last line of the
file, and there were visible differences at the very end of the file.

Discussion ...

The internal `m_ptBuf[]->m_aLines[]` buffers could end up with
different numbers of line entries in situations where the last line of
a file had no explicit EOL marking.  Normally, the two (or three)
`m_aLines[]` buffers would have "ghost" line entries to represent
"missing" lines, so that all `m_aLines[]` buffers would be of the same
length.  The lack of a final EOL could confuse that logic.  At some
points in the comparison logic, the length used for processing the two
(or three) buffers is determined simply by the length of `m_aLines[0]`

Solution ...

By the end of the `PrimeTextBuffers()` procedure, the two (or
three) `m_ptBuf[]->m_aLines[]` buffers will now **always** have the same
length.  Furthermore, there will no longer be <null> entries at the end
of the `m_aLines[]` arrays.  These will now be deleted (if **all**
`m_aLines[]` buffers have them), or they will be replaced with
appropriate "ghost" lines (if only **some** of the buffers have final
<null> entries)

Also, a number of comments are improved.

6 years agoTweak "Fix alignment of the comboboxes in OpenDlg"
GreyMerlin [Sat, 16 Jun 2018 23:03:39 +0000 (16:03 -0700)]
Tweak "Fix alignment of the comboboxes in OpenDlg"

- adjusted by 1 pixel for even better visual alignment

6 years agoAdopt performance improvement from diffutils
GreyMerlin [Sat, 16 Jun 2018 22:59:35 +0000 (15:59 -0700)]
Adopt performance improvement from diffutils

- include [commit ...414dc606](
http://git.savannah.gnu.org/cgit/diffutils.git/commit/?id=68b82f6f8419a815cfcf962b3061352d414dc606)
from **diffutils** 2016-10-25 (ver 3.5)

- this commit improves the performance of the TOO_EXPENSIVE
optimization on "modern" processors (ca. 2016) by upgrading the minimum
threshold of this optimization from 255 to 4096.

6 years agoImprove interrelation with GNU diffutils source
GreyMerlin [Sat, 16 Jun 2018 22:49:08 +0000 (15:49 -0700)]
Improve interrelation with GNU diffutils source

- Remove four *.c files never used by diffutils or WinMerge

- Change `Src/CompareEngines/DiffUtils{.c|.h}` to be
`./Wrap_DiffUtils{.c|.h}` to remove confusion about the **diffutils**
name.  These files are part of WinMerge, not GNU diffutils.

- Change Solution Explorer to have the entry **GNU diffutils** rather
than **DiffEngine**

- Copy solution changes from VS2017 to VS2015

6 years agoFix compilation errors on the Test configuration
Takashi Sawanaka [Sat, 16 Jun 2018 17:29:38 +0000 (02:29 +0900)]
Fix compilation errors on the Test configuration

6 years agoFix alignment of the comboboxes in OpenDlg. (github#88)
Takashi Sawanaka [Sat, 16 Jun 2018 13:11:43 +0000 (22:11 +0900)]
Fix alignment of the comboboxes in OpenDlg. (github#88)

6 years agoAdd Window/Split menu item(2)
Takashi Sawanaka [Sat, 9 Jun 2018 14:51:05 +0000 (23:51 +0900)]
Add Window/Split menu item(2)

6 years agoAdd Window/Split menu item
Takashi Sawanaka [Sat, 9 Jun 2018 13:54:30 +0000 (22:54 +0900)]
Add Window/Split menu item

6 years agoMerge pull request #87 from GreyMerlin/master
Takashi Sawanaka [Sat, 9 Jun 2018 12:31:45 +0000 (21:31 +0900)]
Merge pull request #87 from GreyMerlin/master

Very Long Path and File Names (and more)

6 years agoVery Long Path and File Names (5)
GreyMerlin [Tue, 5 Jun 2018 20:14:24 +0000 (13:14 -0700)]
Very Long Path and File Names (5)

6 years agoVery Long Path and File Names (4)
GreyMerlin [Thu, 31 May 2018 20:58:29 +0000 (13:58 -0700)]
Very Long Path and File Names (4)

* Adapt changes from Poco/Foundation (1.9.1) related to this issue

* this is a "cleaner" solution than I had implemented, although only
for the Poco/Foundation parts of the code

6 years agoVery Long Path and File Names (3)
GreyMerlin [Mon, 28 May 2018 20:40:30 +0000 (13:40 -0700)]
Very Long Path and File Names (3)

* Use the `\\?\`file name prefix for directory recursion and various
file open operations.  This is available for almost all Win32 API
functions when using the "xxxW" Unicode procedures.  This works for
both Win32 and X64 compilations.  Microsoft documentation leads me to
believe that this works for WinXP and beyond (although I can only test
the Win10 X64 environment).

*The prefix is used even for path names that "appear" to be short,
because a long file name could be appended to any short path, making
the result become long.

* At this point, the basics (directory recursion, file comparison,
and opening&editing text files) have been tested and are properly
functional.

* Not Tested: Copy, Move, Rename, Remove of files and directories.

* Not Tested: projects, filters and plugins, XML, Excel.

* Not Implemented: Opening binary files (`frhed.dll`) or image files
(`WinIMerge.dll`)

* Not Implemented: Internal 7zip operations.

* Not Implemented: interactions with UNC (networking) file names.

* Not Implemented: interaction with `ShellExtension.dll`

6 years agoVery Long Path and File Names (2)
GreyMerlin [Mon, 28 May 2018 05:44:01 +0000 (22:44 -0700)]
Very Long Path and File Names (2)

* First attempt to add "\\?\" as a prefix for all file names as they
are being presented to Windows API for file manipulation purposes

6 years agoVery Long Path and File Names (1)
GreyMerlin [Sun, 27 May 2018 23:12:46 +0000 (16:12 -0700)]
Very Long Path and File Names (1)

* define MAX_PATH_FULL as 32767.  Use this to replace many instances of
MAX_PATH and _MAX_PATH

6 years agoThree Trivial Changes
GreyMerlin [Thu, 7 Jun 2018 20:42:48 +0000 (13:42 -0700)]
Three Trivial Changes

- Remove the **poco** `_CHANGELOG` file.  It is only for Apple
environments, and has been removed from **poco** version 1.9.1 (sometime
after version 1.4).

- Tweak two comments in `WinMergeShell.cpp`

- Remove an unused procedure declaration from `WinMergeShell.h`.  There
is no corresponding procedure definition.

6 years agoPrevent faults when mousing over Plugin Settings
GreyMerlin [Thu, 7 Jun 2018 20:25:54 +0000 (13:25 -0700)]
Prevent faults when mousing over Plugin Settings

* With a Debug build, an assert() would occur when mousing over the
Plugin Settings context menu item if Plugins are disabled.

* With a Release build, a fault could occur in the same conditions.

6 years agoRemove new compilation error with VS2015
GreyMerlin [Thu, 7 Jun 2018 20:20:25 +0000 (13:20 -0700)]
Remove new compilation error with VS2015

* VS2015 must have tightened up a rule for templates.  This always used
to compile.

* now compiles correctly with both VS2015 and VS2017