Refactored widget mouse movement handling, removed some Glib::RefPtrs, and tidied a few things
This commit is contained in:
parent
063a22fcd5
commit
8689d0dced
6 changed files with 179 additions and 163 deletions
|
|
@ -52,10 +52,12 @@ TimelineWidget::TimelineWidget() :
|
|||
headerContainer = new HeaderContainer(this);
|
||||
ENSURE(headerContainer != NULL);
|
||||
|
||||
horizontalAdjustment.signal_value_changed().connect(
|
||||
sigc::mem_fun(this, &TimelineWidget::on_scroll) );
|
||||
verticalAdjustment.signal_value_changed().connect(
|
||||
sigc::mem_fun(this, &TimelineWidget::on_scroll) );
|
||||
horizontalAdjustment.signal_value_changed().connect( sigc::mem_fun(
|
||||
this, &TimelineWidget::on_scroll) );
|
||||
verticalAdjustment.signal_value_changed().connect( sigc::mem_fun(
|
||||
this, &TimelineWidget::on_scroll) );
|
||||
body->signal_motion_notify_event().connect( sigc::mem_fun(
|
||||
this, &TimelineWidget::on_motion_in_body_notify_event) );
|
||||
|
||||
set_time_scale(GAVL_TIME_SCALE / 200);
|
||||
|
||||
|
|
@ -214,10 +216,12 @@ TimelineWidget::get_y_scroll_offset() const
|
|||
return (int)verticalAdjustment.get_value();
|
||||
}
|
||||
|
||||
void
|
||||
TimelineWidget::on_mouse_move_in_body(int x, int y)
|
||||
bool
|
||||
TimelineWidget::on_motion_in_body_notify_event(GdkEventMotion *event)
|
||||
{
|
||||
ruler.set_mouse_chevron_offset(x);
|
||||
REQUIRE(event != NULL);
|
||||
ruler.set_mouse_chevron_offset(event->x);
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace widgets
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ protected:
|
|||
|
||||
int get_y_scroll_offset() const;
|
||||
|
||||
void on_mouse_move_in_body(int x, int y);
|
||||
bool on_motion_in_body_notify_event(GdkEventMotion *event);
|
||||
|
||||
protected:
|
||||
gavl_time_t timeOffset;
|
||||
|
|
|
|||
|
|
@ -150,9 +150,6 @@ bool
|
|||
TimelineBody::on_motion_notify_event(GdkEventMotion *event)
|
||||
{
|
||||
REQUIRE(event != NULL);
|
||||
REQUIRE(timelineWidget != NULL);
|
||||
|
||||
timelineWidget->on_mouse_move_in_body(event->x, event->y);
|
||||
|
||||
switch(dragType)
|
||||
{
|
||||
|
|
@ -169,7 +166,8 @@ TimelineBody::on_motion_notify_event(GdkEventMotion *event)
|
|||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
// false so that the message is passed up to the owner TimelineWidget
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
|||
|
|
@ -131,9 +131,9 @@ Actions::add_stock_item(const Glib::RefPtr<IconFactory>& factory,
|
|||
void
|
||||
Actions::update_action_state()
|
||||
{
|
||||
REQUIRE(workspaceWindow.assets_panel);
|
||||
REQUIRE(workspaceWindow.timeline_panel);
|
||||
REQUIRE(workspaceWindow.viewer_panel);
|
||||
REQUIRE(workspaceWindow.assets_panel != NULL);
|
||||
REQUIRE(workspaceWindow.timeline_panel != NULL);
|
||||
REQUIRE(workspaceWindow.viewer_panel != NULL);
|
||||
|
||||
is_updating_action_state = true;
|
||||
assetsPanelAction->set_active(workspaceWindow.assets_panel->is_shown());
|
||||
|
|
|
|||
|
|
@ -45,22 +45,33 @@ namespace workspace {
|
|||
WorkspaceWindow::WorkspaceWindow(Project *source_project) :
|
||||
project(source_project),
|
||||
actions(*this)
|
||||
{
|
||||
{
|
||||
REQUIRE(source_project != NULL);
|
||||
|
||||
layout = NULL;
|
||||
assets_panel = NULL;
|
||||
viewer_panel = NULL;
|
||||
timeline_panel = NULL;
|
||||
|
||||
create_ui();
|
||||
}
|
||||
}
|
||||
|
||||
WorkspaceWindow::~WorkspaceWindow()
|
||||
{
|
||||
if(layout != NULL) g_object_unref(layout);
|
||||
}
|
||||
{
|
||||
REQUIRE(layout != NULL);
|
||||
g_object_unref(layout);
|
||||
|
||||
REQUIRE(assets_panel != NULL);
|
||||
assets_panel->unreference();
|
||||
REQUIRE(viewer_panel != NULL);
|
||||
viewer_panel->unreference();
|
||||
REQUIRE(timeline_panel != NULL);
|
||||
timeline_panel->unreference();
|
||||
}
|
||||
|
||||
void
|
||||
WorkspaceWindow::create_ui()
|
||||
{
|
||||
{
|
||||
//----- Configure the Window -----//
|
||||
set_title(AppTitle);
|
||||
set_default_size(1024, 768);
|
||||
|
|
@ -129,9 +140,12 @@ WorkspaceWindow::create_ui()
|
|||
base_container.pack_start(*toolbar, Gtk::PACK_SHRINK);
|
||||
|
||||
//----- Create the Panels -----//
|
||||
assets_panel = Glib::RefPtr<AssetsPanel>(new AssetsPanel());
|
||||
viewer_panel = Glib::RefPtr<ViewerPanel>(new ViewerPanel());
|
||||
timeline_panel = Glib::RefPtr<TimelinePanel>(new TimelinePanel());
|
||||
assets_panel = new AssetsPanel();
|
||||
ENSURE(assets_panel != NULL);
|
||||
viewer_panel = new ViewerPanel();
|
||||
ENSURE(viewer_panel != NULL);
|
||||
timeline_panel = new TimelinePanel();
|
||||
ENSURE(timeline_panel != NULL);
|
||||
|
||||
//----- Create the Dock -----//
|
||||
dock = Glib::wrap(gdl_dock_new());
|
||||
|
|
@ -164,7 +178,7 @@ WorkspaceWindow::create_ui()
|
|||
gdl_dock_placeholder_new (ph3, (GdlDockObject*)dock->gobj(), GDL_DOCK_LEFT, FALSE);
|
||||
gchar ph4[] = "ph4";
|
||||
gdl_dock_placeholder_new (ph4, (GdlDockObject*)dock->gobj(), GDL_DOCK_RIGHT, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace workspace
|
||||
} // namespace gui
|
||||
|
|
|
|||
|
|
@ -49,24 +49,24 @@ namespace model {
|
|||
|
||||
namespace workspace {
|
||||
|
||||
/**
|
||||
* The main lumiera workspace window
|
||||
*/
|
||||
class WorkspaceWindow : public Gtk::Window
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* The main lumiera workspace window
|
||||
*/
|
||||
class WorkspaceWindow : public Gtk::Window
|
||||
{
|
||||
public:
|
||||
WorkspaceWindow(lumiera::gui::model::Project *source_project);
|
||||
virtual ~WorkspaceWindow();
|
||||
|
||||
private:
|
||||
private:
|
||||
void create_ui();
|
||||
|
||||
/* ===== Model ===== */
|
||||
private:
|
||||
private:
|
||||
lumiera::gui::model::Project *project;
|
||||
|
||||
/* ===== UI ===== */
|
||||
private:
|
||||
private:
|
||||
Glib::RefPtr<Gtk::UIManager> uiManager;
|
||||
Gtk::VBox base_container;
|
||||
Gtk::HBox dock_container;
|
||||
|
|
@ -76,20 +76,20 @@ namespace workspace {
|
|||
GdlDockLayout *layout;
|
||||
|
||||
/* ===== Panels ===== */
|
||||
private:
|
||||
Glib::RefPtr<AssetsPanel> assets_panel;
|
||||
Glib::RefPtr<ViewerPanel> viewer_panel;
|
||||
Glib::RefPtr<TimelinePanel> timeline_panel;
|
||||
private:
|
||||
AssetsPanel *assets_panel;
|
||||
ViewerPanel *viewer_panel;
|
||||
TimelinePanel *timeline_panel;
|
||||
|
||||
/* ===== Helpers ===== */
|
||||
private:
|
||||
private:
|
||||
/**
|
||||
* The instantiation of the actions helper class, which
|
||||
* registers and handles user action events */
|
||||
Actions actions;
|
||||
|
||||
friend class Actions;
|
||||
};
|
||||
};
|
||||
|
||||
} // namespace workspace
|
||||
} // namespace gui
|
||||
|
|
|
|||
Loading…
Reference in a new issue