Mercurial > vim
comparison src/gui_gtk_x11.c @ 179:7fd70926e2e1 v7.0055
updated for version 7.0055
author | vimboss |
---|---|
date | Fri, 04 Mar 2005 23:39:37 +0000 |
parents | e85cff741dec |
children | 4968de555941 |
comparison
equal
deleted
inserted
replaced
178:4d53c2a2af94 | 179:7fd70926e2e1 |
---|---|
894 | 894 |
895 return len; | 895 return len; |
896 } | 896 } |
897 #endif /* HAVE_GTK2 */ | 897 #endif /* HAVE_GTK2 */ |
898 | 898 |
899 static int | |
900 modifiers_gdk2vim(guint state) | |
901 { | |
902 int modifiers = 0; | |
903 | |
904 if (state & GDK_SHIFT_MASK) | |
905 modifiers |= MOD_MASK_SHIFT; | |
906 if (state & GDK_CONTROL_MASK) | |
907 modifiers |= MOD_MASK_CTRL; | |
908 if (state & GDK_MOD1_MASK) | |
909 modifiers |= MOD_MASK_ALT; | |
910 if (state & GDK_MOD4_MASK) | |
911 modifiers |= MOD_MASK_META; | |
912 | |
913 return modifiers; | |
914 } | |
915 | |
916 static int | |
917 modifiers_gdk2mouse(guint state) | |
918 { | |
919 int modifiers = 0; | |
920 | |
921 if (state & GDK_SHIFT_MASK) | |
922 modifiers |= MOUSE_SHIFT; | |
923 if (state & GDK_CONTROL_MASK) | |
924 modifiers |= MOUSE_CTRL; | |
925 if (state & GDK_MOD1_MASK) | |
926 modifiers |= MOUSE_ALT; | |
927 | |
928 return modifiers; | |
929 } | |
930 | |
899 /* | 931 /* |
900 * Main keyboard handler: | 932 * Main keyboard handler: |
901 */ | 933 */ |
902 /*ARGSUSED*/ | 934 /*ARGSUSED*/ |
903 static gint | 935 static gint |
1110 #ifdef FEAT_MBYTE | 1142 #ifdef FEAT_MBYTE |
1111 || (enc_dbcs && len == 1 && (state & GDK_MOD1_MASK)) | 1143 || (enc_dbcs && len == 1 && (state & GDK_MOD1_MASK)) |
1112 #endif | 1144 #endif |
1113 ) | 1145 ) |
1114 { | 1146 { |
1115 modifiers = 0; | 1147 modifiers = modifiers_gdk2vim(state); |
1116 if (state & GDK_SHIFT_MASK) | |
1117 modifiers |= MOD_MASK_SHIFT; | |
1118 if (state & GDK_CONTROL_MASK) | |
1119 modifiers |= MOD_MASK_CTRL; | |
1120 if (state & GDK_MOD1_MASK) | |
1121 modifiers |= MOD_MASK_ALT; | |
1122 | 1148 |
1123 /* | 1149 /* |
1124 * For some keys a shift modifier is translated into another key | 1150 * For some keys a shift modifier is translated into another key |
1125 * code. | 1151 * code. |
1126 */ | 1152 */ |
1596 gui_mouse_moved(x, y); | 1622 gui_mouse_moved(x, y); |
1597 return; | 1623 return; |
1598 } | 1624 } |
1599 | 1625 |
1600 /* translate modifier coding between the main engine and GTK */ | 1626 /* translate modifier coding between the main engine and GTK */ |
1601 vim_modifiers = 0x0; | 1627 vim_modifiers = modifiers_gdk2mouse(state); |
1602 if (state & GDK_SHIFT_MASK) | |
1603 vim_modifiers |= MOUSE_SHIFT; | |
1604 if (state & GDK_CONTROL_MASK) | |
1605 vim_modifiers |= MOUSE_CTRL; | |
1606 if (state & GDK_MOD1_MASK) | |
1607 vim_modifiers |= MOUSE_ALT; | |
1608 | 1628 |
1609 /* inform the editor engine about the occurence of this event */ | 1629 /* inform the editor engine about the occurence of this event */ |
1610 gui_send_mouse_event(button, x, y, FALSE, vim_modifiers); | 1630 gui_send_mouse_event(button, x, y, FALSE, vim_modifiers); |
1611 | 1631 |
1612 if (gtk_main_level() > 0) | 1632 if (gtk_main_level() > 0) |
1794 /* cancel any preediting */ | 1814 /* cancel any preediting */ |
1795 if (im_is_preediting()) | 1815 if (im_is_preediting()) |
1796 xim_reset(); | 1816 xim_reset(); |
1797 #endif | 1817 #endif |
1798 | 1818 |
1799 vim_modifiers = 0x0; | 1819 vim_modifiers = modifiers_gdk2mouse(event->state); |
1800 if (event->state & GDK_SHIFT_MASK) | |
1801 vim_modifiers |= MOUSE_SHIFT; | |
1802 if (event->state & GDK_CONTROL_MASK) | |
1803 vim_modifiers |= MOUSE_CTRL; | |
1804 if (event->state & GDK_MOD1_MASK) | |
1805 vim_modifiers |= MOUSE_ALT; | |
1806 | 1820 |
1807 gui_send_mouse_event(button, x, y, repeated_click, vim_modifiers); | 1821 gui_send_mouse_event(button, x, y, repeated_click, vim_modifiers); |
1808 if (gtk_main_level() > 0) | 1822 if (gtk_main_level() > 0) |
1809 gtk_main_quit(); /* make sure the above will be handled immediately */ | 1823 gtk_main_quit(); /* make sure the above will be handled immediately */ |
1810 | 1824 |
1819 /*ARGSUSED2*/ | 1833 /*ARGSUSED2*/ |
1820 static gboolean | 1834 static gboolean |
1821 scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer data) | 1835 scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer data) |
1822 { | 1836 { |
1823 int button; | 1837 int button; |
1824 int_u vim_modifiers = 0; | 1838 int_u vim_modifiers; |
1825 | 1839 |
1826 if (gtk_socket_id != 0 && !GTK_WIDGET_HAS_FOCUS(widget)) | 1840 if (gtk_socket_id != 0 && !GTK_WIDGET_HAS_FOCUS(widget)) |
1827 gtk_widget_grab_focus(widget); | 1841 gtk_widget_grab_focus(widget); |
1828 | 1842 |
1829 switch (event->direction) | 1843 switch (event->direction) |
1842 /* cancel any preediting */ | 1856 /* cancel any preediting */ |
1843 if (im_is_preediting()) | 1857 if (im_is_preediting()) |
1844 xim_reset(); | 1858 xim_reset(); |
1845 # endif | 1859 # endif |
1846 | 1860 |
1847 if (event->state & GDK_SHIFT_MASK) | 1861 vim_modifiers = modifiers_gdk2mouse(event->state); |
1848 vim_modifiers |= MOUSE_SHIFT; | |
1849 if (event->state & GDK_CONTROL_MASK) | |
1850 vim_modifiers |= MOUSE_CTRL; | |
1851 if (event->state & GDK_MOD1_MASK) | |
1852 vim_modifiers |= MOUSE_ALT; | |
1853 | 1862 |
1854 gui_send_mouse_event(button, (int)event->x, (int)event->y, | 1863 gui_send_mouse_event(button, (int)event->x, (int)event->y, |
1855 FALSE, vim_modifiers); | 1864 FALSE, vim_modifiers); |
1856 | 1865 |
1857 if (gtk_main_level() > 0) | 1866 if (gtk_main_level() > 0) |
1879 } | 1888 } |
1880 | 1889 |
1881 x = event->x; | 1890 x = event->x; |
1882 y = event->y; | 1891 y = event->y; |
1883 | 1892 |
1884 vim_modifiers = 0x0; | 1893 vim_modifiers = modifiers_gdk2mouse(event->state); |
1885 if (event->state & GDK_SHIFT_MASK) | |
1886 vim_modifiers |= MOUSE_SHIFT; | |
1887 if (event->state & GDK_CONTROL_MASK) | |
1888 vim_modifiers |= MOUSE_CTRL; | |
1889 if (event->state & GDK_MOD1_MASK) | |
1890 vim_modifiers |= MOUSE_ALT; | |
1891 | 1894 |
1892 gui_send_mouse_event(MOUSE_RELEASE, x, y, FALSE, vim_modifiers); | 1895 gui_send_mouse_event(MOUSE_RELEASE, x, y, FALSE, vim_modifiers); |
1893 if (gtk_main_level() > 0) | 1896 if (gtk_main_level() > 0) |
1894 gtk_main_quit(); /* make sure it will be handled immediately */ | 1897 gtk_main_quit(); /* make sure it will be handled immediately */ |
1895 | 1898 |
1999 | 2002 |
2000 fnames = parse_uri_list(&nfiles, data->data, data->length); | 2003 fnames = parse_uri_list(&nfiles, data->data, data->length); |
2001 | 2004 |
2002 if (fnames != NULL && nfiles > 0) | 2005 if (fnames != NULL && nfiles > 0) |
2003 { | 2006 { |
2004 int_u modifiers = 0; | 2007 int_u modifiers; |
2005 | 2008 |
2006 gtk_drag_finish(context, TRUE, FALSE, time_); /* accept */ | 2009 gtk_drag_finish(context, TRUE, FALSE, time_); /* accept */ |
2007 | 2010 |
2008 if (state & GDK_SHIFT_MASK) | 2011 modifiers = modifiers_gdk2mouse(state); |
2009 modifiers |= MOUSE_SHIFT; | |
2010 if (state & GDK_CONTROL_MASK) | |
2011 modifiers |= MOUSE_CTRL; | |
2012 if (state & GDK_MOD1_MASK) | |
2013 modifiers |= MOUSE_ALT; | |
2014 | 2012 |
2015 gui_handle_drop(x, y, modifiers, fnames, nfiles); | 2013 gui_handle_drop(x, y, modifiers, fnames, nfiles); |
2016 } | 2014 } |
2017 } | 2015 } |
2018 | 2016 |
2059 gtk_drag_finish(context, TRUE, FALSE, time_); /* accept */ | 2057 gtk_drag_finish(context, TRUE, FALSE, time_); /* accept */ |
2060 # ifdef FEAT_MBYTE | 2058 # ifdef FEAT_MBYTE |
2061 vim_free(tmpbuf); | 2059 vim_free(tmpbuf); |
2062 # endif | 2060 # endif |
2063 | 2061 |
2064 if (state & GDK_SHIFT_MASK) | 2062 dropkey[2] = modifiers_gdk2vim(state); |
2065 dropkey[2] |= MOD_MASK_SHIFT; | |
2066 if (state & GDK_CONTROL_MASK) | |
2067 dropkey[2] |= MOD_MASK_CTRL; | |
2068 if (state & GDK_MOD1_MASK) | |
2069 dropkey[2] |= MOD_MASK_ALT; | |
2070 | 2063 |
2071 if (dropkey[2] != 0) | 2064 if (dropkey[2] != 0) |
2072 add_to_input_buf(dropkey, (int)sizeof(dropkey)); | 2065 add_to_input_buf(dropkey, (int)sizeof(dropkey)); |
2073 else | 2066 else |
2074 add_to_input_buf(dropkey + 3, (int)(sizeof(dropkey) - 3)); | 2067 add_to_input_buf(dropkey + 3, (int)(sizeof(dropkey) - 3)); |