Example #1
0
static gboolean
drag_motion_cb (GtkWidget          *widget,
                GdkDragContext     *context,
                int                 x,
                int                 y,
                guint               time_,
                Drawer             *drawer)
{
    PanelWidget *panel_widget;
    guint        info = 0;

    if (!panel_check_dnd_target_data (widget, context, &info, NULL))
        return FALSE;

    panel_widget = panel_toplevel_get_panel_widget (drawer->toplevel);

    if (!panel_check_drop_forbidden (panel_widget, context, info, time_))
        return FALSE;

    if (drawer->close_timeout_id)
        g_source_remove (drawer->close_timeout_id);

    drawer->close_timeout_id = 0;

    button_widget_set_dnd_highlight (BUTTON_WIDGET (widget), TRUE);

    if (panel_toplevel_get_is_hidden (drawer->toplevel)) {
        panel_toplevel_unhide (drawer->toplevel);
        drawer->opened_for_drag = TRUE;
    }

    return TRUE;
}
static void
drawer_click (GtkWidget *w, Drawer *drawer)
{
	if (!panel_toplevel_get_is_hidden (drawer->toplevel))
		panel_toplevel_hide (drawer->toplevel, FALSE, -1);
	else 
		panel_toplevel_unhide (drawer->toplevel);
}
Example #3
0
/*
 * This function implements Esc moving focus from the drawer to the drawer
 * icon and closing the drawer and Shift+Esc moving focus from the drawer
 * to the drawer icon without closing the drawer when focus is in the drawer.
 */
static gboolean
key_press_drawer_widget (GtkWidget   *widget,
                         GdkEventKey *event,
                         Drawer      *drawer)
{
    PanelWidget *panel_widget;

    if (event->keyval != GDK_KEY_Escape)
        return FALSE;

    panel_widget = panel_toplevel_get_panel_widget (drawer->toplevel);

    gtk_window_present (GTK_WINDOW (panel_widget->toplevel));

    if ((event->state & gtk_accelerator_get_default_mod_mask ()) == GDK_SHIFT_MASK ||
        panel_toplevel_get_is_hidden (drawer->toplevel))
            return TRUE;

    panel_toplevel_hide (drawer->toplevel, FALSE, -1);

    return TRUE;
}
Example #4
0
static gboolean
key_press_drawer (GtkWidget   *widget,
                  GdkEventKey *event,
                  Drawer      *drawer)
{
    gboolean retval = TRUE;
    GtkOrientation orient;

    if (event->state & gtk_accelerator_get_default_mod_mask ())
        return FALSE;

    orient = PANEL_WIDGET (gtk_widget_get_parent (drawer->button))->orient;

    switch (event->keyval) {
    case GDK_KEY_Up:
    case GDK_KEY_KP_Up:
        if (orient == GTK_ORIENTATION_HORIZONTAL) {
            if (!panel_toplevel_get_is_hidden (drawer->toplevel))
                drawer_focus_panel_widget (drawer, GTK_DIR_TAB_BACKWARD);
        } else {
            /* let default focus movement happen */
            retval = FALSE;
        }
        break;
    case GDK_KEY_Left:
    case GDK_KEY_KP_Left:
        if (orient == GTK_ORIENTATION_VERTICAL) {
            if (!panel_toplevel_get_is_hidden (drawer->toplevel))
                drawer_focus_panel_widget (drawer, GTK_DIR_TAB_BACKWARD);
        } else {
            /* let default focus movement happen */
            retval = FALSE;
        }
        break;
    case GDK_KEY_Down:
    case GDK_KEY_KP_Down:
        if (orient == GTK_ORIENTATION_HORIZONTAL) {
            if (!panel_toplevel_get_is_hidden (drawer->toplevel))
                drawer_focus_panel_widget (drawer, GTK_DIR_TAB_FORWARD);
        } else {
            /* let default focus movement happen */
            retval = FALSE;
        }
        break;
    case GDK_KEY_Right:
    case GDK_KEY_KP_Right:
        if (orient == GTK_ORIENTATION_VERTICAL) {
            if (!panel_toplevel_get_is_hidden (drawer->toplevel))
                drawer_focus_panel_widget (drawer, GTK_DIR_TAB_FORWARD);
        } else {
            /* let default focus movement happen */
            retval = FALSE;
        }
        break;
    case GDK_KEY_Escape:
        panel_toplevel_hide (drawer->toplevel, FALSE, -1);
        break;
    default:
        retval = FALSE;
        break;
    }

    return retval;
}