Main file catalog now scrolls to first selected image on returning from filmstrip; see issue #360
This commit is contained in:
parent
a66758ceff
commit
10ebd2f7c4
@ -61,7 +61,6 @@ RTWindow::RTWindow () {
|
|||||||
hbf->set_spacing (2);
|
hbf->set_spacing (2);
|
||||||
hbf->show_all ();
|
hbf->show_all ();
|
||||||
mainNB->append_page (*fpanel, *hbf);
|
mainNB->append_page (*fpanel, *hbf);
|
||||||
fpanel->signal_expose_event().connect( sigc::mem_fun(*this, &RTWindow::on_expose_event_fpanel) );
|
|
||||||
|
|
||||||
bpanel = new BatchQueuePanel ();
|
bpanel = new BatchQueuePanel ();
|
||||||
bpanel->setParent (this);
|
bpanel->setParent (this);
|
||||||
@ -85,8 +84,6 @@ RTWindow::RTWindow () {
|
|||||||
hbe->show_all ();
|
hbe->show_all ();
|
||||||
mainNB->append_page (*epanel, *hbe);
|
mainNB->append_page (*epanel, *hbe);
|
||||||
mainNB->set_current_page (mainNB->page_num (*fpanel));
|
mainNB->set_current_page (mainNB->page_num (*fpanel));
|
||||||
epanel->signal_expose_event().connect( sigc::mem_fun(*this, &RTWindow::on_expose_event_epanel) );
|
|
||||||
|
|
||||||
|
|
||||||
signal_key_press_event().connect( sigc::mem_fun(*this, &RTWindow::keyPressed) );
|
signal_key_press_event().connect( sigc::mem_fun(*this, &RTWindow::keyPressed) );
|
||||||
|
|
||||||
@ -124,7 +121,6 @@ RTWindow::RTWindow () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void RTWindow::on_realize () {
|
void RTWindow::on_realize () {
|
||||||
|
|
||||||
Gtk::Window::on_realize ();
|
Gtk::Window::on_realize ();
|
||||||
|
|
||||||
fpanel->setAspect();
|
fpanel->setAspect();
|
||||||
@ -145,10 +141,16 @@ bool RTWindow::on_window_state_event(GdkEventWindowState* event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void RTWindow::on_mainNB_switch_page(GtkNotebookPage* page, guint page_num) {
|
void RTWindow::on_mainNB_switch_page(GtkNotebookPage* page, guint page_num) {
|
||||||
|
bool singleTabMode = !options.tabbedUI && !EditWindow::isMultiDisplayEnabled();
|
||||||
|
|
||||||
if (page_num > 1) {
|
if (page_num > 1) {
|
||||||
|
if (singleTabMode) MoveFileBrowserToEditor();
|
||||||
|
|
||||||
EditorPanel *ep = (EditorPanel *)mainNB->get_nth_page(page_num);
|
EditorPanel *ep = (EditorPanel *)mainNB->get_nth_page(page_num);
|
||||||
ep->setAspect();
|
ep->setAspect();
|
||||||
}
|
} else {
|
||||||
|
if (singleTabMode) MoveFileBrowserToMain();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RTWindow::addEditorPanel (EditorPanel* ep, const std::string &name) {
|
void RTWindow::addEditorPanel (EditorPanel* ep, const std::string &name) {
|
||||||
@ -367,17 +369,3 @@ void RTWindow::MoveFileBrowserToEditor()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RTWindow::on_expose_event_epanel(GdkEventExpose* event)
|
|
||||||
{
|
|
||||||
if(!options.tabbedUI && !EditWindow::isMultiDisplayEnabled())
|
|
||||||
MoveFileBrowserToEditor();
|
|
||||||
return false; // Gtk::VBox::on_expose_event(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool RTWindow::on_expose_event_fpanel(GdkEventExpose* event)
|
|
||||||
{
|
|
||||||
if(!options.tabbedUI && !EditWindow::isMultiDisplayEnabled())
|
|
||||||
MoveFileBrowserToMain();
|
|
||||||
return false; // Gtk::HPaned::on_expose_event(event);
|
|
||||||
}
|
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of RawTherapee.
|
* This file is part of RawTherapee.
|
||||||
*
|
*
|
||||||
* Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
|
|
||||||
*
|
|
||||||
* RawTherapee is free software: you can redistribute it and/or modify
|
* RawTherapee is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
@ -269,23 +267,19 @@ ThumbBrowserBase::Internal::Internal () : ofsX(0), ofsY(0), parent(NULL), dirty(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ThumbBrowserBase::Internal::setParent (ThumbBrowserBase* p) {
|
void ThumbBrowserBase::Internal::setParent (ThumbBrowserBase* p) {
|
||||||
|
|
||||||
parent = p;
|
parent = p;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ThumbBrowserBase::Internal::setPosition (int x, int y) {
|
void ThumbBrowserBase::Internal::setPosition (int x, int y) {
|
||||||
|
|
||||||
ofsX = x;
|
ofsX = x;
|
||||||
ofsY = y;
|
ofsY = y;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ThumbBrowserBase::Internal::on_key_press_event (GdkEventKey* event) {
|
bool ThumbBrowserBase::Internal::on_key_press_event (GdkEventKey* event) {
|
||||||
|
|
||||||
return parent->keyPressed (event);
|
return parent->keyPressed (event);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ThumbBrowserBase::Internal::on_button_press_event (GdkEventButton* event) {
|
bool ThumbBrowserBase::Internal::on_button_press_event (GdkEventButton* event) {
|
||||||
|
|
||||||
grab_focus ();
|
grab_focus ();
|
||||||
|
|
||||||
parent->eventTime = event->time;
|
parent->eventTime = event->time;
|
||||||
@ -300,11 +294,11 @@ bool ThumbBrowserBase::Internal::on_button_press_event (GdkEventButton* event) {
|
|||||||
|
|
||||||
gdk_window_invalidate_rect (window->gobj(), &rect, true);
|
gdk_window_invalidate_rect (window->gobj(), &rect, true);
|
||||||
gdk_window_process_updates (window->gobj(), true);
|
gdk_window_process_updates (window->gobj(), true);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ThumbBrowserBase::buttonPressed (int x, int y, int button, GdkEventType type, int state, int clx, int cly, int clw, int clh) {
|
void ThumbBrowserBase::buttonPressed (int x, int y, int button, GdkEventType type, int state, int clx, int cly, int clw, int clh) {
|
||||||
|
|
||||||
ThumbBrowserEntryBase* fileDescr = NULL;
|
ThumbBrowserEntryBase* fileDescr = NULL;
|
||||||
bool handled = false;
|
bool handled = false;
|
||||||
for (int i=0; i<fd.size(); i++)
|
for (int i=0; i<fd.size(); i++)
|
||||||
@ -535,25 +529,31 @@ void ThumbBrowserBase::enableTabMode(bool enable) {
|
|||||||
|
|
||||||
redraw ();
|
redraw ();
|
||||||
|
|
||||||
// Scroll to selected position if going into ribbon mode
|
// Scroll to selected position if going into ribbon mode or back
|
||||||
if (inTabMode && !selected.empty()) {
|
// Tab mode is horizontal, file browser is vertical
|
||||||
int h=selected[0]->getStartX();
|
if (!selected.empty()) {
|
||||||
hscroll.set_value (MIN(h, hscroll.get_adjustment()->get_upper()));
|
if (inTabMode) {
|
||||||
|
int h=selected[0]->getStartX();
|
||||||
|
hscroll.set_value (MIN(h, hscroll.get_adjustment()->get_upper()));
|
||||||
|
} else {
|
||||||
|
int v=selected[0]->getStartY();
|
||||||
|
vscroll.set_value (MIN(v, vscroll.get_adjustment()->get_upper()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ThumbBrowserBase::initEntry (ThumbBrowserEntryBase* entry) {
|
void ThumbBrowserBase::initEntry (ThumbBrowserEntryBase* entry) {
|
||||||
|
entry->setOffset ((int)(hscroll.get_value()), (int)(vscroll.get_value()));
|
||||||
entry->setOffset ((int)(hscroll.get_value()), (int)(vscroll.get_value()));
|
|
||||||
}
|
}
|
||||||
void ThumbBrowserBase::getScrollPosition (double& h, double& v) {
|
|
||||||
|
|
||||||
|
void ThumbBrowserBase::getScrollPosition (double& h, double& v) {
|
||||||
h = hscroll.get_value ();
|
h = hscroll.get_value ();
|
||||||
v = vscroll.get_value ();
|
v = vscroll.get_value ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ThumbBrowserBase::setScrollPosition (double h, double v) {
|
void ThumbBrowserBase::setScrollPosition (double h, double v) {
|
||||||
|
|
||||||
hscroll.set_value (h>hscroll.get_adjustment()->get_upper() ? hscroll.get_adjustment()->get_upper() : h);
|
hscroll.set_value (h>hscroll.get_adjustment()->get_upper() ? hscroll.get_adjustment()->get_upper() : h);
|
||||||
vscroll.set_value (v>vscroll.get_adjustment()->get_upper() ? vscroll.get_adjustment()->get_upper() : v);
|
vscroll.set_value (v>vscroll.get_adjustment()->get_upper() ? vscroll.get_adjustment()->get_upper() : v);
|
||||||
}
|
}
|
||||||
@ -566,27 +566,4 @@ int ThumbBrowserBase::getEffectiveHeight() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*void PreviewImgUpdater::processCustomOrder () {
|
|
||||||
|
|
||||||
// find first filtered entry, if any
|
|
||||||
std::list<ThumbBrowserEntryBase*>::iterator i;
|
|
||||||
for (i=jqueue.begin (); i!=jqueue.end(); i++)
|
|
||||||
if (!(*i)->filtered)
|
|
||||||
break;
|
|
||||||
if (i==jqueue.end())
|
|
||||||
i = jqueue.begin();
|
|
||||||
|
|
||||||
ThumbBrowserEntryBase* current = *i;
|
|
||||||
jqueue.erase (i);
|
|
||||||
|
|
||||||
current->updateImg ();
|
|
||||||
if (parent) {
|
|
||||||
gdk_threads_enter ();
|
|
||||||
parent->queue_draw ();
|
|
||||||
if (parent->get_window())
|
|
||||||
gdk_window_process_updates (parent->get_window()->gobj(), true);
|
|
||||||
gdk_threads_leave ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
@ -104,6 +104,7 @@ protected:
|
|||||||
|
|
||||||
int getEffectiveHeight () { return fnlabh+dtlabh+exlabh+textGap+exp_height; }
|
int getEffectiveHeight () { return fnlabh+dtlabh+exlabh+textGap+exp_height; }
|
||||||
int getStartX () { return startx; }
|
int getStartX () { return startx; }
|
||||||
|
int getStartY () { return starty; }
|
||||||
|
|
||||||
bool inside (int x, int y);
|
bool inside (int x, int y);
|
||||||
bool insideWindow (int x, int y, int w, int h);
|
bool insideWindow (int x, int y, int w, int h);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user