menus, double-clicks hooked up properly

This commit is contained in:
David Rose 2006-01-17 23:37:43 +00:00
parent e62394bbe5
commit b902d7d1c1
6 changed files with 34 additions and 19 deletions

View File

@ -339,7 +339,8 @@ set_drag_mode(GtkStatsGraph::DragMode drag_mode) {
// window, or any nested window.
////////////////////////////////////////////////////////////////////
gboolean GtkStatsGraph::
handle_button_press(GtkWidget *widget, int graph_x, int graph_y) {
handle_button_press(GtkWidget *widget, int graph_x, int graph_y,
bool double_click) {
if (_potential_drag_mode != DM_none) {
set_drag_mode(_potential_drag_mode);
_drag_start_x = graph_x;
@ -497,7 +498,9 @@ button_press_event_callback(GtkWidget *widget, GdkEventButton *event,
(int)event->x, (int)event->y,
&graph_x, &graph_y);
return self->handle_button_press(widget, graph_x, graph_y);
bool double_click = (event->type == GDK_2BUTTON_PRESS);
return self->handle_button_press(widget, graph_x, graph_y, double_click);
}
////////////////////////////////////////////////////////////////////

View File

@ -70,7 +70,8 @@ protected:
virtual DragMode consider_drag_start(int graph_x, int graph_y);
virtual void set_drag_mode(DragMode drag_mode);
virtual gboolean handle_button_press(GtkWidget *widget, int graph_x, int graph_y);
virtual gboolean handle_button_press(GtkWidget *widget, int graph_x, int graph_y,
bool double_click);
virtual gboolean handle_button_release(GtkWidget *widget, int graph_x, int graph_y);
virtual gboolean handle_motion(GtkWidget *widget, int graph_x, int graph_y);

View File

@ -229,5 +229,10 @@ leave_notify_event_callback(GtkWidget *widget, GdkEventCrossing *event,
gboolean GtkStatsLabel::
button_press_event_callback(GtkWidget *widget, GdkEventButton *event,
gpointer data) {
GtkStatsLabel *self = (GtkStatsLabel *)data;
bool double_click = (event->type == GDK_2BUTTON_PRESS);
if (double_click) {
self->_graph->clicked_label(self->_collector_index);
}
return TRUE;
}

View File

@ -525,15 +525,20 @@ create_window() {
// Pack the menu into the window.
GtkWidget *main_vbox = gtk_vbox_new(FALSE, 1);
// gtk_container_set_border_width(GTK_CONTAINER(main_vbox), 1);
gtk_container_add(GTK_CONTAINER(_window), main_vbox);
gtk_box_pack_start(GTK_BOX(main_vbox), menubar, FALSE, TRUE, 0);
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item(_item_factory, "/Speed/3")),
TRUE);
set_scroll_speed(3);
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item(_item_factory, "/Options/Units/ms")),
TRUE);
set_time_units(PStatGraph::GBU_ms);
gtk_widget_show_all(_window);
gtk_widget_show(_window);
set_time_units(PStatGraph::GBU_ms);
set_scroll_speed(3);
set_pause(false);
}

View File

@ -169,16 +169,7 @@ set_time_units(int unit_mask) {
unit_mask |= (old_unit_mask & GBU_show_units);
set_guide_bar_units(unit_mask);
/*
RECT rect;
GetClientRect(_window, &rect);
rect.left = _right_margin;
InvalidateRect(_window, &rect, TRUE);
GetClientRect(_window, &rect);
rect.bottom = _top_margin;
InvalidateRect(_window, &rect, TRUE);
*/
gtk_widget_queue_draw(_scale_area);
}
}
@ -461,7 +452,15 @@ set_drag_mode(GtkStatsGraph::DragMode drag_mode) {
// graph window.
////////////////////////////////////////////////////////////////////
gboolean GtkStatsStripChart::
handle_button_press(GtkWidget *widget, int graph_x, int graph_y) {
handle_button_press(GtkWidget *widget, int graph_x, int graph_y,
bool double_click) {
if (double_click) {
// Double-clicking on a color bar in the graph is the same as
// double-clicking on the corresponding label.
clicked_label(get_collector_under_pixel(graph_x, graph_y));
return TRUE;
}
if (_potential_drag_mode == DM_none) {
set_drag_mode(DM_scale);
_drag_scale_start = pixel_to_height(graph_y);
@ -475,7 +474,8 @@ handle_button_press(GtkWidget *widget, int graph_x, int graph_y) {
return TRUE;
}
return GtkStatsGraph::handle_button_press(widget, graph_x, graph_y);
return GtkStatsGraph::handle_button_press(widget, graph_x, graph_y,
double_click);
}
////////////////////////////////////////////////////////////////////

View File

@ -64,7 +64,8 @@ protected:
virtual DragMode consider_drag_start(int graph_x, int graph_y);
virtual void set_drag_mode(DragMode drag_mode);
virtual gboolean handle_button_press(GtkWidget *widget, int graph_x, int graph_y);
virtual gboolean handle_button_press(GtkWidget *widget, int graph_x, int graph_y,
bool double_click);
virtual gboolean handle_button_release(GtkWidget *widget, int graph_x, int graph_y);
virtual gboolean handle_motion(GtkWidget *widget, int graph_x, int graph_y);