void dt_control_button_pressed(double x, double y, double pressure, int which, int type, uint32_t state) { float tb = darktable.control->tabborder; darktable.control->button_down = 1; darktable.control->button_down_which = which; darktable.control->button_type = type; darktable.control->button_x = x - tb; darktable.control->button_y = y - tb; // adding pressure to this data structure is not needed right now. should the need ever arise: here is the place to do it :) float wd = darktable.control->width; float ht = darktable.control->height; // ack log message: dt_pthread_mutex_lock(&darktable.control->log_mutex); const float /*xc = wd/4.0-20,*/ yc = ht*0.85+10; if(darktable.control->log_ack != darktable.control->log_pos) if(which == 1 /*&& x > xc - 10 && x < xc + 10*/ && y > yc - 10 && y < yc + 10) { if(darktable.control->log_message_timeout_id) g_source_remove(darktable.control->log_message_timeout_id); darktable.control->log_ack = (darktable.control->log_ack+1)%DT_CTL_LOG_SIZE; dt_pthread_mutex_unlock(&darktable.control->log_mutex); return; } dt_pthread_mutex_unlock(&darktable.control->log_mutex); if(x > tb && x < wd-tb && y > tb && y < ht-tb) { if(!dt_view_manager_button_pressed(darktable.view_manager, x-tb, y-tb, pressure, which, type, state)) if(type == GDK_2BUTTON_PRESS && which == 1) dt_ctl_switch_mode(); } }
static gboolean view_switch_key_accel_callback(GtkAccelGroup *accel_group, GObject *acceleratable, guint keyval, GdkModifierType modifier, gpointer data) { dt_ctl_switch_mode(); gtk_widget_queue_draw(dt_ui_center(darktable.gui->ui)); return TRUE; }