diff options
Diffstat (limited to 'stickynotes/stickynotes_callbacks.c')
-rw-r--r-- | stickynotes/stickynotes_callbacks.c | 58 |
1 files changed, 51 insertions, 7 deletions
diff --git a/stickynotes/stickynotes_callbacks.c b/stickynotes/stickynotes_callbacks.c index 1d416f0f..3f22dab7 100644 --- a/stickynotes/stickynotes_callbacks.c +++ b/stickynotes/stickynotes_callbacks.c @@ -49,13 +49,17 @@ gboolean stickynote_resize_cb (GtkWidget *widget, if (widget == note->w_resize_se) gtk_window_begin_resize_drag (GTK_WINDOW (note->w_window), GDK_WINDOW_EDGE_SOUTH_EAST, - event->button, event->x_root, - event->y_root, event->time); + event->button, + (gint) event->x_root, + (gint) event->y_root, + event->time); else /* if (widget == note->w_resize_sw) */ gtk_window_begin_resize_drag (GTK_WINDOW (note->w_window), GDK_WINDOW_EDGE_SOUTH_WEST, - event->button, event->x_root, - event->y_root, event->time); + event->button, + (gint) event->x_root, + (gint) event->y_root, + event->time); } else return FALSE; @@ -122,6 +126,46 @@ stickynote_show_popup_menu (GtkWidget *widget, return FALSE; } +/* Sticky Window Callback : Exit entry field on key press or popup + * the right click menu. */ +gboolean +stickynote_keypress_cb (GtkWidget *widget, + GdkEventKey *event, + GtkMenu *popup_menu) +{ + GdkModifierType state = event->state & gtk_accelerator_get_default_mod_mask (); + + switch (event->keyval) { + case GDK_KEY_F6: + if (state == 0) + gtk_widget_child_focus(widget, GTK_DIR_TAB_FORWARD); + else if (state == GDK_SHIFT_MASK) + gtk_widget_child_focus(widget, GTK_DIR_TAB_BACKWARD); + else + break; + return TRUE; + default: + break; + } + + if ((event->keyval == GDK_KEY_F10 && (state == 0 || state == GDK_SHIFT_MASK)) || + (event->keyval == GDK_KEY_Menu && state == 0)) { + GtkWidget *focus_widget = NULL; + + if (GTK_IS_WINDOW (widget)) + focus_widget = gtk_window_get_focus (GTK_WINDOW (widget)); + if (! focus_widget) + focus_widget = widget; + + gtk_menu_popup_at_widget (popup_menu, focus_widget, + GDK_GRAVITY_SOUTH_WEST, + GDK_GRAVITY_NORTH_WEST, + (const GdkEvent*) event); + return TRUE; + } + + return FALSE; +} /* Popup Menu Callback : Create a new sticky note */ void popup_create_cb (GtkWidget *widget, @@ -140,11 +184,11 @@ popup_destroy_cb (GtkWidget *widget, /* Popup Menu Callback : Lock/Unlock selected sticky note */ void -popup_toggle_lock_cb (GtkToggleAction *action, - StickyNote *note) +popup_toggle_lock_cb (GtkCheckMenuItem *item, + StickyNote *note) { stickynote_set_locked (note, - gtk_toggle_action_get_active (action)); + gtk_check_menu_item_get_active (item)); } /* Popup Menu Callback : Change sticky note properties */ |