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->show_all ();
|
||||
mainNB->append_page (*fpanel, *hbf);
|
||||
fpanel->signal_expose_event().connect( sigc::mem_fun(*this, &RTWindow::on_expose_event_fpanel) );
|
||||
|
||||
bpanel = new BatchQueuePanel ();
|
||||
bpanel->setParent (this);
|
||||
@ -85,8 +84,6 @@ RTWindow::RTWindow () {
|
||||
hbe->show_all ();
|
||||
mainNB->append_page (*epanel, *hbe);
|
||||
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) );
|
||||
|
||||
@ -124,7 +121,6 @@ RTWindow::RTWindow () {
|
||||
}
|
||||
|
||||
void RTWindow::on_realize () {
|
||||
|
||||
Gtk::Window::on_realize ();
|
||||
|
||||
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) {
|
||||
bool singleTabMode = !options.tabbedUI && !EditWindow::isMultiDisplayEnabled();
|
||||
|
||||
if (page_num > 1) {
|
||||
if (singleTabMode) MoveFileBrowserToEditor();
|
||||
|
||||
EditorPanel *ep = (EditorPanel *)mainNB->get_nth_page(page_num);
|
||||
ep->setAspect();
|
||||
}
|
||||
} else {
|
||||
if (singleTabMode) MoveFileBrowserToMain();
|
||||
}
|
||||
}
|
||||
|
||||
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.
|
||||
*
|
||||
* Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
|
||||
*
|
||||
* RawTherapee is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* 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) {
|
||||
|
||||
parent = p;
|
||||
}
|
||||
|
||||
void ThumbBrowserBase::Internal::setPosition (int x, int y) {
|
||||
|
||||
ofsX = x;
|
||||
ofsY = y;
|
||||
}
|
||||
|
||||
bool ThumbBrowserBase::Internal::on_key_press_event (GdkEventKey* event) {
|
||||
|
||||
return parent->keyPressed (event);
|
||||
}
|
||||
|
||||
bool ThumbBrowserBase::Internal::on_button_press_event (GdkEventButton* event) {
|
||||
|
||||
grab_focus ();
|
||||
|
||||
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_process_updates (window->gobj(), true);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void ThumbBrowserBase::buttonPressed (int x, int y, int button, GdkEventType type, int state, int clx, int cly, int clw, int clh) {
|
||||
|
||||
ThumbBrowserEntryBase* fileDescr = NULL;
|
||||
bool handled = false;
|
||||
for (int i=0; i<fd.size(); i++)
|
||||
@ -535,25 +529,31 @@ void ThumbBrowserBase::enableTabMode(bool enable) {
|
||||
|
||||
redraw ();
|
||||
|
||||
// Scroll to selected position if going into ribbon mode
|
||||
if (inTabMode && !selected.empty()) {
|
||||
int h=selected[0]->getStartX();
|
||||
hscroll.set_value (MIN(h, hscroll.get_adjustment()->get_upper()));
|
||||
// Scroll to selected position if going into ribbon mode or back
|
||||
// Tab mode is horizontal, file browser is vertical
|
||||
if (!selected.empty()) {
|
||||
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) {
|
||||
|
||||
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 ();
|
||||
v = vscroll.get_value ();
|
||||
}
|
||||
|
||||
void ThumbBrowserBase::setScrollPosition (double h, double v) {
|
||||
|
||||
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);
|
||||
}
|
||||
@ -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 getStartX () { return startx; }
|
||||
int getStartY () { return starty; }
|
||||
|
||||
bool inside (int x, int y);
|
||||
bool insideWindow (int x, int y, int w, int h);
|
||||
|
Loading…
x
Reference in New Issue
Block a user