Code

moving trunk for module inkscape
[inkscape.git] / src / helper / window.cpp
1 #define __SP_WINDOW_C__
3 /*
4  * Generic window implementation
5  *
6  * Author:
7  *   Lauris Kaplinski <lauris@kaplinski.com>
8  *
9  * This code is in public domain
10  */
12 #ifdef HAVE_CONFIG_H
13 # include <config.h>
14 #endif
15 #include <gtk/gtkwindow.h>
17 #include "inkscape.h"
18 #include "shortcuts.h"
19 #include "desktop.h"
20 #include "event-context.h"
22 static gboolean
23 sp_window_key_press (GtkWidget *widget, GdkEventKey *event)
24 {
25         unsigned int shortcut;
26         shortcut = get_group0_keyval (event) |
27                    ( event->state & GDK_SHIFT_MASK ?
28                      SP_SHORTCUT_SHIFT_MASK : 0 ) |
29                    ( event->state & GDK_CONTROL_MASK ?
30                      SP_SHORTCUT_CONTROL_MASK : 0 ) |
31                    ( event->state & GDK_MOD1_MASK ?
32                      SP_SHORTCUT_ALT_MASK : 0 );
33         return sp_shortcut_invoke (shortcut, SP_ACTIVE_DESKTOP);
34 }
36 GtkWidget *
37 sp_window_new (const gchar *title, unsigned int resizeable)
38 {
39         GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
40         gtk_window_set_title ((GtkWindow *) window, title);
41         gtk_window_set_resizable ((GtkWindow *) window, resizeable);
42         g_signal_connect_after ((GObject *) window, "key_press_event", (GCallback) sp_window_key_press, NULL);
44         return window;
45 }