diff --git a/src/gui_xmebwp.h b/src/gui_xmebwp.h
new file mode 100644
index 0000000..65e71b4
--- /dev/null
+++ b/src/gui_xmebwp.h
@@ -0,0 +1,88 @@
+/* vi:set ts=8 sts=4 sw=4:
+ *
+ * VIM - Vi IMproved	by Bram Moolenaar
+ *
+ * Do ":help uganda"  in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ * See README.txt for an overview of the Vim source code.
+ */
+/*
+ *
+ * (C) 2002,2005 by Marcin Dalecki <martin@dalecki.de>
+ *
+ * MARCIN DALECKI ASSUMES NO RESPONSIBILITY FOR THE USE OR INABILITY TO USE ANY
+ * OF THIS SOFTWARE . THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
+ * KIND, AND MARCIN DALECKI EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES,
+ * INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#ifndef EnhancedBP_H
+#define EnhancedBP_H
+
+#include <Xm/PushBP.h>
+
+#include "gui_xmebw.h"
+
+
+/*
+ * EnahncedButton class structure.
+ */
+typedef struct _XmEnhancedButtonClassPart
+{
+    Pixmap stipple_bitmap;
+} XmEnhancedButtonClassPart;
+
+/*
+ * Full class record declaration for EnhancedButton class.
+ */
+typedef struct
+{
+    CoreClassPart core_class;
+    XmPrimitiveClassPart primitive_class;
+    XmLabelClassPart label_class;
+    XmPushButtonClassPart pushbutton_class;
+    XmEnhancedButtonClassPart enhancedbutton_class;
+} XmEnhancedButtonClassRec;
+
+
+extern XmEnhancedButtonClassRec xmEnhancedButtonClassRec;
+
+/*
+ * EnahncedButton instance record.
+ */
+typedef struct _XmEnhancedButtonPart
+{
+    /* public resources */
+    String pixmap_data;
+    String pixmap_file;
+    Dimension spacing;
+    int label_location;
+
+    /* private resources */
+    int pixmap_depth;
+    Dimension pixmap_width;
+    Dimension pixmap_height;
+    Pixmap normal_pixmap;
+    Pixmap armed_pixmap;
+    Pixmap insensitive_pixmap;
+    Pixmap highlight_pixmap;
+
+    int doing_setvalues;
+    int doing_destroy;
+} XmEnhancedButtonPart;
+
+
+/*
+ * Full instance record declaration.
+ */
+typedef struct _XmEnhancedButtonRec
+{
+    CorePart core;
+    XmPrimitivePart primitive;
+    XmLabelPart label;
+    XmPushButtonPart pushbutton;
+    XmEnhancedButtonPart enhancedbutton;
+} XmEnhancedButtonRec;
+
+#endif
diff --git a/src/ops.c b/src/ops.c
index 1cbb928..b17effe 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -1530,6 +1530,7 @@
     if (       oap->motion_type == MCHAR
 #ifdef FEAT_VISUAL
 	    && !oap->is_VIsual
+	    && !oap->block_mode
 #endif
 	    && oap->line_count > 1
 	    && oap->op_type == OP_DELETE)
@@ -2679,6 +2680,7 @@
 	    && !oap->inclusive
 #ifdef FEAT_VISUAL
 	    && (!oap->is_VIsual || *p_sel == 'o')
+	    && !oap->block_mode
 #endif
 	    && oap->end.col == 0
 	    && yanklines > 1)
@@ -5997,7 +5999,7 @@
 		    if (lnum == curbuf->b_ml.ml_line_count
 			    && !curbuf->b_p_eol
 			    && curbuf->b_p_bin
-			    && STRLEN(s) < len)
+			    && (long)STRLEN(s) < len)
 			char_count_cursor -= eol_size;
 		}
 	    }
diff --git a/src/structs.h b/src/structs.h
index 3d71393..5a76036 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1810,13 +1810,11 @@
 #endif
 #ifdef FEAT_GUI_MOTIF
     int		sensitive;	    /* turn button on/off */
+    char	**xpm;		    /* pixmap data */
 #endif
-#if defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_MOTIF)
+#ifdef FEAT_GUI_ATHENA
     Pixmap	image;		    /* Toolbar image */
 #endif
-#ifdef FEAT_GUI_MOTIF
-    Pixmap	image_ins;	    /* Toolbar image insensitive */
-#endif
 #ifdef FEAT_BEVAL_TIP
     BalloonEval *tip;		    /* tooltip for this menu item */
 #endif
