Solving issue 1851: "RT crashes in Single Editor Tab Mode when trying to save with Ctrl-S"

This commit is contained in:
natureh 510
2013-04-28 23:11:55 +02:00
parent 91c389e364
commit 0a5c72f0da
4 changed files with 14 additions and 12 deletions

View File

@@ -179,7 +179,7 @@ if (WIN32)
add_definitions (-D__MINGW32__)
endif (MINGW)
set (EXTRA_LIB "-lws2_32")
set (EXTRA_LIB "-lws2_32 -lshlwapi")
endif (WIN32)
# you may need lcms v1.xx for older version : pkg_check_modules (LCMS REQUIRED lcms<=1.99)
pkg_check_modules (LCMS REQUIRED lcms2)

View File

@@ -25,6 +25,7 @@
#include <fcntl.h>
#ifdef WIN32
#include <windows.h>
#include <Shlwapi.h>
// for GCC32
#ifndef _WIN32_IE
#define _WIN32_IE 0x0600
@@ -414,8 +415,7 @@ Glib::ustring safe_get_user_picture_dir() {
* Warning: this function is a workaround for Windows platform, and not necessarily bullet proof
*/
bool safe_is_root_dir (const Glib::ustring& path) {
Glib::ustring t = Glib::path_skip_root(path);
return t.empty();
return PathIsRootA(path.c_str());
}
#endif

View File

@@ -945,13 +945,13 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) {
openThm->openDefaultViewer(event->state & GDK_SHIFT_MASK ? 2 : 1);
return true;
case GDK_y: // synchronize filebrowser with image in Editor
if (!simpleEditor && fPanel && fname!=""){
if (!simpleEditor && fPanel && !fname.empty()){
fPanel->fileCatalog->selectImage(fname, false);
return true;
}
break; // to avoid gcc complain
case GDK_x: // clear filters and synchronize filebrowser with image in Editor
if (!simpleEditor && fPanel && fname!=""){
if (!simpleEditor && fPanel && !fname.empty()){
fPanel->fileCatalog->selectImage(fname, true);
return true;
}
@@ -1000,13 +1000,13 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) {
if (shift){
switch (event->keyval) {
case GDK_F3: // open Previous image from Editor's perspective
if (!simpleEditor && fPanel && fname!=""){
if (!simpleEditor && fPanel && !fname.empty()){
EditorPanel::openPreviousEditorImage();
return true;
}
break; // to avoid gcc complain
case GDK_F4: // open next image from Editor's perspective
if (!simpleEditor && fPanel && fname!=""){
if (!simpleEditor && fPanel && !fname.empty()){
EditorPanel::openNextEditorImage();
return true;
}
@@ -1234,17 +1234,17 @@ void EditorPanel::sendToGimpPressed () {
void EditorPanel::openPreviousEditorImage() {
if (!simpleEditor && fPanel && fname!="")
if (!simpleEditor && fPanel && !fname.empty())
fPanel->fileCatalog->openNextPreviousEditorImage(fname, true, NAV_PREVIOUS);
}
void EditorPanel::openNextEditorImage() {
if (!simpleEditor && fPanel && fname!="")
if (!simpleEditor && fPanel && !fname.empty())
fPanel->fileCatalog->openNextPreviousEditorImage(fname, true, NAV_NEXT);
}
void EditorPanel::syncFileBrowser() { // synchronize filebrowser with image in Editor
if (!simpleEditor && fPanel && fname!="")
if (!simpleEditor && fPanel && !fname.empty())
fPanel->fileCatalog->selectImage(fname, true);
}

View File

@@ -156,7 +156,7 @@ bool SaveAsDialog::getAutoSuffix () {
bool SaveAsDialog::getImmediately () {
return saveMethod[0]->get_active ();
return simpleEditor ? true : saveMethod[0]->get_active ();
}
bool SaveAsDialog::getToHeadOfQueue () {
@@ -170,6 +170,8 @@ bool SaveAsDialog::getToTailOfQueue () {
}
int SaveAsDialog::getSaveMethodNum () {
if (simpleEditor)
return 0;
for (int i = 0; i < 3; i++)
if (saveMethod[i]->get_active())
return i;
@@ -263,7 +265,7 @@ void SaveAsDialog::setImagePath (Glib::ustring ipath) {
if (!safe_is_root_dir(path))
#endif
try {
fchooser->add_shortcut_folder(Glib::path_get_dirname(path));
fchooser->add_shortcut_folder(path);
}
catch (Gtk::FileChooserError &err) {}
}