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));