summaryrefslogtreecommitdiff
path: root/stickynotes/stickynotes_callbacks.c
diff options
context:
space:
mode:
Diffstat (limited to 'stickynotes/stickynotes_callbacks.c')
-rw-r--r--stickynotes/stickynotes_callbacks.c58
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 */