double DEFAULT_ZOOM;
+// prevent interface items from getting bogus XInput events
+gboolean filter_extended_events (GtkWidget *widget, GdkEvent *event,
+ gpointer user_data)
+{
+ // prevent scrollbars from reacting to XInput events
+ if (event->type == GDK_MOTION_NOTIFY &&
+ event->motion.device != gdk_device_get_core_pointer())
+ return TRUE;
+ if ((event->type == GDK_BUTTON_PRESS || event->type == GDK_2BUTTON_PRESS ||
+ event->type == GDK_3BUTTON_PRESS || event->type == GDK_BUTTON_RELEASE) &&
+ event->button.device != gdk_device_get_core_pointer())
+ return TRUE;
+ return FALSE;
+}
+
void init_stuff (int argc, char *argv[])
{
GtkWidget *w;
ui.layerbox_length = 0;
if (argc > 2 || (argc == 2 && argv[1][0] == '-')) {
- printf("Invalid command line parameters.\n"
- "Usage: %s [filename.xoj]\n", argv[0]);
+ printf(_("Invalid command line parameters.\n"
+ "Usage: %s [filename.xoj]\n"), argv[0]);
gtk_exit(0);
}
gdk_device_set_axis_use(device, 1, GDK_AXIS_IGNORE);
#endif
gdk_device_set_mode(device, GDK_MODE_SCREEN);
+ if (g_str_has_suffix(device->name, "eraser"))
+ gdk_device_set_source(device, GDK_SOURCE_ERASER);
can_xinput = TRUE;
}
dev_list = dev_list->next;
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(GET_COMPONENT("optionsUseXInput")), ui.use_xinput);
+ /* fix a bug in GTK+ 2.16 and beyond: scrollbars shouldn't get extended
+ input events from pointer motion when cursor moves into main window */
+#if GTK_CHECK_VERSION(2,14,0)
+ if (!gtk_check_version(2, 14, 0)) {
+ g_signal_connect (
+ GET_COMPONENT("menubar"),
+ "event", G_CALLBACK (filter_extended_events),
+ NULL);
+ g_signal_connect (
+ GET_COMPONENT("toolbarMain"),
+ "event", G_CALLBACK (filter_extended_events),
+ NULL);
+ g_signal_connect (
+ GET_COMPONENT("toolbarPen"),
+ "event", G_CALLBACK (filter_extended_events),
+ NULL);
+ g_signal_connect (
+ GET_COMPONENT("statusbar"),
+ "event", G_CALLBACK (filter_extended_events),
+ NULL);
+ g_signal_connect (
+ (gpointer)(gtk_scrolled_window_get_vscrollbar(GTK_SCROLLED_WINDOW(w))),
+ "event", G_CALLBACK (filter_extended_events),
+ NULL);
+ g_signal_connect (
+ (gpointer)(gtk_scrolled_window_get_hscrollbar(GTK_SCROLLED_WINDOW(w))),
+ "event", G_CALLBACK (filter_extended_events),
+ NULL);
+ }
+#endif
+
// load the MRU
init_mru();
set_cursor_busy(FALSE);
if (!success) {
w = gtk_message_dialog_new(GTK_WINDOW (winMain), GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error opening file '%s'", argv[1]);
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Error opening file '%s'"), argv[1]);
gtk_dialog_run(GTK_DIALOG(w));
gtk_widget_destroy(w);
}
{
gchar *path, *path1, *path2;
+#ifdef ENABLE_NLS
+ bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+#endif
+
gtk_set_locale ();
gtk_init (&argc, &argv);
gtk_main ();
if (bgpdf.status != STATUS_NOT_INIT) shutdown_bgpdf();
- if (bgpdf.status != STATUS_NOT_INIT) end_bgpdf_shutdown();
save_mru_list();
if (ui.auto_save_prefs) save_config_to_file();