summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-04-24 22:16:13 +0200
committerBram Moolenaar <Bram@vim.org>2020-04-24 22:16:13 +0200
commitb52575f9cfcb5c9715ed08ccd552a55e0052370e (patch)
tree94967d94c6aad3783855ca2691833b0a119d6deb
parent7714d7b31f0fc7c717c97abd4a8b5cbb13a3ad31 (diff)
downloadvim-git-8.2.0631.tar.gz
patch 8.2.0631: Haiku file formatted with wrong tabstopv8.2.0631
Problem: Haiku file formatted with wrong tabstop. Solution: Use normal tabstop. Fix white space.
-rw-r--r--src/gui_haiku.cc6794
-rw-r--r--src/version.c2
2 files changed, 3399 insertions, 3397 deletions
diff --git a/src/gui_haiku.cc b/src/gui_haiku.cc
index f26e9035a..2dbd852f2 100644
--- a/src/gui_haiku.cc
+++ b/src/gui_haiku.cc
@@ -2,7 +2,7 @@
*
* VIM - Vi IMproved by Bram Moolenaar
* BeBox GUI support Copyright 1998 by Olaf Seibert.
- * All Rights Reserved.
+ * All Rights Reserved.
*
* Do ":help uganda" in Vim to read copying and usage conditions.
* Do ":help credits" in Vim to see a list of people who contributed.
@@ -79,7 +79,7 @@ extern "C" {
#include "proto.h"
#include "version.h"
-} // extern "C"
+} // extern "C"
// ---------------- start of header part ----------------
@@ -143,165 +143,165 @@ extern int main(int argc, char **argv);
// VimApp seems comparable to the X "vimShell"
class VimApp: public BApplication
{
- typedef BApplication Inherited;
- public:
- VimApp(const char *appsig);
- ~VimApp();
+ typedef BApplication Inherited;
+ public:
+ VimApp(const char *appsig);
+ ~VimApp();
- // callbacks:
+ // callbacks:
#if 0
- virtual void DispatchMessage(BMessage *m, BHandler *h)
- {
- m->PrintToStream();
- Inherited::DispatchMessage(m, h);
- }
+ virtual void DispatchMessage(BMessage *m, BHandler *h)
+ {
+ m->PrintToStream();
+ Inherited::DispatchMessage(m, h);
+ }
#endif
- virtual void ReadyToRun();
- virtual void ArgvReceived(int32 argc, char **argv);
- virtual void RefsReceived(BMessage *m);
- virtual bool QuitRequested();
- virtual void MessageReceived(BMessage *m);
-
- static void SendRefs(BMessage *m, bool changedir);
-
- sem_id fFilePanelSem;
- BFilePanel* fFilePanel;
- BPath fBrowsedPath;
- private:
+ virtual void ReadyToRun();
+ virtual void ArgvReceived(int32 argc, char **argv);
+ virtual void RefsReceived(BMessage *m);
+ virtual bool QuitRequested();
+ virtual void MessageReceived(BMessage *m);
+
+ static void SendRefs(BMessage *m, bool changedir);
+
+ sem_id fFilePanelSem;
+ BFilePanel* fFilePanel;
+ BPath fBrowsedPath;
+ private:
};
class VimWindow: public BWindow
{
- typedef BWindow Inherited;
- public:
- VimWindow();
- ~VimWindow();
+ typedef BWindow Inherited;
+ public:
+ VimWindow();
+ ~VimWindow();
- // virtual void DispatchMessage(BMessage *m, BHandler *h);
- virtual void WindowActivated(bool active);
- virtual bool QuitRequested();
+ // virtual void DispatchMessage(BMessage *m, BHandler *h);
+ virtual void WindowActivated(bool active);
+ virtual bool QuitRequested();
- VimFormView *formView;
+ VimFormView *formView;
- private:
- void init();
+ private:
+ void init();
};
class VimFormView: public BView
{
- typedef BView Inherited;
- public:
- VimFormView(BRect frame);
- ~VimFormView();
+ typedef BView Inherited;
+ public:
+ VimFormView(BRect frame);
+ ~VimFormView();
- // callbacks:
- virtual void AllAttached();
- virtual void FrameResized(float new_width, float new_height);
+ // callbacks:
+ virtual void AllAttached();
+ virtual void FrameResized(float new_width, float new_height);
#define MENUBAR_MARGIN 1
- float MenuHeight() const
- { return menuBar ? menuBar->Frame().Height() + MENUBAR_MARGIN: 0; }
- BMenuBar *MenuBar() const
- { return menuBar; }
+ float MenuHeight() const
+ { return menuBar ? menuBar->Frame().Height() + MENUBAR_MARGIN: 0; }
+ BMenuBar *MenuBar() const
+ { return menuBar; }
- private:
- void init(BRect);
+ private:
+ void init(BRect);
- BMenuBar *menuBar;
- VimTextAreaView *textArea;
+ BMenuBar *menuBar;
+ VimTextAreaView *textArea;
#ifdef FEAT_TOOLBAR
- public:
- float ToolbarHeight() const;
- VimToolbar *ToolBar() const
- { return toolBar; }
- private:
- VimToolbar *toolBar;
+ public:
+ float ToolbarHeight() const;
+ VimToolbar *ToolBar() const
+ { return toolBar; }
+ private:
+ VimToolbar *toolBar;
#endif
#ifdef FEAT_GUI_TABLINE
- public:
- VimTabLine *TabLine() const { return tabLine; }
- bool IsShowingTabLine() const { return showingTabLine; }
- void SetShowingTabLine(bool showing) { showingTabLine = showing; }
- float TablineHeight() const;
- private:
- VimTabLine *tabLine;
- int showingTabLine;
+ public:
+ VimTabLine *TabLine() const { return tabLine; }
+ bool IsShowingTabLine() const { return showingTabLine; }
+ void SetShowingTabLine(bool showing) { showingTabLine = showing; }
+ float TablineHeight() const;
+ private:
+ VimTabLine *tabLine;
+ int showingTabLine;
#endif
};
class VimTextAreaView: public BView
{
- typedef BView Inherited;
- public:
- VimTextAreaView(BRect frame);
- ~VimTextAreaView();
-
- // callbacks:
- virtual void Draw(BRect updateRect);
- virtual void KeyDown(const char *bytes, int32 numBytes);
- virtual void MouseDown(BPoint point);
- virtual void MouseUp(BPoint point);
- virtual void MouseMoved(BPoint point, uint32 transit, const BMessage *message);
- virtual void MessageReceived(BMessage *m);
-
- // own functions:
- int mchInitFont(char_u *name);
- void mchDrawString(int row, int col, char_u *s, int len, int flags);
- void mchClearBlock(int row1, int col1, int row2, int col2);
- void mchClearAll();
- void mchDeleteLines(int row, int num_lines);
- void mchInsertLines(int row, int num_lines);
-
- static void guiSendMouseEvent(int button, int x, int y, int repeated_click, int_u modifiers);
- static void guiMouseMoved(int x, int y);
- static void guiBlankMouse(bool should_hide);
- static int_u mouseModifiersToVim(int32 beModifiers);
-
- int32 mouseDragEventCount;
+ typedef BView Inherited;
+ public:
+ VimTextAreaView(BRect frame);
+ ~VimTextAreaView();
+
+ // callbacks:
+ virtual void Draw(BRect updateRect);
+ virtual void KeyDown(const char *bytes, int32 numBytes);
+ virtual void MouseDown(BPoint point);
+ virtual void MouseUp(BPoint point);
+ virtual void MouseMoved(BPoint point, uint32 transit, const BMessage *message);
+ virtual void MessageReceived(BMessage *m);
+
+ // own functions:
+ int mchInitFont(char_u *name);
+ void mchDrawString(int row, int col, char_u *s, int len, int flags);
+ void mchClearBlock(int row1, int col1, int row2, int col2);
+ void mchClearAll();
+ void mchDeleteLines(int row, int num_lines);
+ void mchInsertLines(int row, int num_lines);
+
+ static void guiSendMouseEvent(int button, int x, int y, int repeated_click, int_u modifiers);
+ static void guiMouseMoved(int x, int y);
+ static void guiBlankMouse(bool should_hide);
+ static int_u mouseModifiersToVim(int32 beModifiers);
+
+ int32 mouseDragEventCount;
#ifdef FEAT_MBYTE_IME
- void DrawIMString(void);
+ void DrawIMString(void);
#endif
- private:
- void init(BRect);
+ private:
+ void init(BRect);
- int_u vimMouseButton;
- int_u vimMouseModifiers;
+ int_u vimMouseButton;
+ int_u vimMouseModifiers;
#ifdef FEAT_MBYTE_IME
- struct {
- BMessenger* messenger;
- BMessage* message;
- BPoint location;
- int row;
- int col;
- int count;
- } IMData;
+ struct {
+ BMessenger* messenger;
+ BMessage* message;
+ BPoint location;
+ int row;
+ int col;
+ int count;
+ } IMData;
#endif
};
class VimScrollBar: public BScrollBar
{
- typedef BScrollBar Inherited;
- public:
- VimScrollBar(scrollbar_T *gsb, orientation posture);
- ~VimScrollBar();
+ typedef BScrollBar Inherited;
+ public:
+ VimScrollBar(scrollbar_T *gsb, orientation posture);
+ ~VimScrollBar();
- virtual void ValueChanged(float newValue);
- virtual void MouseUp(BPoint where);
- void SetValue(float newval);
- scrollbar_T *getGsb()
- { return gsb; }
+ virtual void ValueChanged(float newValue);
+ virtual void MouseUp(BPoint where);
+ void SetValue(float newval);
+ scrollbar_T *getGsb()
+ { return gsb; }
- int32 scrollEventCount;
+ int32 scrollEventCount;
- private:
- scrollbar_T *gsb;
- float ignoreValue;
+ private:
+ scrollbar_T *gsb;
+ float ignoreValue;
};
@@ -309,28 +309,28 @@ class VimScrollBar: public BScrollBar
class VimToolbar : public BBox
{
- static BBitmap *normalButtonsBitmap;
- static BBitmap *grayedButtonsBitmap;
+ static BBitmap *normalButtonsBitmap;
+ static BBitmap *grayedButtonsBitmap;
- BBitmap *LoadVimBitmap(const char* fileName);
- bool GetPictureFromBitmap(BPicture *pictureTo, int32 index, BBitmap *bitmapFrom, bool pressed);
- bool ModifyBitmapToGrayed(BBitmap *bitmap);
+ BBitmap *LoadVimBitmap(const char* fileName);
+ bool GetPictureFromBitmap(BPicture *pictureTo, int32 index, BBitmap *bitmapFrom, bool pressed);
+ bool ModifyBitmapToGrayed(BBitmap *bitmap);
- BList fButtonsList;
- void InvalidateLayout();
+ BList fButtonsList;
+ void InvalidateLayout();
- public:
- VimToolbar(BRect frame, const char * name);
- ~VimToolbar();
+ public:
+ VimToolbar(BRect frame, const char * name);
+ ~VimToolbar();
- bool PrepareButtonBitmaps();
+ bool PrepareButtonBitmaps();
- bool AddButton(int32 index, vimmenu_T *menu);
- bool RemoveButton(vimmenu_T *menu);
- bool GrayButton(vimmenu_T *menu, int grey);
+ bool AddButton(int32 index, vimmenu_T *menu);
+ bool RemoveButton(vimmenu_T *menu);
+ bool GrayButton(vimmenu_T *menu, int grey);
- float ToolbarHeight() const;
- virtual void AttachedToWindow();
+ float ToolbarHeight() const;
+ virtual void AttachedToWindow();
};
BBitmap *VimToolbar::normalButtonsBitmap = NULL;
@@ -345,19 +345,19 @@ const float ButtonMargin = 3.;
class VimTabLine : public BTabView
{
- public:
- class VimTab : public BTab {
- public:
- VimTab() : BTab(new BView(BRect(), "-Empty-", 0, 0)) {}
+ public:
+ class VimTab : public BTab {
+ public:
+ VimTab() : BTab(new BView(BRect(), "-Empty-", 0, 0)) {}
- virtual void Select(BView* owner);
- };
+ virtual void Select(BView* owner);
+ };
- VimTabLine(BRect r) : BTabView(r, "vimTabLine", B_WIDTH_FROM_LABEL,
- B_FOLLOW_LEFT | B_FOLLOW_TOP | B_FOLLOW_RIGHT, B_WILL_DRAW | B_FRAME_EVENTS) {}
+ VimTabLine(BRect r) : BTabView(r, "vimTabLine", B_WIDTH_FROM_LABEL,
+ B_FOLLOW_LEFT | B_FOLLOW_TOP | B_FOLLOW_RIGHT, B_WILL_DRAW | B_FRAME_EVENTS) {}
- float TablineHeight() const;
- virtual void MouseDown(BPoint point);
+ float TablineHeight() const;
+ virtual void MouseDown(BPoint point);
};
#endif //FEAT_GUI_TABLINE
@@ -367,97 +367,97 @@ class VimTabLine : public BTabView
// Vim seems rather sloppy in this regard.
class VimFont: public BFont
{
- typedef BFont Inherited;
- public:
- VimFont();
- VimFont(const VimFont *rhs);
- VimFont(const BFont *rhs);
- VimFont(const VimFont &rhs);
- ~VimFont();
+ typedef BFont Inherited;
+ public:
+ VimFont();
+ VimFont(const VimFont *rhs);
+ VimFont(const BFont *rhs);
+ VimFont(const VimFont &rhs);
+ ~VimFont();
- VimFont *next;
- int refcount;
- char_u *name;
+ VimFont *next;
+ int refcount;
+ char_u *name;
- private:
- void init();
+ private:
+ void init();
};
#if defined(FEAT_GUI_DIALOG)
class VimDialog : public BWindow
{
- typedef BWindow Inherited;
+ typedef BWindow Inherited;
- BButton* _CreateButton(int32 which, const char* label);
+ BButton* _CreateButton(int32 which, const char* label);
- public:
+ public:
- class View : public BView {
- typedef BView Inherited;
+ class View : public BView {
+ typedef BView Inherited;
- public:
- View(BRect frame);
- ~View();
+ public:
+ View(BRect frame);
+ ~View();
- virtual void Draw(BRect updateRect);
- void InitIcon(int32 type);
+ virtual void Draw(BRect updateRect);
+ void InitIcon(int32 type);
- private:
- BBitmap* fIconBitmap;
- };
+ private:
+ BBitmap* fIconBitmap;
+ };
- VimDialog(int type, const char *title, const char *message,
- const char *buttons, int dfltbutton, const char *textfield,
- int ex_cmd);
- ~VimDialog();
+ VimDialog(int type, const char *title, const char *message,
+ const char *buttons, int dfltbutton, const char *textfield,
+ int ex_cmd);
+ ~VimDialog();
- int Go();
+ int Go();
- virtual void MessageReceived(BMessage *msg);
+ virtual void MessageReceived(BMessage *msg);
- private:
- sem_id fDialogSem;
- int fDialogValue;
- BList fButtonsList;
- BTextView* fMessageView;
- BTextControl* fInputControl;
- const char* fInputValue;
+ private:
+ sem_id fDialogSem;
+ int fDialogValue;
+ BList fButtonsList;
+ BTextView* fMessageView;
+ BTextControl* fInputControl;
+ const char* fInputValue;
};
class VimSelectFontDialog : public BWindow
{
- typedef BWindow Inherited;
-
- void _CleanList(BListView* list);
- void _UpdateFontStyles();
- void _UpdateSizeInputPreview();
- void _UpdateFontPreview();
- bool _UpdateFromListItem(BListView* list, char* text, int textSize);
- public:
-
- VimSelectFontDialog(font_family* family, font_style* style, float* size);
- ~VimSelectFontDialog();
-
- bool Go();
-
- virtual void MessageReceived(BMessage *msg);
-
- private:
- status_t fStatus;
- sem_id fDialogSem;
- bool fDialogValue;
- font_family* fFamily;
- font_style* fStyle;
- float* fSize;
- font_family fFontFamily;
- font_style fFontStyle;
- float fFontSize;
- BStringView* fPreview;
- BListView* fFamiliesList;
- BListView* fStylesList;
- BListView* fSizesList;
- BTextControl* fSizesInput;
+ typedef BWindow Inherited;
+
+ void _CleanList(BListView* list);
+ void _UpdateFontStyles();
+ void _UpdateSizeInputPreview();
+ void _UpdateFontPreview();
+ bool _UpdateFromListItem(BListView* list, char* text, int textSize);
+ public:
+
+ VimSelectFontDialog(font_family* family, font_style* style, float* size);
+ ~VimSelectFontDialog();
+
+ bool Go();
+
+ virtual void MessageReceived(BMessage *msg);
+
+ private:
+ status_t fStatus;
+ sem_id fDialogSem;
+ bool fDialogValue;
+ font_family* fFamily;
+ font_style* fStyle;
+ float* fSize;
+ font_family fFontFamily;
+ font_style fFontStyle;
+ float fFontSize;
+ BStringView* fPreview;
+ BListView* fFamiliesList;
+ BListView* fStylesList;
+ BListView* fSizesList;
+ BTextControl* fSizesInput;
};
#endif // FEAT_GUI_DIALOG
@@ -465,8 +465,8 @@ class VimSelectFontDialog : public BWindow
// ---------------- end of GUI classes ----------------
struct MainArgs {
- int argc;
- char **argv;
+ int argc;
+ char **argv;
};
// These messages are copied through the VDCMP.
@@ -480,74 +480,74 @@ struct MainArgs {
#endif
struct VimKeyMsg {
- char_u length;
- char_u chars[KEY_MSG_BUFSIZ]; // contains Vim encoding
- bool csi_escape;
+ char_u length;
+ char_u chars[KEY_MSG_BUFSIZ]; // contains Vim encoding
+ bool csi_escape;
};
struct VimResizeMsg {
- int width;
- int height;
+ int width;
+ int height;
};
struct VimScrollBarMsg {
- VimScrollBar *sb;
- long value;
- int stillDragging;
+ VimScrollBar *sb;
+ long value;
+ int stillDragging;
};
struct VimMenuMsg {
- vimmenu_T *guiMenu;
+ vimmenu_T *guiMenu;
};
struct VimMouseMsg {
- int button;
- int x;
- int y;
- int repeated_click;
- int_u modifiers;
+ int button;
+ int x;
+ int y;
+ int repeated_click;
+ int_u modifiers;
};
struct VimMouseMovedMsg {
- int x;
- int y;
+ int x;
+ int y;
};
struct VimFocusMsg {
- bool active;
+ bool active;
};
struct VimRefsMsg {
- BMessage *message;
- bool changedir;
+ BMessage *message;
+ bool changedir;
};
struct VimTablineMsg {
- int index;
+ int index;
};
struct VimTablineMenuMsg {
- int index;
- int event;
+ int index;
+ int event;
};
struct VimMsg {
- enum VimMsgType {
- Key, Resize, ScrollBar, Menu, Mouse, MouseMoved, Focus, Refs, Tabline, TablineMenu
- };
-
- union {
- struct VimKeyMsg Key;
- struct VimResizeMsg NewSize;
- struct VimScrollBarMsg Scroll;
- struct VimMenuMsg Menu;
- struct VimMouseMsg Mouse;
- struct VimMouseMovedMsg MouseMoved;
- struct VimFocusMsg Focus;
- struct VimRefsMsg Refs;
- struct VimTablineMsg Tabline;
- struct VimTablineMenuMsg TablineMenu;
- } u;
+ enum VimMsgType {
+ Key, Resize, ScrollBar, Menu, Mouse, MouseMoved, Focus, Refs, Tabline, TablineMenu
+ };
+
+ union {
+ struct VimKeyMsg Key;
+ struct VimResizeMsg NewSize;
+ struct VimScrollBarMsg Scroll;
+ struct VimMenuMsg Menu;
+ struct VimMouseMsg Mouse;
+ struct VimMouseMovedMsg MouseMoved;
+ struct VimFocusMsg Focus;
+ struct VimRefsMsg Refs;
+ struct VimTablineMsg Tabline;
+ struct VimTablineMenuMsg TablineMenu;
+ } u;
};
#define RGB(r, g, b) ((char_u)(r) << 16 | (char_u)(g) << 8 | (char_u)(b) << 0)
@@ -557,100 +557,100 @@ struct VimMsg {
static struct specialkey
{
- uint16 BeKeys;
-#define KEY(a,b) ((a)<<8|(b))
-#define K(a) KEY(0,a) // for ASCII codes
-#define F(b) KEY(1,b) // for scancodes
- char_u vim_code0;
- char_u vim_code1;
+ uint16 BeKeys;
+#define KEY(a,b) ((a)<<8|(b))
+#define K(a) KEY(0,a) // for ASCII codes
+#define F(b) KEY(1,b) // for scancodes
+ char_u vim_code0;
+ char_u vim_code1;
} special_keys[] =
{
- {K(B_UP_ARROW), 'k', 'u'},
- {K(B_DOWN_ARROW), 'k', 'd'},
- {K(B_LEFT_ARROW), 'k', 'l'},
- {K(B_RIGHT_ARROW), 'k', 'r'},
- {K(B_BACKSPACE), 'k', 'b'},
- {K(B_INSERT), 'k', 'I'},
- {K(B_DELETE), 'k', 'D'},
- {K(B_HOME), 'k', 'h'},
- {K(B_END), '@', '7'},
- {K(B_PAGE_UP), 'k', 'P'}, // XK_Prior
- {K(B_PAGE_DOWN), 'k', 'N'}, // XK_Next,
+ {K(B_UP_ARROW), 'k', 'u'},
+ {K(B_DOWN_ARROW), 'k', 'd'},
+ {K(B_LEFT_ARROW), 'k', 'l'},
+ {K(B_RIGHT_ARROW), 'k', 'r'},
+ {K(B_BACKSPACE), 'k', 'b'},
+ {K(B_INSERT), 'k', 'I'},
+ {K(B_DELETE), 'k', 'D'},
+ {K(B_HOME), 'k', 'h'},
+ {K(B_END), '@', '7'},
+ {K(B_PAGE_UP), 'k', 'P'}, // XK_Prior
+ {K(B_PAGE_DOWN), 'k', 'N'}, // XK_Next,
#define FIRST_FUNCTION_KEY 11
- {F(B_F1_KEY), 'k', '1'},
- {F(B_F2_KEY), 'k', '2'},
- {F(B_F3_KEY), 'k', '3'},
- {F(B_F4_KEY), 'k', '4'},
- {F(B_F5_KEY), 'k', '5'},
- {F(B_F6_KEY), 'k', '6'},
- {F(B_F7_KEY), 'k', '7'},
- {F(B_F8_KEY), 'k', '8'},
- {F(B_F9_KEY), 'k', '9'},
- {F(B_F10_KEY), 'k', ';'},
-
- {F(B_F11_KEY), 'F', '1'},
- {F(B_F12_KEY), 'F', '2'},
- // {XK_F13, 'F', '3'}, // would be print screen
- // sysreq
- {F(0x0F), 'F', '4'}, // scroll lock
- {F(0x10), 'F', '5'}, // pause/break
- // {XK_F16, 'F', '6'},
- // {XK_F17, 'F', '7'},
- // {XK_F18, 'F', '8'},
- // {XK_F19, 'F', '9'},
- // {XK_F20, 'F', 'A'},
- // {XK_F21, 'F', 'B'},
- // {XK_F22, 'F', 'C'},
- // {XK_F23, 'F', 'D'},
- // {XK_F24, 'F', 'E'},
- // {XK_F25, 'F', 'F'},
- // {XK_F26, 'F', 'G'},
- // {XK_F27, 'F', 'H'},
- // {XK_F28, 'F', 'I'},
- // {XK_F29, 'F', 'J'},
- // {XK_F30, 'F', 'K'},
- // {XK_F31, 'F', 'L'},
- // {XK_F32, 'F', 'M'},
- // {XK_F33, 'F', 'N'},
- // {XK_F34, 'F', 'O'},
- // {XK_F35, 'F', 'P'}, // keysymdef.h defines up to F35
-
- // {XK_Help, '%', '1'}, // XK_Help
- {F(B_PRINT_KEY), '%', '9'},
+ {F(B_F1_KEY), 'k', '1'},
+ {F(B_F2_KEY), 'k', '2'},
+ {F(B_F3_KEY), 'k', '3'},
+ {F(B_F4_KEY), 'k', '4'},
+ {F(B_F5_KEY), 'k', '5'},
+ {F(B_F6_KEY), 'k', '6'},
+ {F(B_F7_KEY), 'k', '7'},
+ {F(B_F8_KEY), 'k', '8'},
+ {F(B_F9_KEY), 'k', '9'},
+ {F(B_F10_KEY), 'k', ';'},
+
+ {F(B_F11_KEY), 'F', '1'},
+ {F(B_F12_KEY), 'F', '2'},
+ // {XK_F13, 'F', '3'}, // would be print screen
+ // sysreq
+ {F(0x0F), 'F', '4'}, // scroll lock
+ {F(0x10), 'F', '5'}, // pause/break
+ // {XK_F16, 'F', '6'},
+ // {XK_F17, 'F', '7'},
+ // {XK_F18, 'F', '8'},
+ // {XK_F19, 'F', '9'},
+ // {XK_F20, 'F', 'A'},
+ // {XK_F21, 'F', 'B'},
+ // {XK_F22, 'F', 'C'},
+ // {XK_F23, 'F', 'D'},
+ // {XK_F24, 'F', 'E'},
+ // {XK_F25, 'F', 'F'},
+ // {XK_F26, 'F', 'G'},
+ // {XK_F27, 'F', 'H'},
+ // {XK_F28, 'F', 'I'},
+ // {XK_F29, 'F', 'J'},
+ // {XK_F30, 'F', 'K'},
+ // {XK_F31, 'F', 'L'},
+ // {XK_F32, 'F', 'M'},
+ // {XK_F33, 'F', 'N'},
+ // {XK_F34, 'F', 'O'},
+ // {XK_F35, 'F', 'P'}, // keysymdef.h defines up to F35
+
+ // {XK_Help, '%', '1'}, // XK_Help
+ {F(B_PRINT_KEY), '%', '9'},
#if 0
- // Keypad keys:
- {F(0x48), 'k', 'l'}, // XK_KP_Left
- {F(0x4A), 'k', 'r'}, // XK_KP_Right
- {F(0x38), 'k', 'u'}, // XK_KP_Up
- {F(0x59), 'k', 'd'}, // XK_KP_Down
- {F(0x64), 'k', 'I'}, // XK_KP_Insert
- {F(0x65), 'k', 'D'}, // XK_KP_Delete
- {F(0x37), 'k', 'h'}, // XK_KP_Home
- {F(0x58), '@', '7'}, // XK_KP_End
- {F(0x39), 'k', 'P'}, // XK_KP_Prior
- {F(0x60), 'k', 'N'}, // XK_KP_Next
- {F(0x49), '&', '8'}, // XK_Undo, keypad 5
+ // Keypad keys:
+ {F(0x48), 'k', 'l'}, // XK_KP_Left
+ {F(0x4A), 'k', 'r'}, // XK_KP_Right
+ {F(0x38), 'k', 'u'}, // XK_KP_Up
+ {F(0x59), 'k', 'd'}, // XK_KP_Down
+ {F(0x64), 'k', 'I'}, // XK_KP_Insert
+ {F(0x65), 'k', 'D'}, // XK_KP_Delete
+ {F(0x37), 'k', 'h'}, // XK_KP_Home
+ {F(0x58), '@', '7'}, // XK_KP_End
+ {F(0x39), 'k', 'P'}, // XK_KP_Prior
+ {F(0x60), 'k', 'N'}, // XK_KP_Next
+ {F(0x49), '&', '8'}, // XK_Undo, keypad 5
#endif
- // End of list marker:
- {0, 0, 0}
+ // End of list marker:
+ {0, 0, 0}
};
#define NUM_SPECIAL_KEYS (sizeof(special_keys)/sizeof(special_keys[0]))
// ---------------- VimApp ----------------
- static void
+ static void
docd(BPath &path)
{
- mch_chdir((char *)path.Path());
- // Do this to get the side effects of a :cd command
- do_cmdline_cmd((char_u *)"cd .");
+ mch_chdir((char *)path.Path());
+ // Do this to get the side effects of a :cd command
+ do_cmdline_cmd((char_u *)"cd .");
}
- static void
+ static void
drop_callback(void *cookie)
{
// TODO here we could handle going to a specific position in the dropped
@@ -660,119 +660,119 @@ drop_callback(void *cookie)
}
// Really handle dropped files and folders.
- static void
+ static void
RefsReceived(BMessage *m, bool changedir)
{
- uint32 type;
- int32 count;
+ uint32 type;
+ int32 count;
- m->PrintToStream();
- switch (m->what) {
- case B_REFS_RECEIVED:
- case B_SIMPLE_DATA:
- m->GetInfo("refs", &type, &count);
- if (type != B_REF_TYPE)
- goto bad;
- break;
- case B_ARGV_RECEIVED:
- m->GetInfo("argv", &type, &count);
- if (type != B_STRING_TYPE)
- goto bad;
- if (changedir) {
- char *dirname;
- if (m->FindString("cwd", (const char **) &dirname) == B_OK) {
- chdir(dirname);
- do_cmdline_cmd((char_u *)"cd .");
- }
- }
- break;
- default:
+ m->PrintToStream();
+ switch (m->what) {
+ case B_REFS_RECEIVED:
+ case B_SIMPLE_DATA:
+ m->GetInfo("refs", &type, &count);
+ if (type != B_REF_TYPE)
+ goto bad;
+ break;
+ case B_ARGV_RECEIVED:
+ m->GetInfo("argv", &type, &count);
+ if (type != B_STRING_TYPE)
+ goto bad;
+ if (changedir) {
+ char *dirname;
+ if (m->FindString("cwd", (const char **) &dirname) == B_OK) {
+ chdir(dirname);
+ do_cmdline_cmd((char_u *)"cd .");
+ }
+ }
+ break;
+ default:
bad:
- /*fprintf(stderr, "bad!\n"); */
- delete m;
- return;
- }
+ /*fprintf(stderr, "bad!\n"); */
+ delete m;
+ return;
+ }
#ifdef FEAT_VISUAL
- reset_VIsual();
+ reset_VIsual();
#endif
- char_u **fnames;
- fnames = (char_u **) alloc(count * sizeof(char_u *));
- int fname_index = 0;
-
- switch (m->what) {
- case B_REFS_RECEIVED:
- case B_SIMPLE_DATA:
- // fprintf(stderr, "case B_REFS_RECEIVED\n");
- for (int i = 0; i < count; ++i)
- {
- entry_ref ref;
- if (m->FindRef("refs", i, &ref) == B_OK) {
- BEntry entry(&ref, false);
- BPath path;
- entry.GetPath(&path);
-
- // Change to parent directory?
- if (changedir) {
- BPath parentpath;
- path.GetParent(&parentpath);
- docd(parentpath);
- }
-
- // Is it a directory? If so, cd into it.
- BDirectory bdir(&ref);
- if (bdir.InitCheck() == B_OK) {
- // don't cd if we already did it
- if (!changedir)
- docd(path);
- } else {
- mch_dirname(IObuff, IOSIZE);
- char_u *fname = shorten_fname((char_u *)path.Path(), IObuff);
- if (fname == NULL)
- fname = (char_u *)path.Path();
- fnames[fname_index++] = vim_strsave(fname);
- // fprintf(stderr, "%s\n", fname);
- }
-
- // Only do it for the first file/dir
- changedir = false;
- }
- }
- break;
- case B_ARGV_RECEIVED:
- // fprintf(stderr, "case B_ARGV_RECEIVED\n");
- for (int i = 1; i < count; ++i)
- {
- char *fname;
-
- if (m->FindString("argv", i, (const char **) &fname) == B_OK) {
- fnames[fname_index++] = vim_strsave((char_u *)fname);
- }
- }
- break;
- default:
- // fprintf(stderr, "case default\n");
- break;
- }
+ char_u **fnames;
+ fnames = (char_u **) alloc(count * sizeof(char_u *));
+ int fname_index = 0;
+
+ switch (m->what) {
+ case B_REFS_RECEIVED:
+ case B_SIMPLE_DATA:
+ // fprintf(stderr, "case B_REFS_RECEIVED\n");
+ for (int i = 0; i < count; ++i)
+ {
+ entry_ref ref;
+ if (m->FindRef("refs", i, &ref) == B_OK) {
+ BEntry entry(&ref, false);
+ BPath path;
+ entry.GetPath(&path);
+
+ // Change to parent directory?
+ if (changedir) {
+ BPath parentpath;
+ path.GetParent(&parentpath);
+ docd(parentpath);
+ }
+
+ // Is it a directory? If so, cd into it.
+ BDirectory bdir(&ref);
+ if (bdir.InitCheck() == B_OK) {
+ // don't cd if we already did it
+ if (!changedir)
+ docd(path);
+ } else {
+ mch_dirname(IObuff, IOSIZE);
+ char_u *fname = shorten_fname((char_u *)path.Path(), IObuff);
+ if (fname == NULL)
+ fname = (char_u *)path.Path();
+ fnames[fname_index++] = vim_strsave(fname);
+ // fprintf(stderr, "%s\n", fname);
+ }
+
+ // Only do it for the first file/dir
+ changedir = false;
+ }
+ }
+ break;
+ case B_ARGV_RECEIVED:
+ // fprintf(stderr, "case B_ARGV_RECEIVED\n");
+ for (int i = 1; i < count; ++i)
+ {
+ char *fname;
+
+ if (m->FindString("argv", i, (const char **) &fname) == B_OK) {
+ fnames[fname_index++] = vim_strsave((char_u *)fname);
+ }
+ }
+ break;
+ default:
+ // fprintf(stderr, "case default\n");
+ break;
+ }
- delete m;
+ delete m;
- // Handle the drop, :edit to get to the file
- if (fname_index > 0) {
- handle_drop(fname_index, fnames, FALSE, drop_callback, NULL);
+ // Handle the drop, :edit to get to the file
+ if (fname_index > 0) {
+ handle_drop(fname_index, fnames, FALSE, drop_callback, NULL);
- setcursor();
- out_flush();
- } else {
- vim_free(fnames);
- }
+ setcursor();
+ out_flush();
+ } else {
+ vim_free(fnames);
+ }
}
VimApp::VimApp(const char *appsig):
- BApplication(appsig),
- fFilePanelSem(-1),
- fFilePanel(NULL)
+ BApplication(appsig),
+ fFilePanelSem(-1),
+ fFilePanel(NULL)
{
}
@@ -780,1073 +780,1073 @@ VimApp::~VimApp()
{
}
- void
+ void
VimApp::ReadyToRun()
{
- /*
- * Apparently signals are inherited by the created thread -
- * disable the most annoying ones.
- */
- signal(SIGINT, SIG_IGN);
- signal(SIGQUIT, SIG_IGN);
+ /*
+ * Apparently signals are inherited by the created thread -
+ * disable the most annoying ones.
+ */
+ signal(SIGINT, SIG_IGN);
+ signal(SIGQUIT, SIG_IGN);
}
- void
+ void
VimApp::ArgvReceived(int32 arg_argc, char **arg_argv)
{
- if (!IsLaunching()) {
- /*
- * This can happen if we are set to Single or Exclusive
- * Launch. Be nice and open the file(s).
- */
- if (gui.vimWindow)
- gui.vimWindow->Minimize(false);
- BMessage *m = CurrentMessage();
- DetachCurrentMessage();
- SendRefs(m, true);
- }
+ if (!IsLaunching()) {
+ /*
+ * This can happen if we are set to Single or Exclusive
+ * Launch. Be nice and open the file(s).
+ */
+ if (gui.vimWindow)
+ gui.vimWindow->Minimize(false);
+ BMessage *m = CurrentMessage();
+ DetachCurrentMessage();
+ SendRefs(m, true);
+ }
}
- void
+ void
VimApp::RefsReceived(BMessage *m)
{
- // Horrible hack!!! XXX XXX XXX
- // The real problem is that b_start_ffc is set too late for
- // the initial empty buffer. As a result the window will be
- // split instead of abandoned.
- int limit = 15;
- while (--limit >= 0 && (curbuf == NULL || curbuf->b_start_ffc == 0))
- snooze(100000); // 0.1 s
- if (gui.vimWindow)
- gui.vimWindow->Minimize(false);
- DetachCurrentMessage();
- SendRefs(m, true);
+ // Horrible hack!!! XXX XXX XXX
+ // The real problem is that b_start_ffc is set too late for
+ // the initial empty buffer. As a result the window will be
+ // split instead of abandoned.
+ int limit = 15;
+ while (--limit >= 0 && (curbuf == NULL || curbuf->b_start_ffc == 0))
+ snooze(100000); // 0.1 s
+ if (gui.vimWindow)
+ gui.vimWindow->Minimize(false);
+ DetachCurrentMessage();
+ SendRefs(m, true);
}
/*
* Pass a BMessage on to the main() thread.
* Caller must have detached the message.
*/
- void
+ void
VimApp::SendRefs(BMessage *m, bool changedir)
{
- VimRefsMsg rm;
- rm.message = m;
- rm.changedir = changedir;
+ VimRefsMsg rm;
+ rm.message = m;
+ rm.changedir = changedir;
- write_port(gui.vdcmp, VimMsg::Refs, &rm, sizeof(rm));
- // calls ::RefsReceived
+ write_port(gui.vdcmp, VimMsg::Refs, &rm, sizeof(rm));
+ // calls ::RefsReceived
}
- void
+ void
VimApp::MessageReceived(BMessage *m)
{
- switch (m->what) {
- case 'save':
- {
- entry_ref refDirectory;
- m->FindRef("directory", &refDirectory);
- fBrowsedPath.SetTo(&refDirectory);
- BString strName;
- m->FindString("name", &strName);
- fBrowsedPath.Append(strName.String());
- }
- break;
- case 'open':
- {
- entry_ref ref;
- m->FindRef("refs", &ref);
- fBrowsedPath.SetTo(&ref);
- }
- break;
- case B_CANCEL:
- {
- BFilePanel *panel;
- m->FindPointer("source", (void**)&panel);
- if(fFilePanelSem != -1 && panel == fFilePanel)
- {
- delete_sem(fFilePanelSem);
- fFilePanelSem = -1;
- }
+ switch (m->what) {
+ case 'save':
+ {
+ entry_ref refDirectory;
+ m->FindRef("directory", &refDirectory);
+ fBrowsedPath.SetTo(&refDirectory);
+ BString strName;
+ m->FindString("name", &strName);
+ fBrowsedPath.Append(strName.String());
+ }
+ break;
+ case 'open':
+ {
+ entry_ref ref;
+ m->FindRef("refs", &ref);
+ fBrowsedPath.SetTo(&ref);
+ }
+ break;
+ case B_CANCEL:
+ {
+ BFilePanel *panel;
+ m->FindPointer("source", (void**)&panel);
+ if (fFilePanelSem != -1 && panel == fFilePanel)
+ {
+ delete_sem(fFilePanelSem);
+ fFilePanelSem = -1;
+ }
- }
- break;
- default:
- Inherited::MessageReceived(m);
- break;
- }
+ }
+ break;
+ default:
+ Inherited::MessageReceived(m);
+ break;
+ }
}
- bool
+ bool
VimApp::QuitRequested()
{
- (void)Inherited::QuitRequested();
- return false;
+ (void)Inherited::QuitRequested();
+ return false;
}
// ---------------- VimWindow ----------------
VimWindow::VimWindow():
- BWindow(BRect(40, 40, 150, 150),
- "Vim",
- B_TITLED_WINDOW,
- 0,
- B_CURRENT_WORKSPACE)
+ BWindow(BRect(40, 40, 150, 150),
+ "Vim",
+ B_TITLED_WINDOW,
+ 0,
+ B_CURRENT_WORKSPACE)
{
- init();
+ init();
}
VimWindow::~VimWindow()
{
- if (formView) {
- RemoveChild(formView);
- delete formView;
- }
- gui.vimWindow = NULL;
+ if (formView) {
+ RemoveChild(formView);
+ delete formView;
+ }
+ gui.vimWindow = NULL;
}
- void
+ void
VimWindow::init()
{
- // Attach the VimFormView
- formView = new VimFormView(Bounds());
- if (formView != NULL) {
- AddChild(formView);
- }
+ // Attach the VimFormView
+ formView = new VimFormView(Bounds());
+ if (formView != NULL) {
+ AddChild(formView);
+ }
}
#if 0 // disabled in zeta patch
- void
+ void
VimWindow::DispatchMessage(BMessage *m, BHandler *h)
{
- /*
- * Route B_MOUSE_UP messages to MouseUp(), in
- * a manner that should be compatible with the
- * intended future system behaviour.
- */
- switch (m->what) {
- case B_MOUSE_UP:
- // if (!h) h = PreferredHandler();
- // gcc isn't happy without this extra set of braces, complains about
- // jump to case label crosses init of 'class BView * v'
- // richard@whitequeen.com jul 99
- {
- BView *v = dynamic_cast<BView *>(h);
- if (v) {
- // m->PrintToStream();
- BPoint where;
- m->FindPoint("where", &where);
- v->MouseUp(where);
- } else {
- Inherited::DispatchMessage(m, h);
- }
- }
- break;
- default:
- Inherited::DispatchMessage(m, h);
- }
+ /*
+ * Route B_MOUSE_UP messages to MouseUp(), in
+ * a manner that should be compatible with the
+ * intended future system behaviour.
+ */
+ switch (m->what) {
+ case B_MOUSE_UP:
+ // if (!h) h = PreferredHandler();
+ // gcc isn't happy without this extra set of braces, complains about
+ // jump to case label crosses init of 'class BView * v'
+ // richard@whitequeen.com jul 99
+ {
+ BView *v = dynamic_cast<BView *>(h);
+ if (v) {
+ // m->PrintToStream();
+ BPoint where;
+ m->FindPoint("where", &where);
+ v->MouseUp(where);
+ } else {
+ Inherited::DispatchMessage(m, h);
+ }
+ }
+ break;
+ default:
+ Inherited::DispatchMessage(m, h);
+ }
}
#endif
- void
+ void
VimWindow::WindowActivated(bool active)
{
- Inherited::WindowActivated(active);
- // the textArea gets the keyboard action
- if (active && gui.vimTextArea)
- gui.vimTextArea->MakeFocus(true);
+ Inherited::WindowActivated(active);
+ // the textArea gets the keyboard action
+ if (active && gui.vimTextArea)
+ gui.vimTextArea->MakeFocus(true);
- struct VimFocusMsg fm;
- fm.active = active;
+ struct VimFocusMsg fm;
+ fm.active = active;
- write_port(gui.vdcmp, VimMsg::Focus, &fm, sizeof(fm));
+ write_port(gui.vdcmp, VimMsg::Focus, &fm, sizeof(fm));
}
- bool
+ bool
VimWindow::QuitRequested()
{
- struct VimKeyMsg km;
- km.length = 5;
- memcpy((char *)km.chars, "\033:qa\r", km.length);
- km.csi_escape = false;
- write_port(gui.vdcmp, VimMsg::Key, &km, sizeof(km));
- return false;
+ struct VimKeyMsg km;
+ km.length = 5;
+ memcpy((char *)km.chars, "\033:qa\r", km.length);
+ km.csi_escape = false;
+ write_port(gui.vdcmp, VimMsg::Key, &km, sizeof(km));
+ return false;
}
// ---------------- VimFormView ----------------
VimFormView::VimFormView(BRect frame):
- BView(frame, "VimFormView", B_FOLLOW_ALL_SIDES,
- B_WILL_DRAW | B_FRAME_EVENTS),
- menuBar(NULL),
+ BView(frame, "VimFormView", B_FOLLOW_ALL_SIDES,
+ B_WILL_DRAW | B_FRAME_EVENTS),
+ menuBar(NULL),
#ifdef FEAT_TOOLBAR
- toolBar(NULL),
+ toolBar(NULL),
#endif
#ifdef FEAT_GUI_TABLINE
-// showingTabLine(false),
- tabLine(NULL),
+// showingTabLine(false),
+ tabLine(NULL),
#endif
- textArea(NULL)
+ textArea(NULL)
{
- init(frame);
+ init(frame);
}
VimFormView::~VimFormView()
{
- if (menuBar) {
- RemoveChild(menuBar);
+ if (menuBar) {
+ RemoveChild(menuBar);
#ifdef never
- // deleting the menuBar leads to SEGV on exit
- // richard@whitequeen.com Jul 99
- delete menuBar;
+ // deleting the menuBar leads to SEGV on exit
+ // richard@whitequeen.com Jul 99
+ delete menuBar;
#endif
- }
+ }
#ifdef FEAT_TOOLBAR
- delete toolBar;
+ delete toolBar;
#endif
#ifdef FEAT_GUI_TABLINE
- delete tabLine;
+ delete tabLine;
#endif
- if (textArea) {
- RemoveChild(textArea);
- delete textArea;
- }
- gui.vimForm = NULL;
+ if (textArea) {
+ RemoveChild(textArea);
+ delete textArea;
+ }
+ gui.vimForm = NULL;
}
- void
+ void
VimFormView::init(BRect frame)
{
- menuBar = new BMenuBar(BRect(0,0,-MENUBAR_MARGIN,-MENUBAR_MARGIN),
- "VimMenuBar");
+ menuBar = new BMenuBar(BRect(0,0,-MENUBAR_MARGIN,-MENUBAR_MARGIN),
+ "VimMenuBar");
- AddChild(menuBar);
+ AddChild(menuBar);
#ifdef FEAT_TOOLBAR
- toolBar = new VimToolbar(BRect(0,0,0,0), "VimToolBar");
- toolBar->PrepareButtonBitmaps();
- AddChild(toolBar);
+ toolBar = new VimToolbar(BRect(0,0,0,0), "VimToolBar");
+ toolBar->PrepareButtonBitmaps();
+ AddChild(toolBar);
#endif
#ifdef FEAT_GUI_TABLINE
- tabLine = new VimTabLine(BRect(0,0,0,0));
-// tabLine->PrepareButtonBitmaps();
- AddChild(tabLine);
+ tabLine = new VimTabLine(BRect(0,0,0,0));
+// tabLine->PrepareButtonBitmaps();
+ AddChild(tabLine);
#endif
- BRect remaining = frame;
- textArea = new VimTextAreaView(remaining);
- AddChild(textArea);
- // The textArea will be resized later when menus are added
+ BRect remaining = frame;
+ textArea = new VimTextAreaView(remaining);
+ AddChild(textArea);
+ // The textArea will be resized later when menus are added
- gui.vimForm = this;
+ gui.vimForm = this;
}
#ifdef FEAT_TOOLBAR
- float
+ float
VimFormView::ToolbarHeight() const
{
- return toolBar ? toolBar->ToolbarHeight() : 0.;
+ return toolBar ? toolBar->ToolbarHeight() : 0.;
}
#endif
#ifdef FEAT_GUI_TABLINE
- float
+ float
VimFormView::TablineHeight() const
{
- return (tabLine && IsShowingTabLine()) ? tabLine->TablineHeight() : 0.;
+ return (tabLine && IsShowingTabLine()) ? tabLine->TablineHeight() : 0.;
}
#endif
- void
+ void
VimFormView::AllAttached()
{
+ /*
+ * Apparently signals are inherited by the created thread -
+ * disable the most annoying ones.
+ */
+ signal(SIGINT, SIG_IGN);
+ signal(SIGQUIT, SIG_IGN);
+
+ if (menuBar && textArea) {
/*
- * Apparently signals are inherited by the created thread -
- * disable the most annoying ones.
+ * Resize the textArea to fill the space left over by the menu.
+ * This is somewhat futile since it will be done again once
+ * menus are added to the menu bar.
*/
- signal(SIGINT, SIG_IGN);
- signal(SIGQUIT, SIG_IGN);
-
- if (menuBar && textArea) {
- /*
- * Resize the textArea to fill the space left over by the menu.
- * This is somewhat futile since it will be done again once
- * menus are added to the menu bar.
- */
- BRect remaining = Bounds();
+ BRect remaining = Bounds();
#ifdef FEAT_MENU
- remaining.top += MenuHeight();
- menuBar->ResizeTo(remaining.right, remaining.top);
- gui.menu_height = (int) MenuHeight();
+ remaining.top += MenuHeight();
+ menuBar->ResizeTo(remaining.right, remaining.top);
+ gui.menu_height = (int) MenuHeight();
#endif
#ifdef FEAT_TOOLBAR
- toolBar->MoveTo(remaining.left, remaining.top);
- toolBar->ResizeTo(remaining.right, ToolbarHeight());
- remaining.top += ToolbarHeight();
- gui.toolbar_height = ToolbarHeight();
+ toolBar->MoveTo(remaining.left, remaining.top);
+ toolBar->ResizeTo(remaining.right, ToolbarHeight());
+ remaining.top += ToolbarHeight();
+ gui.toolbar_height = ToolbarHeight();
#endif
#ifdef FEAT_GUI_TABLINE
- tabLine->MoveTo(remaining.left, remaining.top);
- tabLine->ResizeTo(remaining.right + 1, TablineHeight());
- remaining.top += TablineHeight();
- gui.tabline_height = TablineHeight();
+ tabLine->MoveTo(remaining.left, remaining.top);
+ tabLine->ResizeTo(remaining.right + 1, TablineHeight());
+ remaining.top += TablineHeight();
+ gui.tabline_height = TablineHeight();
#endif
- textArea->ResizeTo(remaining.Width(), remaining.Height());
- textArea->MoveTo(remaining.left, remaining.top);
- }
+ textArea->ResizeTo(remaining.Width(), remaining.Height());
+ textArea->MoveTo(remaining.left, remaining.top);
+ }
- Inherited::AllAttached();
+ Inherited::AllAttached();
}
- void
+ void
VimFormView::FrameResized(float new_width, float new_height)
{
- struct VimResizeMsg sm;
- int adjust_h, adjust_w;
+ struct VimResizeMsg sm;
+ int adjust_h, adjust_w;
- new_width += 1; // adjust from width to number of pixels occupied
- new_height += 1;
+ new_width += 1; // adjust from width to number of pixels occupied
+ new_height += 1;
- sm.width = (int) new_width;
- sm.height = (int) new_height;
- adjust_w = ((int)new_width - gui_get_base_width()) % gui.char_width;
- adjust_h = ((int)new_height - gui_get_base_height()) % gui.char_height;
+ sm.width = (int) new_width;
+ sm.height = (int) new_height;
+ adjust_w = ((int)new_width - gui_get_base_width()) % gui.char_width;
+ adjust_h = ((int)new_height - gui_get_base_height()) % gui.char_height;
- if (adjust_w > 0 || adjust_h > 0) {
- sm.width -= adjust_w;
- sm.height -= adjust_h;
- }
+ if (adjust_w > 0 || adjust_h > 0) {
+ sm.width -= adjust_w;
+ sm.height -= adjust_h;
+ }
- write_port(gui.vdcmp, VimMsg::Resize, &sm, sizeof(sm));
- // calls gui_resize_shell(new_width, new_height);
+ write_port(gui.vdcmp, VimMsg::Resize, &sm, sizeof(sm));
+ // calls gui_resize_shell(new_width, new_height);
- return;
+ return;
- /*
- * The area below the vertical scrollbar is erased to the colour
- * set with SetViewColor() automatically, because we had set
- * B_WILL_DRAW. Resizing the window tight around the vertical
- * scroll bar also helps to avoid debris.
- */
+ /*
+ * The area below the vertical scrollbar is erased to the colour
+ * set with SetViewColor() automatically, because we had set
+ * B_WILL_DRAW. Resizing the window tight around the vertical
+ * scroll bar also helps to avoid debris.
+ */
}
// ---------------- VimTextAreaView ----------------
VimTextAreaView::VimTextAreaView(BRect frame):
- BView(frame, "VimTextAreaView", B_FOLLOW_ALL_SIDES,
+ BView(frame, "VimTextAreaView", B_FOLLOW_ALL_SIDES,
#ifdef FEAT_MBYTE_IME
- B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_INPUT_METHOD_AWARE),
+ B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_INPUT_METHOD_AWARE),
#else
- B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE),
+ B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE),
#endif
- mouseDragEventCount(0)
+ mouseDragEventCount(0)
{
#ifdef FEAT_MBYTE_IME
- IMData.messenger = NULL;
- IMData.message = NULL;
+ IMData.messenger = NULL;
+ IMData.message = NULL;
#endif
- init(frame);
+ init(frame);
}
VimTextAreaView::~VimTextAreaView()
{
- gui.vimTextArea = NULL;
+ gui.vimTextArea = NULL;
}
- void
+ void
VimTextAreaView::init(BRect frame)
{
- // set up global var for fast access
- gui.vimTextArea = this;
+ // set up global var for fast access
+ gui.vimTextArea = this;
- /*
- * Tell the app server not to erase the view: we will
- * fill it in completely by ourselves.
- * (Does this really work? Even if not, it won't harm either.)
- */
- SetViewColor(B_TRANSPARENT_32_BIT);
+ /*
+ * Tell the app server not to erase the view: we will
+ * fill it in completely by ourselves.
+ * (Does this really work? Even if not, it won't harm either.)
+ */
+ SetViewColor(B_TRANSPARENT_32_BIT);
#define PEN_WIDTH 1
- SetPenSize(PEN_WIDTH);
+ SetPenSize(PEN_WIDTH);
#define W_WIDTH(curwin) 0
}
- void
+ void
VimTextAreaView::Draw(BRect updateRect)
{
- /*
- * XXX Other ports call here:
- * out_flush(); * make sure all output has been processed *
- * but we can't do that, since it involves too much information
- * that is owned by other threads...
- */
-
- /*
- * No need to use gui.vimWindow->Lock(): we are locked already.
- * However, it would not hurt.
- */
- rgb_color rgb = GUI_TO_RGB(gui.back_pixel);
- SetLowColor(rgb);
- FillRect(updateRect, B_SOLID_LOW);
- gui_redraw((int) updateRect.left, (int) updateRect.top,
- (int) (updateRect.Width() + PEN_WIDTH), (int) (updateRect.Height() + PEN_WIDTH));
-
- // Clear the border areas if needed
- SetLowColor(rgb);
-
- if (updateRect.left < FILL_X(0)) // left border
- FillRect(BRect(updateRect.left, updateRect.top,
- FILL_X(0)-PEN_WIDTH, updateRect.bottom), B_SOLID_LOW);
- if (updateRect.top < FILL_Y(0)) // top border
- FillRect(BRect(updateRect.left, updateRect.top,
- updateRect.right, FILL_Y(0)-PEN_WIDTH), B_SOLID_LOW);
- if (updateRect.right >= FILL_X(Columns)) // right border
- FillRect(BRect(FILL_X((int)Columns), updateRect.top,
- updateRect.right, updateRect.bottom), B_SOLID_LOW);
- if (updateRect.bottom >= FILL_Y(Rows)) // bottom border
- FillRect(BRect(updateRect.left, FILL_Y((int)Rows),
- updateRect.right, updateRect.bottom), B_SOLID_LOW);
+ /*
+ * XXX Other ports call here:
+ * out_flush(); * make sure all output has been processed *
+ * but we can't do that, since it involves too much information
+ * that is owned by other threads...
+ */
+
+ /*
+ * No need to use gui.vimWindow->Lock(): we are locked already.
+ * However, it would not hurt.
+ */
+ rgb_color rgb = GUI_TO_RGB(gui.back_pixel);
+ SetLowColor(rgb);
+ FillRect(updateRect, B_SOLID_LOW);
+ gui_redraw((int) updateRect.left, (int) updateRect.top,
+ (int) (updateRect.Width() + PEN_WIDTH), (int) (updateRect.Height() + PEN_WIDTH));
+
+ // Clear the border areas if needed
+ SetLowColor(rgb);
+
+ if (updateRect.left < FILL_X(0)) // left border
+ FillRect(BRect(updateRect.left, updateRect.top,
+ FILL_X(0)-PEN_WIDTH, updateRect.bottom), B_SOLID_LOW);
+ if (updateRect.top < FILL_Y(0)) // top border
+ FillRect(BRect(updateRect.left, updateRect.top,
+ updateRect.right, FILL_Y(0)-PEN_WIDTH), B_SOLID_LOW);
+ if (updateRect.right >= FILL_X(Columns)) // right border
+ FillRect(BRect(FILL_X((int)Columns), updateRect.top,
+ updateRect.right, updateRect.bottom), B_SOLID_LOW);
+ if (updateRect.bottom >= FILL_Y(Rows)) // bottom border
+ FillRect(BRect(updateRect.left, FILL_Y((int)Rows),
+ updateRect.right, updateRect.bottom), B_SOLID_LOW);
#ifdef FEAT_MBYTE_IME
- DrawIMString();
+ DrawIMString();
#endif
}
- void
+ void
VimTextAreaView::KeyDown(const char *bytes, int32 numBytes)
{
- struct VimKeyMsg km;
- char_u *dest = km.chars;
-
- bool canHaveVimModifiers = false;
-
- BMessage *msg = Window()->CurrentMessage();
- assert(msg);
- // msg->PrintToStream();
+ struct VimKeyMsg km;
+ char_u *dest = km.chars;
+
+ bool canHaveVimModifiers = false;
+
+ BMessage *msg = Window()->CurrentMessage();
+ assert(msg);
+ // msg->PrintToStream();
+
+ /*
+ * Convert special keys to Vim codes.
+ * I think it is better to do it in the window thread
+ * so we use at least a little bit of the potential
+ * of our 2 CPUs. Besides, due to the fantastic mapping
+ * of special keys to UTF-8, we have quite some work to
+ * do...
+ * TODO: I'm not quite happy with detection of special
+ * keys. Perhaps I should use scan codes after all...
+ */
+ if (numBytes > 1) {
+ // This cannot be a special key
+ if (numBytes > KEY_MSG_BUFSIZ)
+ numBytes = KEY_MSG_BUFSIZ; // should never happen... ???
+ km.length = numBytes;
+ memcpy((char *)dest, bytes, numBytes);
+ km.csi_escape = true;
+ } else {
+ int32 scancode = 0;
+ msg->FindInt32("key", &scancode);
+
+ int32 beModifiers = 0;
+ msg->FindInt32("modifiers", &beModifiers);
+
+ char_u string[3];
+ int len = 0;
+ km.length = 0;
/*
- * Convert special keys to Vim codes.
- * I think it is better to do it in the window thread
- * so we use at least a little bit of the potential
- * of our 2 CPUs. Besides, due to the fantastic mapping
- * of special keys to UTF-8, we have quite some work to
- * do...
- * TODO: I'm not quite happy with detection of special
- * keys. Perhaps I should use scan codes after all...
+ * For normal, printable ASCII characters, don't look them up
+ * to check if they might be a special key. They aren't.
*/
- if (numBytes > 1) {
- // This cannot be a special key
- if (numBytes > KEY_MSG_BUFSIZ)
- numBytes = KEY_MSG_BUFSIZ; // should never happen... ???
- km.length = numBytes;
- memcpy((char *)dest, bytes, numBytes);
- km.csi_escape = true;
- } else {
- int32 scancode = 0;
- msg->FindInt32("key", &scancode);
-
- int32 beModifiers = 0;
- msg->FindInt32("modifiers", &beModifiers);
-
- char_u string[3];
- int len = 0;
- km.length = 0;
+ assert(B_BACKSPACE <= 0x20);
+ assert(B_DELETE == 0x7F);
+ if (((char_u)bytes[0] <= 0x20 || (char_u)bytes[0] == 0x7F) &&
+ numBytes == 1) {
+ /*
+ * Due to the great nature of Be's mapping of special keys,
+ * viz. into the range of the control characters,
+ * we can only be sure it is *really* a special key if
+ * if it is special without using ctrl. So, only if ctrl is
+ * used, we need to check it unmodified.
+ */
+ if (beModifiers & B_CONTROL_KEY) {
+ int index = keyMap->normal_map[scancode];
+ int newNumBytes = keyMapChars[index];
+ char_u *newBytes = (char_u *)&keyMapChars[index + 1];
/*
- * For normal, printable ASCII characters, don't look them up
- * to check if they might be a special key. They aren't.
+ * Check if still special without the control key.
+ * This is needed for BACKSPACE: that key does produce
+ * different values with modifiers (DEL).
+ * Otherwise we could simply have checked for equality.
*/
- assert(B_BACKSPACE <= 0x20);
- assert(B_DELETE == 0x7F);
- if (((char_u)bytes[0] <= 0x20 || (char_u)bytes[0] == 0x7F) &&
- numBytes == 1) {
- /*
- * Due to the great nature of Be's mapping of special keys,
- * viz. into the range of the control characters,
- * we can only be sure it is *really* a special key if
- * if it is special without using ctrl. So, only if ctrl is
- * used, we need to check it unmodified.
- */
- if (beModifiers & B_CONTROL_KEY) {
- int index = keyMap->normal_map[scancode];
- int newNumBytes = keyMapChars[index];
- char_u *newBytes = (char_u *)&keyMapChars[index + 1];
-
- /*
- * Check if still special without the control key.
- * This is needed for BACKSPACE: that key does produce
- * different values with modifiers (DEL).
- * Otherwise we could simply have checked for equality.
- */
- if (newNumBytes != 1 || (*newBytes > 0x20 &&
- *newBytes != 0x7F )) {
- goto notspecial;
- }
- bytes = (char *)newBytes;
- }
- canHaveVimModifiers = true;
-
- uint16 beoskey;
- int first, last;
-
- /*
- * If numBytes == 0 that probably always indicates a special key.
- * (does not happen yet)
- */
- if (numBytes == 0 || bytes[0] == B_FUNCTION_KEY) {
- beoskey = F(scancode);
- first = FIRST_FUNCTION_KEY;
- last = NUM_SPECIAL_KEYS;
- } else if (*bytes == '\n' && scancode == 0x47) {
- // remap the (non-keypad) ENTER key from \n to \r.
- string[0] = '\r';
- len = 1;
- first = last = 0;
- } else {
- beoskey = K(bytes[0]);
- first = 0;
- last = FIRST_FUNCTION_KEY;
- }
-
- for (int i = first; i < last; i++) {
- if (special_keys[i].BeKeys == beoskey) {
- string[0] = CSI;
- string[1] = special_keys[i].vim_code0;
- string[2] = special_keys[i].vim_code1;
- len = 3;
- }
- }
+ if (newNumBytes != 1 || (*newBytes > 0x20 &&
+ *newBytes != 0x7F )) {
+ goto notspecial;
}
-notspecial:
- if (len == 0) {
- string[0] = bytes[0];
- len = 1;
+ bytes = (char *)newBytes;
+ }
+ canHaveVimModifiers = true;
+
+ uint16 beoskey;
+ int first, last;
+
+ /*
+ * If numBytes == 0 that probably always indicates a special key.
+ * (does not happen yet)
+ */
+ if (numBytes == 0 || bytes[0] == B_FUNCTION_KEY) {
+ beoskey = F(scancode);
+ first = FIRST_FUNCTION_KEY;
+ last = NUM_SPECIAL_KEYS;
+ } else if (*bytes == '\n' && scancode == 0x47) {
+ // remap the (non-keypad) ENTER key from \n to \r.
+ string[0] = '\r';
+ len = 1;
+ first = last = 0;
+ } else {
+ beoskey = K(bytes[0]);
+ first = 0;
+ last = FIRST_FUNCTION_KEY;
+ }
+
+ for (int i = first; i < last; i++) {
+ if (special_keys[i].BeKeys == beoskey) {
+ string[0] = CSI;
+ string[1] = special_keys[i].vim_code0;
+ string[2] = special_keys[i].vim_code1;
+ len = 3;
}
+ }
+ }
+notspecial:
+ if (len == 0) {
+ string[0] = bytes[0];
+ len = 1;
+ }
- // Special keys (and a few others) may have modifiers
+ // Special keys (and a few others) may have modifiers
#if 0
- if (len == 3 ||
- bytes[0] == B_SPACE || bytes[0] == B_TAB ||
- bytes[0] == B_RETURN || bytes[0] == '\r' ||
- bytes[0] == B_ESCAPE)
+ if (len == 3 ||
+ bytes[0] == B_SPACE || bytes[0] == B_TAB ||
+ bytes[0] == B_RETURN || bytes[0] == '\r' ||
+ bytes[0] == B_ESCAPE)
#else
- if (canHaveVimModifiers)
+ if (canHaveVimModifiers)
#endif
- {
- int modifiers;
- modifiers = 0;
- if (beModifiers & B_SHIFT_KEY)
- modifiers |= MOD_MASK_SHIFT;
- if (beModifiers & B_CONTROL_KEY)
- modifiers |= MOD_MASK_CTRL;
- if (beModifiers & B_OPTION_KEY)
- modifiers |= MOD_MASK_ALT;
-
- /*
- * For some keys a shift modifier is translated into another key
- * code. Do we need to handle the case where len != 1 and
- * string[0] != CSI? (Not for BeOS, since len == 3 implies
- * string[0] == CSI...)
- */
- int key;
- if (string[0] == CSI && len == 3)
- key = TO_SPECIAL(string[1], string[2]);
- else
- key = string[0];
- key = simplify_key(key, &modifiers);
- if (IS_SPECIAL(key))
- {
- string[0] = CSI;
- string[1] = K_SECOND(key);
- string[2] = K_THIRD(key);
- len = 3;
- }
- else
- {
- string[0] = key;
- len = 1;
- }
+ {
+ int modifiers;
+ modifiers = 0;
+ if (beModifiers & B_SHIFT_KEY)
+ modifiers |= MOD_MASK_SHIFT;
+ if (beModifiers & B_CONTROL_KEY)
+ modifiers |= MOD_MASK_CTRL;
+ if (beModifiers & B_OPTION_KEY)
+ modifiers |= MOD_MASK_ALT;
- if (modifiers)
- {
- *dest++ = CSI;
- *dest++ = KS_MODIFIER;
- *dest++ = modifiers;
- km.length = 3;
- }
- }
- memcpy((char *)dest, string, len);
- km.length += len;
- km.csi_escape = false;
- }
+ /*
+ * For some keys a shift modifier is translated into another key
+ * code. Do we need to handle the case where len != 1 and
+ * string[0] != CSI? (Not for BeOS, since len == 3 implies
+ * string[0] == CSI...)
+ */
+ int key;
+ if (string[0] == CSI && len == 3)
+ key = TO_SPECIAL(string[1], string[2]);
+ else
+ key = string[0];
+ key = simplify_key(key, &modifiers);
+ if (IS_SPECIAL(key))
+ {
+ string[0] = CSI;
+ string[1] = K_SECOND(key);
+ string[2] = K_THIRD(key);
+ len = 3;
+ }
+ else
+ {
+ string[0] = key;
+ len = 1;
+ }
- write_port(gui.vdcmp, VimMsg::Key, &km, sizeof(km));
+ if (modifiers)
+ {
+ *dest++ = CSI;
+ *dest++ = KS_MODIFIER;
+ *dest++ = modifiers;
+ km.length = 3;
+ }
+ }
+ memcpy((char *)dest, string, len);
+ km.length += len;
+ km.csi_escape = false;
+ }
- /*
- * blank out the pointer if necessary
- */
- if (p_mh && !gui.pointer_hidden)
- {
- guiBlankMouse(true);
- gui.pointer_hidden = TRUE;
- }
+ write_port(gui.vdcmp, VimMsg::Key, &km, sizeof(km));
+
+ /*
+ * blank out the pointer if necessary
+ */
+ if (p_mh && !gui.pointer_hidden)
+ {
+ guiBlankMouse(true);
+ gui.pointer_hidden = TRUE;
+ }
}
void
VimTextAreaView::guiSendMouseEvent(
- int button,
- int x,
- int y,
- int repeated_click,
- int_u modifiers)
-{
- VimMouseMsg mm;
-
- mm.button = button;
- mm.x = x;
- mm.y = y;
- mm.repeated_click = repeated_click;
- mm.modifiers = modifiers;
-
- write_port(gui.vdcmp, VimMsg::Mouse, &mm, sizeof(mm));
- // calls gui_send_mouse_event()
-
- /*
- * if our pointer is currently hidden, then we should show it.
- */
- if (gui.pointer_hidden)
- {
- guiBlankMouse(false);
- gui.pointer_hidden = FALSE;
- }
+ int button,
+ int x,
+ int y,
+ int repeated_click,
+ int_u modifiers)
+{
+ VimMouseMsg mm;
+
+ mm.button = button;
+ mm.x = x;
+ mm.y = y;
+ mm.repeated_click = repeated_click;
+ mm.modifiers = modifiers;
+
+ write_port(gui.vdcmp, VimMsg::Mouse, &mm, sizeof(mm));
+ // calls gui_send_mouse_event()
+
+ /*
+ * if our pointer is currently hidden, then we should show it.
+ */
+ if (gui.pointer_hidden)
+ {
+ guiBlankMouse(false);
+ gui.pointer_hidden = FALSE;
+ }
}
void
VimTextAreaView::guiMouseMoved(
- int x,
- int y)
+ int x,
+ int y)
{
- VimMouseMovedMsg mm;
+ VimMouseMovedMsg mm;
- mm.x = x;
- mm.y = y;
+ mm.x = x;
+ mm.y = y;
- write_port(gui.vdcmp, VimMsg::MouseMoved, &mm, sizeof(mm));
+ write_port(gui.vdcmp, VimMsg::MouseMoved, &mm, sizeof(mm));
- if (gui.pointer_hidden)
- {
- guiBlankMouse(false);
- gui.pointer_hidden = FALSE;
- }
+ if (gui.pointer_hidden)
+ {
+ guiBlankMouse(false);
+ gui.pointer_hidden = FALSE;
+ }
}
- void
+ void
VimTextAreaView::guiBlankMouse(bool should_hide)
{
- if (should_hide) {
- // gui.vimApp->HideCursor();
- gui.vimApp->ObscureCursor();
- /*
- * ObscureCursor() would even be easier, but then
- * Vim's idea of mouse visibility does not necessarily
- * correspond to reality.
- */
- } else {
- // gui.vimApp->ShowCursor();
- }
+ if (should_hide) {
+ // gui.vimApp->HideCursor();
+ gui.vimApp->ObscureCursor();
+ /*
+ * ObscureCursor() would even be easier, but then
+ * Vim's idea of mouse visibility does not necessarily
+ * correspond to reality.
+ */
+ } else {
+ // gui.vimApp->ShowCursor();
+ }
}
- int_u
+ int_u
VimTextAreaView::mouseModifiersToVim(int32 beModifiers)
{
- int_u vim_modifiers = 0x0;
+ int_u vim_modifiers = 0x0;
- if (beModifiers & B_SHIFT_KEY)
- vim_modifiers |= MOUSE_SHIFT;
- if (beModifiers & B_CONTROL_KEY)
- vim_modifiers |= MOUSE_CTRL;
- if (beModifiers & B_OPTION_KEY) // Alt or Meta key
- vim_modifiers |= MOUSE_ALT;
+ if (beModifiers & B_SHIFT_KEY)
+ vim_modifiers |= MOUSE_SHIFT;
+ if (beModifiers & B_CONTROL_KEY)
+ vim_modifiers |= MOUSE_CTRL;
+ if (beModifiers & B_OPTION_KEY) // Alt or Meta key
+ vim_modifiers |= MOUSE_ALT;
- return vim_modifiers;
+ return vim_modifiers;
}
- void
+ void
VimTextAreaView::MouseDown(BPoint point)
{
- BMessage *m = Window()->CurrentMessage();
- assert(m);
+ BMessage *m = Window()->CurrentMessage();
+ assert(m);
- int32 buttons = 0;
- m->FindInt32("buttons", &buttons);
+ int32 buttons = 0;
+ m->FindInt32("buttons", &buttons);
- int vimButton;
+ int vimButton;
- if (buttons & B_PRIMARY_MOUSE_BUTTON)
- vimButton = MOUSE_LEFT;
- else if (buttons & B_SECONDARY_MOUSE_BUTTON)
- vimButton = MOUSE_RIGHT;
- else if (buttons & B_TERTIARY_MOUSE_BUTTON)
- vimButton = MOUSE_MIDDLE;
- else
- return; // Unknown button
+ if (buttons & B_PRIMARY_MOUSE_BUTTON)
+ vimButton = MOUSE_LEFT;
+ else if (buttons & B_SECONDARY_MOUSE_BUTTON)
+ vimButton = MOUSE_RIGHT;
+ else if (buttons & B_TERTIARY_MOUSE_BUTTON)
+ vimButton = MOUSE_MIDDLE;
+ else
+ return; // Unknown button
- vimMouseButton = 1; // don't care which one
+ vimMouseButton = 1; // don't care which one
- // Handle multiple clicks
- int32 clicks = 0;
- m->FindInt32("clicks", &clicks);
+ // Handle multiple clicks
+ int32 clicks = 0;
+ m->FindInt32("clicks", &clicks);
- int32 modifiers = 0;
- m->FindInt32("modifiers", &modifiers);
+ int32 modifiers = 0;
+ m->FindInt32("modifiers", &modifiers);
- vimMouseModifiers = mouseModifiersToVim(modifiers);
+ vimMouseModifiers = mouseModifiersToVim(modifiers);
- guiSendMouseEvent(vimButton, point.x, point.y,
- clicks > 1 /* = repeated_click*/, vimMouseModifiers);
+ guiSendMouseEvent(vimButton, point.x, point.y,
+ clicks > 1 /* = repeated_click*/, vimMouseModifiers);
}
- void
+ void
VimTextAreaView::MouseUp(BPoint point)
{
- vimMouseButton = 0;
+ vimMouseButton = 0;
- BMessage *m = Window()->CurrentMessage();
- assert(m);
- // m->PrintToStream();
+ BMessage *m = Window()->CurrentMessage();
+ assert(m);
+ // m->PrintToStream();
- int32 modifiers = 0;
- m->FindInt32("modifiers", &modifiers);
+ int32 modifiers = 0;
+ m->FindInt32("modifiers", &modifiers);
- vimMouseModifiers = mouseModifiersToVim(modifiers);
+ vimMouseModifiers = mouseModifiersToVim(modifiers);
- guiSendMouseEvent(MOUSE_RELEASE, point.x, point.y,
- 0 /* = repeated_click*/, vimMouseModifiers);
+ guiSendMouseEvent(MOUSE_RELEASE, point.x, point.y,
+ 0 /* = repeated_click*/, vimMouseModifiers);
- Inherited::MouseUp(point);
+ Inherited::MouseUp(point);
}
- void
+ void
VimTextAreaView::MouseMoved(BPoint point, uint32 transit, const BMessage *message)
{
- /*
- * if our pointer is currently hidden, then we should show it.
- */
- if (gui.pointer_hidden)
- {
- guiBlankMouse(false);
- gui.pointer_hidden = FALSE;
- }
+ /*
+ * if our pointer is currently hidden, then we should show it.
+ */
+ if (gui.pointer_hidden)
+ {
+ guiBlankMouse(false);
+ gui.pointer_hidden = FALSE;
+ }
- if (!vimMouseButton) { // could also check m->"buttons"
- guiMouseMoved(point.x, point.y);
- return;
- }
+ if (!vimMouseButton) { // could also check m->"buttons"
+ guiMouseMoved(point.x, point.y);
+ return;
+ }
- atomic_add(&mouseDragEventCount, 1);
+ atomic_add(&mouseDragEventCount, 1);
- // Don't care much about "transit"
- guiSendMouseEvent(MOUSE_DRAG, point.x, point.y, 0, vimMouseModifiers);
+ // Don't care much about "transit"
+ guiSendMouseEvent(MOUSE_DRAG, point.x, point.y, 0, vimMouseModifiers);
}
- void
+ void
VimTextAreaView::MessageReceived(BMessage *m)
{
- switch (m->what) {
- case 'menu':
- {
- VimMenuMsg mm;
- mm.guiMenu = NULL; // in case no pointer in msg
- m->FindPointer("VimMenu", (void **)&mm.guiMenu);
- write_port(gui.vdcmp, VimMsg::Menu, &mm, sizeof(mm));
- }
- break;
- case B_MOUSE_WHEEL_CHANGED:
- {
- VimScrollBar* scb = curwin->w_scrollbars[1].id;
- float small=0, big=0, dy=0;
- m->FindFloat("be:wheel_delta_y", &dy);
- scb->GetSteps(&small, &big);
- scb->SetValue(scb->Value()+small*dy*3);
- scb->ValueChanged(scb->Value());
+ switch (m->what) {
+ case 'menu':
+ {
+ VimMenuMsg mm;
+ mm.guiMenu = NULL; // in case no pointer in msg
+ m->FindPointer("VimMenu", (void **)&mm.guiMenu);
+ write_port(gui.vdcmp, VimMsg::Menu, &mm, sizeof(mm));
+ }
+ break;
+ case B_MOUSE_WHEEL_CHANGED:
+ {
+ VimScrollBar* scb = curwin->w_scrollbars[1].id;
+ float small=0, big=0, dy=0;
+ m->FindFloat("be:wheel_delta_y", &dy);
+ scb->GetSteps(&small, &big);
+ scb->SetValue(scb->Value()+small*dy*3);
+ scb->ValueChanged(scb->Value());
#if 0
- scb = curwin->w_scrollbars[0].id;
- scb->GetSteps(&small, &big);
- scb->SetValue(scb->Value()+small*dy);
- scb->ValueChanged(scb->Value());
+ scb = curwin->w_scrollbars[0].id;
+ scb->GetSteps(&small, &big);
+ scb->SetValue(scb->Value()+small*dy);
+ scb->ValueChanged(scb->Value());
#endif
- }
- break;
+ }
+ break;
#ifdef FEAT_MBYTE_IME
- case B_INPUT_METHOD_EVENT:
+ case B_INPUT_METHOD_EVENT:
+ {
+ int32 opcode;
+ m->FindInt32("be:opcode", &opcode);
+ switch(opcode)
+ {
+ case B_INPUT_METHOD_STARTED:
+ if (!IMData.messenger) delete IMData.messenger;
+ IMData.messenger = new BMessenger();
+ m->FindMessenger("be:reply_to", IMData.messenger);
+ break;
+ case B_INPUT_METHOD_CHANGED:
{
- int32 opcode;
- m->FindInt32("be:opcode", &opcode);
- switch(opcode)
+ BString str;
+ bool confirmed;
+ if (IMData.message) *(IMData.message) = *m;
+ else IMData.message = new BMessage(*m);
+ DrawIMString();
+ m->FindBool("be:confirmed", &confirmed);
+ if (confirmed)
+ {
+ m->FindString("be:string", &str);
+ char_u *chars = (char_u*)str.String();
+ struct VimKeyMsg km;
+ km.csi_escape = true;
+ int clen;
+ int i = 0;
+ while (i < str.Length())
{
- case B_INPUT_METHOD_STARTED:
- if(!IMData.messenger) delete IMData.messenger;
- IMData.messenger = new BMessenger();
- m->FindMessenger("be:reply_to", IMData.messenger);
- break;
- case B_INPUT_METHOD_CHANGED:
- {
- BString str;
- bool confirmed;
- if(IMData.message) *(IMData.message) = *m;
- else IMData.message = new BMessage(*m);
- DrawIMString();
- m->FindBool("be:confirmed", &confirmed);
- if (confirmed)
- {
- m->FindString("be:string", &str);
- char_u *chars = (char_u*)str.String();
- struct VimKeyMsg km;
- km.csi_escape = true;
- int clen;
- int i = 0;
- while (i < str.Length())
- {
- clen = utf_ptr2len(chars+i);
- memcpy(km.chars, chars+i, clen);
- km.length = clen;
- write_port(gui.vdcmp, VimMsg::Key, &km, sizeof(km));
- i += clen;
- }
- }
- }
- break;
- case B_INPUT_METHOD_LOCATION_REQUEST:
- {
- BMessage msg(B_INPUT_METHOD_EVENT);
- msg.AddInt32("be:opcode", B_INPUT_METHOD_LOCATION_REQUEST);
- msg.AddPoint("be:location_reply", IMData.location);
- msg.AddFloat("be:height_reply", FILL_Y(1));
- IMData.messenger->SendMessage(&msg);
- }
- break;
- case B_INPUT_METHOD_STOPPED:
- delete IMData.messenger;
- delete IMData.message;
- IMData.messenger = NULL;
- IMData.message = NULL;
- break;
+ clen = utf_ptr2len(chars+i);
+ memcpy(km.chars, chars+i, clen);
+ km.length = clen;
+ write_port(gui.vdcmp, VimMsg::Key, &km, sizeof(km));
+ i += clen;
}
+ }
}
- // TODO: sz: break here???
-#endif
- default:
- if (m->WasDropped()) {
- BWindow *w = Window();
- w->DetachCurrentMessage();
- w->Minimize(false);
- VimApp::SendRefs(m, (modifiers() & B_SHIFT_KEY) != 0);
- } else {
- Inherited::MessageReceived(m);
+ break;
+ case B_INPUT_METHOD_LOCATION_REQUEST:
+ {
+ BMessage msg(B_INPUT_METHOD_EVENT);
+ msg.AddInt32("be:opcode", B_INPUT_METHOD_LOCATION_REQUEST);
+ msg.AddPoint("be:location_reply", IMData.location);
+ msg.AddFloat("be:height_reply", FILL_Y(1));
+ IMData.messenger->SendMessage(&msg);
}
break;
- }
+ case B_INPUT_METHOD_STOPPED:
+ delete IMData.messenger;
+ delete IMData.message;
+ IMData.messenger = NULL;
+ IMData.message = NULL;
+ break;
+ }
+ }
+ // TODO: sz: break here???
+#endif
+ default:
+ if (m->WasDropped()) {
+ BWindow *w = Window();
+ w->DetachCurrentMessage();
+ w->Minimize(false);
+ VimApp::SendRefs(m, (modifiers() & B_SHIFT_KEY) != 0);
+ } else {
+ Inherited::MessageReceived(m);
+ }
+ break;
+ }
}
- int
+ int
VimTextAreaView::mchInitFont(char_u *name)
{
- VimFont *newFont = (VimFont *)gui_mch_get_font(name, 1);
- if(newFont != NOFONT) {
- gui.norm_font = (GuiFont)newFont;
- gui_mch_set_font((GuiFont)newFont);
- if (name && STRCMP(name, "*") != 0)
- hl_set_font_name(name);
+ VimFont *newFont = (VimFont *)gui_mch_get_font(name, 1);
+ if (newFont != NOFONT) {
+ gui.norm_font = (GuiFont)newFont;
+ gui_mch_set_font((GuiFont)newFont);
+ if (name && STRCMP(name, "*") != 0)
+ hl_set_font_name(name);
- SetDrawingMode(B_OP_COPY);
+ SetDrawingMode(B_OP_COPY);
- /*
- * Try to load other fonts for bold, italic, and bold-italic.
- * We should also try to work out what font to use for these when they are
- * not specified by X resources, but we don't yet.
- */
- return OK;
- }
- return FAIL;
+ /*
+ * Try to load other fonts for bold, italic, and bold-italic.
+ * We should also try to work out what font to use for these when they are
+ * not specified by X resources, but we don't yet.
+ */
+ return OK;
+ }
+ return FAIL;
}
- void
+ void
VimTextAreaView::mchDrawString(int row, int col, char_u *s, int len, int flags)
{
- /*
- * First we must erase the area, because DrawString won't do
- * that for us. XXX Most of the time this is a waste of effort
- * since the bachground has been erased already... DRAW_TRANSP
- * should be set when appropriate!!!
- * (Rectangles include the bottom and right edge)
- */
- if (!(flags & DRAW_TRANSP)) {
- int cells;
- cells = 0;
- for(int i=0; i<len; i++) {
- int cn = utf_ptr2cells((char_u *)(s+i));
- if(cn<4) cells += cn;
- }
-
- BRect r(FILL_X(col), FILL_Y(row),
- FILL_X(col + cells) - PEN_WIDTH, FILL_Y(row + 1) - PEN_WIDTH);
- FillRect(r, B_SOLID_LOW);
+ /*
+ * First we must erase the area, because DrawString won't do
+ * that for us. XXX Most of the time this is a waste of effort
+ * since the bachground has been erased already... DRAW_TRANSP
+ * should be set when appropriate!!!
+ * (Rectangles include the bottom and right edge)
+ */
+ if (!(flags & DRAW_TRANSP)) {
+ int cells;
+ cells = 0;
+ for (int i=0; i<len; i++) {
+ int cn = utf_ptr2cells((char_u *)(s+i));
+ if (cn<4) cells += cn;
}
- BFont font;
- this->GetFont(&font);
- if(!font.IsFixed())
- {
- char* p = (char*)s;
- int32 clen, lastpos = 0;
- BPoint where;
- int cells;
- while((p - (char*)s) < len) {
- clen = utf_ptr2len((u_char*)p);
- where.Set(TEXT_X(col+lastpos), TEXT_Y(row));
- DrawString(p, clen, where);
- if (flags & DRAW_BOLD) {
- where.x += 1.0;
- SetDrawingMode(B_OP_BLEND);
- DrawString(p, clen, where);
- SetDrawingMode(B_OP_COPY);
- }
- cells = utf_ptr2cells((char_u *)p);
- if(cells<4) lastpos += cells;
- else lastpos++;
- p += clen;
- }
+ BRect r(FILL_X(col), FILL_Y(row),
+ FILL_X(col + cells) - PEN_WIDTH, FILL_Y(row + 1) - PEN_WIDTH);
+ FillRect(r, B_SOLID_LOW);
+ }
+
+ BFont font;
+ this->GetFont(&font);
+ if (!font.IsFixed())
+ {
+ char* p = (char*)s;
+ int32 clen, lastpos = 0;
+ BPoint where;
+ int cells;
+ while ((p - (char*)s) < len) {
+ clen = utf_ptr2len((u_char*)p);
+ where.Set(TEXT_X(col+lastpos), TEXT_Y(row));
+ DrawString(p, clen, where);
+ if (flags & DRAW_BOLD) {
+ where.x += 1.0;
+ SetDrawingMode(B_OP_BLEND);
+ DrawString(p, clen, where);
+ SetDrawingMode(B_OP_COPY);
+ }
+ cells = utf_ptr2cells((char_u *)p);
+ if (cells<4) lastpos += cells;
+ else lastpos++;
+ p += clen;
}
- else
- {
- BPoint where(TEXT_X(col), TEXT_Y(row));
- DrawString((char*)s, len, where);
- if (flags & DRAW_BOLD) {
- where.x += 1.0;
- SetDrawingMode(B_OP_BLEND);
- DrawString((char*)s, len, where);
- SetDrawingMode(B_OP_COPY);
- }
+ }
+ else
+ {
+ BPoint where(TEXT_X(col), TEXT_Y(row));
+ DrawString((char*)s, len, where);
+ if (flags & DRAW_BOLD) {
+ where.x += 1.0;
+ SetDrawingMode(B_OP_BLEND);
+ DrawString((char*)s, len, where);
+ SetDrawingMode(B_OP_COPY);
}
+ }
- if (flags & DRAW_UNDERL) {
- int cells;
- cells = 0;
- for(int i=0; i<len; i++) {
- int cn = utf_ptr2cells((char_u *)(s+i));
- if(cn<4) cells += cn;
- }
+ if (flags & DRAW_UNDERL) {
+ int cells;
+ cells = 0;
+ for (int i=0; i<len; i++) {
+ int cn = utf_ptr2cells((char_u *)(s+i));
+ if (cn<4) cells += cn;
+ }
- BPoint start(FILL_X(col), FILL_Y(row + 1) - PEN_WIDTH);
- BPoint end(FILL_X(col + cells) - PEN_WIDTH, start.y);
+ BPoint start(FILL_X(col), FILL_Y(row + 1) - PEN_WIDTH);
+ BPoint end(FILL_X(col + cells) - PEN_WIDTH, start.y);
- StrokeLine(start, end);
- }
+ StrokeLine(start, end);
+ }
}
void
VimTextAreaView::mchClearBlock(
- int row1,
- int col1,
- int row2,
- int col2)
-{
- BRect r(FILL_X(col1), FILL_Y(row1),
- FILL_X(col2 + 1) - PEN_WIDTH, FILL_Y(row2 + 1) - PEN_WIDTH);
- gui_mch_set_bg_color(gui.back_pixel);
- FillRect(r, B_SOLID_LOW);
+ int row1,
+ int col1,
+ int row2,
+ int col2)
+{
+ BRect r(FILL_X(col1), FILL_Y(row1),
+ FILL_X(col2 + 1) - PEN_WIDTH, FILL_Y(row2 + 1) - PEN_WIDTH);
+ gui_mch_set_bg_color(gui.back_pixel);
+ FillRect(r, B_SOLID_LOW);
}
- void
+ void
VimTextAreaView::mchClearAll()
{
- gui_mch_set_bg_color(gui.back_pixel);
- FillRect(Bounds(), B_SOLID_LOW);
+ gui_mch_set_bg_color(gui.back_pixel);
+ FillRect(Bounds(), B_SOLID_LOW);
}
/*
* mchDeleteLines() Lock()s the window by itself.
*/
- void
+ void
VimTextAreaView::mchDeleteLines(int row, int num_lines)
{
- BRect source, dest;
- source.left = FILL_X(gui.scroll_region_left);
- source.top = FILL_Y(row + num_lines);
- source.right = FILL_X(gui.scroll_region_right + 1) - PEN_WIDTH;
- source.bottom = FILL_Y(gui.scroll_region_bot + 1) - PEN_WIDTH;
+ BRect source, dest;
+ source.left = FILL_X(gui.scroll_region_left);
+ source.top = FILL_Y(row + num_lines);
+ source.right = FILL_X(gui.scroll_region_right + 1) - PEN_WIDTH;
+ source.bottom = FILL_Y(gui.scroll_region_bot + 1) - PEN_WIDTH;
- dest.left = FILL_X(gui.scroll_region_left);
- dest.top = FILL_Y(row);
- dest.right = FILL_X(gui.scroll_region_right + 1) - PEN_WIDTH;
- dest.bottom = FILL_Y(gui.scroll_region_bot - num_lines + 1) - PEN_WIDTH;
+ dest.left = FILL_X(gui.scroll_region_left);
+ dest.top = FILL_Y(row);
+ dest.right = FILL_X(gui.scroll_region_right + 1) - PEN_WIDTH;
+ dest.bottom = FILL_Y(gui.scroll_region_bot - num_lines + 1) - PEN_WIDTH;
- if (gui.vimWindow->Lock()) {
- // Clear one column more for when bold has spilled over
- CopyBits(source, dest);
- gui_clear_block(gui.scroll_region_bot - num_lines + 1,
- gui.scroll_region_left,
- gui.scroll_region_bot, gui.scroll_region_right);
+ if (gui.vimWindow->Lock()) {
+ // Clear one column more for when bold has spilled over
+ CopyBits(source, dest);
+ gui_clear_block(gui.scroll_region_bot - num_lines + 1,
+ gui.scroll_region_left,
+ gui.scroll_region_bot, gui.scroll_region_right);
- gui.vimWindow->Unlock();
- /*
- * The Draw() callback will be called now if some of the source
- * bits were not in the visible region.
- */
- }
- // gui_x11_check_copy_area();
- // }
+ gui.vimWindow->Unlock();
+ /*
+ * The Draw() callback will be called now if some of the source
+ * bits were not in the visible region.
+ */
+ }
+ // gui_x11_check_copy_area();
+ // }
}
/*
* mchInsertLines() Lock()s the window by itself.
*/
- void
+ void
VimTextAreaView::mchInsertLines(int row, int num_lines)
{
- BRect source, dest;
+ BRect source, dest;
- // XXX Attempt at a hack:
- gui.vimWindow->UpdateIfNeeded();
- source.left = FILL_X(gui.scroll_region_left);
- source.top = FILL_Y(row);
- source.right = FILL_X(gui.scroll_region_right + 1) - PEN_WIDTH;
- source.bottom = FILL_Y(gui.scroll_region_bot - num_lines + 1) - PEN_WIDTH;
+ // XXX Attempt at a hack:
+ gui.vimWindow->UpdateIfNeeded();
+ source.left = FILL_X(gui.scroll_region_left);
+ source.top = FILL_Y(row);
+ source.right = FILL_X(gui.scroll_region_right + 1) - PEN_WIDTH;
+ source.bottom = FILL_Y(gui.scroll_region_bot - num_lines + 1) - PEN_WIDTH;
- dest.left = FILL_X(gui.scroll_region_left);
- dest.top = FILL_Y(row + num_lines);
- dest.right = FILL_X(gui.scroll_region_right + 1) - PEN_WIDTH;
- dest.bottom = FILL_Y(gui.scroll_region_bot + 1) - PEN_WIDTH;
+ dest.left = FILL_X(gui.scroll_region_left);
+ dest.top = FILL_Y(row + num_lines);
+ dest.right = FILL_X(gui.scroll_region_right + 1) - PEN_WIDTH;
+ dest.bottom = FILL_Y(gui.scroll_region_bot + 1) - PEN_WIDTH;
- if (gui.vimWindow->Lock()) {
- // Clear one column more for when bold has spilled over
- CopyBits(source, dest);
- gui_clear_block(row, gui.scroll_region_left,
- row + num_lines - 1, gui.scroll_region_right);
+ if (gui.vimWindow->Lock()) {
+ // Clear one column more for when bold has spilled over
+ CopyBits(source, dest);
+ gui_clear_block(row, gui.scroll_region_left,
+ row + num_lines - 1, gui.scroll_region_right);
- gui.vimWindow->Unlock();
- /*
- * The Draw() callback will be called now if some of the source
- * bits were not in the visible region.
- * However, if we scroll too fast it can't keep up and the
- * update region gets messed up. This seems to be because copying
- * un-Draw()n bits does not generate Draw() calls for the copy...
- * I moved the hack to before the CopyBits() to reduce the
- * amount of additional waiting needed.
- */
+ gui.vimWindow->Unlock();
+ /*
+ * The Draw() callback will be called now if some of the source
+ * bits were not in the visible region.
+ * However, if we scroll too fast it can't keep up and the
+ * update region gets messed up. This seems to be because copying
+ * un-Draw()n bits does not generate Draw() calls for the copy...
+ * I moved the hack to before the CopyBits() to reduce the
+ * amount of additional waiting needed.
+ */
- // gui_x11_check_copy_area();
+ // gui_x11_check_copy_area();
- }
+ }
}
#ifdef FEAT_MBYTE_IME
@@ -1855,67 +1855,67 @@ VimTextAreaView::mchInsertLines(int row, int num_lines)
*/
void VimTextAreaView::DrawIMString(void)
{
- static const rgb_color r_highlight = {255, 152, 152, 255},
- b_highlight = {152, 203, 255, 255};
- BString str;
- const char* s;
- int len;
- BMessage* msg = IMData.message;
- if (!msg)
- return;
- gui_redraw_block(IMData.row, 0,
- IMData.row + IMData.count, W_WIDTH(curwin), GUI_MON_NOCLEAR);
- bool confirmed = false;
- msg->FindBool("be:confirmed", &confirmed);
- if (confirmed)
- return;
- rgb_color hcolor = HighColor(), lcolor = LowColor();
- msg->FindString("be:string", &str);
- s = str.String();
- len = str.Length();
- SetHighColor(0, 0, 0);
- IMData.row = gui.row;
- IMData.col = gui.col;
- int32 sel_start = 0, sel_end = 0;
- msg->FindInt32("be:selection", 0, &sel_start);
- msg->FindInt32("be:selection", 1, &sel_end);
- int clen, cn;
- BPoint pos(IMData.col, 0);
- BRect r;
- BPoint where;
- IMData.location = ConvertToScreen(
- BPoint(FILL_X(pos.x), FILL_Y(IMData.row + pos.y)));
- for (int i=0; i<len; i+=clen)
+ static const rgb_color r_highlight = {255, 152, 152, 255},
+ b_highlight = {152, 203, 255, 255};
+ BString str;
+ const char* s;
+ int len;
+ BMessage* msg = IMData.message;
+ if (!msg)
+ return;
+ gui_redraw_block(IMData.row, 0,
+ IMData.row + IMData.count, W_WIDTH(curwin), GUI_MON_NOCLEAR);
+ bool confirmed = false;
+ msg->FindBool("be:confirmed", &confirmed);
+ if (confirmed)
+ return;
+ rgb_color hcolor = HighColor(), lcolor = LowColor();
+ msg->FindString("be:string", &str);
+ s = str.String();
+ len = str.Length();
+ SetHighColor(0, 0, 0);
+ IMData.row = gui.row;
+ IMData.col = gui.col;
+ int32 sel_start = 0, sel_end = 0;
+ msg->FindInt32("be:selection", 0, &sel_start);
+ msg->FindInt32("be:selection", 1, &sel_end);
+ int clen, cn;
+ BPoint pos(IMData.col, 0);
+ BRect r;
+ BPoint where;
+ IMData.location = ConvertToScreen(
+ BPoint(FILL_X(pos.x), FILL_Y(IMData.row + pos.y)));
+ for (int i=0; i<len; i+=clen)
+ {
+ cn = utf_ptr2cells((char_u *)(s+i));
+ clen = utf_ptr2len((char_u *)(s+i));
+ if (pos.x + cn > W_WIDTH(curwin))
{
- cn = utf_ptr2cells((char_u *)(s+i));
- clen = utf_ptr2len((char_u *)(s+i));
- if (pos.x + cn > W_WIDTH(curwin))
- {
- pos.y++;
- pos.x = 0;
- }
- if (sel_start<=i && i<sel_end)
- {
- SetLowColor(r_highlight);
- IMData.location = ConvertToScreen(
- BPoint(FILL_X(pos.x), FILL_Y(IMData.row + pos.y)));
- }
- else
- {
- SetLowColor(b_highlight);
- }
- r.Set(FILL_X(pos.x), FILL_Y(IMData.row + pos.y),
- FILL_X(pos.x + cn) - PEN_WIDTH,
- FILL_Y(IMData.row + pos.y + 1) - PEN_WIDTH);
- FillRect(r, B_SOLID_LOW);
- where.Set(TEXT_X(pos.x), TEXT_Y(IMData.row + pos.y));
- DrawString((s+i), clen, where);
- pos.x += cn;
+ pos.y++;
+ pos.x = 0;
+ }
+ if (sel_start<=i && i<sel_end)
+ {
+ SetLowColor(r_highlight);
+ IMData.location = ConvertToScreen(
+ BPoint(FILL_X(pos.x), FILL_Y(IMData.row + pos.y)));
+ }
+ else
+ {
+ SetLowColor(b_highlight);
}
- IMData.count = (int)pos.y;
+ r.Set(FILL_X(pos.x), FILL_Y(IMData.row + pos.y),
+ FILL_X(pos.x + cn) - PEN_WIDTH,
+ FILL_Y(IMData.row + pos.y + 1) - PEN_WIDTH);
+ FillRect(r, B_SOLID_LOW);
+ where.Set(TEXT_X(pos.x), TEXT_Y(IMData.row + pos.y));
+ DrawString((s+i), clen, where);
+ pos.x += cn;
+ }
+ IMData.count = (int)pos.y;
- SetHighColor(hcolor);
- SetLowColor(lcolor);
+ SetHighColor(hcolor);
+ SetLowColor(lcolor);
}
#endif
// ---------------- VimScrollBar ----------------
@@ -1929,48 +1929,48 @@ void VimTextAreaView::DrawIMString(void)
* they are positioned.
*/
VimScrollBar::VimScrollBar(scrollbar_T *g, orientation posture):
- BScrollBar(posture == B_HORIZONTAL ? BRect(-100,-100,-10,-90) :
- BRect(-100,-100,-90,-10),
- "vim scrollbar", (BView *)NULL,
- 0.0, 10.0, posture),
- ignoreValue(-1),
- scrollEventCount(0)
+ BScrollBar(posture == B_HORIZONTAL ? BRect(-100,-100,-10,-90) :
+ BRect(-100,-100,-90,-10),
+ "vim scrollbar", (BView *)NULL,
+ 0.0, 10.0, posture),
+ ignoreValue(-1),
+ scrollEventCount(0)
{
- gsb = g;
- SetResizingMode(B_FOLLOW_NONE);
+ gsb = g;
+ SetResizingMode(B_FOLLOW_NONE);
}
VimScrollBar::~VimScrollBar()
{
}
- void
+ void
VimScrollBar::ValueChanged(float newValue)
{
- if (ignoreValue >= 0.0 && newValue == ignoreValue) {
- ignoreValue = -1;
- return;
- }
+ if (ignoreValue >= 0.0 && newValue == ignoreValue) {
ignoreValue = -1;
- /*
- * We want to throttle the amount of scroll messages generated.
- * Normally I presume you won't get a new message before we've
- * handled the previous one, but because we're passing them on this
- * happens very quickly. So instead we keep a counter of how many
- * scroll events there are (or will be) in the VDCMP, and the
- * throttling happens at the receiving end.
- */
- atomic_add(&scrollEventCount, 1);
+ return;
+ }
+ ignoreValue = -1;
+ /*
+ * We want to throttle the amount of scroll messages generated.
+ * Normally I presume you won't get a new message before we've
+ * handled the previous one, but because we're passing them on this
+ * happens very quickly. So instead we keep a counter of how many
+ * scroll events there are (or will be) in the VDCMP, and the
+ * throttling happens at the receiving end.
+ */
+ atomic_add(&scrollEventCount, 1);
- struct VimScrollBarMsg sm;
+ struct VimScrollBarMsg sm;
- sm.sb = this;
- sm.value = (long) newValue;
- sm.stillDragging = TRUE;
+ sm.sb = this;
+ sm.value = (long) newValue;
+ sm.stillDragging = TRUE;
- write_port(gui.vdcmp, VimMsg::ScrollBar, &sm, sizeof(sm));
+ write_port(gui.vdcmp, VimMsg::ScrollBar, &sm, sizeof(sm));
- // calls gui_drag_scrollbar(sb, newValue, TRUE);
+ // calls gui_drag_scrollbar(sb, newValue, TRUE);
}
/*
@@ -1980,733 +1980,733 @@ VimScrollBar::ValueChanged(float newValue)
* is outside... This has some funny effects... XXX
* So we do special processing when the window de/activates.
*/
- void
+ void
VimScrollBar::MouseUp(BPoint where)
{
- // BMessage *m = Window()->CurrentMessage();
- // m->PrintToStream();
+ // BMessage *m = Window()->CurrentMessage();
+ // m->PrintToStream();
- atomic_add(&scrollEventCount, 1);
+ atomic_add(&scrollEventCount, 1);
- struct VimScrollBarMsg sm;
+ struct VimScrollBarMsg sm;
- sm.sb = this;
- sm.value = (long) Value();
- sm.stillDragging = FALSE;
+ sm.sb = this;
+ sm.value = (long) Value();
+ sm.stillDragging = FALSE;
- write_port(gui.vdcmp, VimMsg::ScrollBar, &sm, sizeof(sm));
+ write_port(gui.vdcmp, VimMsg::ScrollBar, &sm, sizeof(sm));
- // calls gui_drag_scrollbar(sb, newValue, FALSE);
+ // calls gui_drag_scrollbar(sb, newValue, FALSE);
- Inherited::MouseUp(where);
+ Inherited::MouseUp(where);
}
- void
+ void
VimScrollBar::SetValue(float newValue)
{
- if (newValue == Value())
- return;
+ if (newValue == Value())
+ return;
- ignoreValue = newValue;
- Inherited::SetValue(newValue);
+ ignoreValue = newValue;
+ Inherited::SetValue(newValue);
}
// ---------------- VimFont ----------------
VimFont::VimFont(): BFont()
{
- init();
+ init();
}
VimFont::VimFont(const VimFont *rhs): BFont(rhs)
{
- init();
+ init();
}
VimFont::VimFont(const BFont *rhs): BFont(rhs)
{
- init();
+ init();
}
VimFont::VimFont(const VimFont &rhs): BFont(rhs)
{
- init();
+ init();
}
VimFont::~VimFont()
{
}
- void
+ void
VimFont::init()
{
- next = NULL;
- refcount = 1;
- name = NULL;
+ next = NULL;
+ refcount = 1;
+ name = NULL;
}
// ---------------- VimDialog ----------------
#if defined(FEAT_GUI_DIALOG)
-const unsigned int kVimDialogButtonMsg = 'VMDB';
-const unsigned int kVimDialogIconStripeWidth = 30;
-const unsigned int kVimDialogButtonsSpacingX = 9;
-const unsigned int kVimDialogButtonsSpacingY = 4;
-const unsigned int kVimDialogSpacingX = 6;
-const unsigned int kVimDialogSpacingY = 10;
-const unsigned int kVimDialogMinimalWidth = 310;
-const unsigned int kVimDialogMinimalHeight = 75;
-const BRect kDefaultRect =
+const unsigned int kVimDialogButtonMsg = 'VMDB';
+const unsigned int kVimDialogIconStripeWidth = 30;
+const unsigned int kVimDialogButtonsSpacingX = 9;
+const unsigned int kVimDialogButtonsSpacingY = 4;
+const unsigned int kVimDialogSpacingX = 6;
+const unsigned int kVimDialogSpacingY = 10;
+const unsigned int kVimDialogMinimalWidth = 310;
+const unsigned int kVimDialogMinimalHeight = 75;
+const BRect kDefaultRect =
BRect(0, 0, kVimDialogMinimalWidth, kVimDialogMinimalHeight);
VimDialog::VimDialog(int type, const char *title, const char *message,
- const char *buttons, int dfltbutton, const char *textfield, int ex_cmd)
+ const char *buttons, int dfltbutton, const char *textfield, int ex_cmd)
: BWindow(kDefaultRect, title, B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL,
- B_NOT_CLOSABLE | B_NOT_RESIZABLE |
- B_NOT_ZOOMABLE | B_NOT_MINIMIZABLE | B_ASYNCHRONOUS_CONTROLS)
- , fDialogSem(-1)
- , fDialogValue(dfltbutton)
- , fMessageView(NULL)
- , fInputControl(NULL)
- , fInputValue(textfield)
-{
- // master view
- VimDialog::View* view = new VimDialog::View(Bounds());
- if(view == NULL)
- return;
-
- if(title == NULL)
- SetTitle("Vim " VIM_VERSION_MEDIUM);
-
- AddChild(view);
-
- // icon
- view->InitIcon(type);
-
- // buttons
- int32 which = 1;
- float maxButtonWidth = 0;
- float maxButtonHeight = 0;
- float buttonsWidth = 0;
- float buttonsHeight = 0;
- BString strButtons(buttons);
- strButtons.RemoveAll("&");
- do {
- int32 end = strButtons.FindFirst('\n');
- if(end != B_ERROR)
- strButtons.SetByteAt(end, '\0');
-
- BButton *button = _CreateButton(which++, strButtons.String());
- view->AddChild(button);
- fButtonsList.AddItem(button);
-
- maxButtonWidth = max_c(maxButtonWidth, button->Bounds().Width());
- maxButtonHeight = max_c(maxButtonHeight, button->Bounds().Height());
- buttonsWidth += button->Bounds().Width();
- buttonsHeight += button->Bounds().Height();
-
- if(end == B_ERROR)
- break;
+ B_NOT_CLOSABLE | B_NOT_RESIZABLE |
+ B_NOT_ZOOMABLE | B_NOT_MINIMIZABLE | B_ASYNCHRONOUS_CONTROLS)
+ , fDialogSem(-1)
+ , fDialogValue(dfltbutton)
+ , fMessageView(NULL)
+ , fInputControl(NULL)
+ , fInputValue(textfield)
+{
+ // master view
+ VimDialog::View* view = new VimDialog::View(Bounds());
+ if (view == NULL)
+ return;
- strButtons.Remove(0, end + 1);
- } while(true);
-
- int32 buttonsCount = fButtonsList.CountItems();
- buttonsWidth += kVimDialogButtonsSpacingX * (buttonsCount - 1);
- buttonsHeight += kVimDialogButtonsSpacingY * (buttonsCount - 1);
- float dialogWidth = buttonsWidth + kVimDialogIconStripeWidth +
- kVimDialogSpacingX * 2;
- float dialogHeight = maxButtonHeight + kVimDialogSpacingY * 3;
-
- // Check 'v' flag in 'guioptions': vertical button placement.
- bool vertical = (vim_strchr(p_go, GO_VERTICAL) != NULL) ||
- dialogWidth >= gui.vimWindow->Bounds().Width();
- if(vertical) {
- dialogWidth -= buttonsWidth;
- dialogWidth += maxButtonWidth;
- dialogHeight -= maxButtonHeight;
- dialogHeight += buttonsHeight;
- }
+ if (title == NULL)
+ SetTitle("Vim " VIM_VERSION_MEDIUM);
+
+ AddChild(view);
+
+ // icon
+ view->InitIcon(type);
+
+ // buttons
+ int32 which = 1;
+ float maxButtonWidth = 0;
+ float maxButtonHeight = 0;
+ float buttonsWidth = 0;
+ float buttonsHeight = 0;
+ BString strButtons(buttons);
+ strButtons.RemoveAll("&");
+ do {
+ int32 end = strButtons.FindFirst('\n');
+ if (end != B_ERROR)
+ strButtons.SetByteAt(end, '\0');
+
+ BButton *button = _CreateButton(which++, strButtons.String());
+ view->AddChild(button);
+ fButtonsList.AddItem(button);
+
+ maxButtonWidth = max_c(maxButtonWidth, button->Bounds().Width());
+ maxButtonHeight = max_c(maxButtonHeight, button->Bounds().Height());
+ buttonsWidth += button->Bounds().Width();
+ buttonsHeight += button->Bounds().Height();
+
+ if (end == B_ERROR)
+ break;
- dialogWidth = max_c(dialogWidth, kVimDialogMinimalWidth);
-
- // message view
- BRect rect(0, 0, dialogWidth, 0);
- rect.left += kVimDialogIconStripeWidth + 16 + kVimDialogSpacingX;
- rect.top += kVimDialogSpacingY;
- rect.right -= kVimDialogSpacingX;
- rect.bottom = rect.top;
- fMessageView = new BTextView(rect, "_tv_", rect.OffsetByCopy(B_ORIGIN),
- B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
-
- fMessageView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
- rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR);
- fMessageView->SetFontAndColor(be_plain_font, B_FONT_ALL, &textColor);
- fMessageView->SetText(message);
- fMessageView->MakeEditable(false);
- fMessageView->MakeSelectable(false);
- fMessageView->SetWordWrap(true);
- AddChild(fMessageView);
-
- float messageHeight = fMessageView->TextHeight(0, fMessageView->CountLines());
- fMessageView->ResizeBy(0, messageHeight);
- fMessageView->SetTextRect(BRect(0, 0, rect.Width(), messageHeight));
-
- dialogHeight += messageHeight;
-
- // input view
- if(fInputValue != NULL) {
- rect.top =
- rect.bottom += messageHeight + kVimDialogSpacingY;
- fInputControl = new BTextControl(rect, "_iv_", NULL, fInputValue, NULL,
- B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW | B_NAVIGABLE | B_PULSE_NEEDED);
- fInputControl->TextView()->SetText(fInputValue);
- fInputControl->TextView()->SetWordWrap(false);
- AddChild(fInputControl);
-
- float width = 0.f, height = 0.f;
- fInputControl->GetPreferredSize(&width, &height);
- fInputControl->MakeFocus(true);
-
- dialogHeight += height + kVimDialogSpacingY * 1.5;
- }
+ strButtons.Remove(0, end + 1);
+ } while (true);
+
+ int32 buttonsCount = fButtonsList.CountItems();
+ buttonsWidth += kVimDialogButtonsSpacingX * (buttonsCount - 1);
+ buttonsHeight += kVimDialogButtonsSpacingY * (buttonsCount - 1);
+ float dialogWidth = buttonsWidth + kVimDialogIconStripeWidth +
+ kVimDialogSpacingX * 2;
+ float dialogHeight = maxButtonHeight + kVimDialogSpacingY * 3;
+
+ // Check 'v' flag in 'guioptions': vertical button placement.
+ bool vertical = (vim_strchr(p_go, GO_VERTICAL) != NULL) ||
+ dialogWidth >= gui.vimWindow->Bounds().Width();
+ if (vertical) {
+ dialogWidth -= buttonsWidth;
+ dialogWidth += maxButtonWidth;
+ dialogHeight -= maxButtonHeight;
+ dialogHeight += buttonsHeight;
+ }
- dialogHeight = max_c(dialogHeight, kVimDialogMinimalHeight);
-
- ResizeTo(dialogWidth, dialogHeight);
- MoveTo((gui.vimWindow->Bounds().Width() - dialogWidth) / 2,
- (gui.vimWindow->Bounds().Height() - dialogHeight) / 2);
-
- // adjust layout of buttons
- float buttonWidth = max_c(maxButtonWidth, rect.Width() * 0.66);
- BPoint origin(dialogWidth, dialogHeight);
- origin.x -= kVimDialogSpacingX + (vertical ? buttonWidth : buttonsWidth);
- origin.y -= kVimDialogSpacingY + (vertical ? buttonsHeight : maxButtonHeight);
-
- for(int32 i = 0 ; i < buttonsCount; i++) {
- BButton *button = (BButton*)fButtonsList.ItemAt(i);
- button->MoveTo(origin);
- if(vertical) {
- origin.y += button->Frame().Height() + kVimDialogButtonsSpacingY;
- button->ResizeTo(buttonWidth, button->Frame().Height());
- } else
- origin.x += button->Frame().Width() + kVimDialogButtonsSpacingX;
-
- if(dfltbutton == i + 1) {
- button->MakeDefault(true);
- button->MakeFocus(fInputControl == NULL);
- }
+ dialogWidth = max_c(dialogWidth, kVimDialogMinimalWidth);
+
+ // message view
+ BRect rect(0, 0, dialogWidth, 0);
+ rect.left += kVimDialogIconStripeWidth + 16 + kVimDialogSpacingX;
+ rect.top += kVimDialogSpacingY;
+ rect.right -= kVimDialogSpacingX;
+ rect.bottom = rect.top;
+ fMessageView = new BTextView(rect, "_tv_", rect.OffsetByCopy(B_ORIGIN),
+ B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
+
+ fMessageView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
+ rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR);
+ fMessageView->SetFontAndColor(be_plain_font, B_FONT_ALL, &textColor);
+ fMessageView->SetText(message);
+ fMessageView->MakeEditable(false);
+ fMessageView->MakeSelectable(false);
+ fMessageView->SetWordWrap(true);
+ AddChild(fMessageView);
+
+ float messageHeight = fMessageView->TextHeight(0, fMessageView->CountLines());
+ fMessageView->ResizeBy(0, messageHeight);
+ fMessageView->SetTextRect(BRect(0, 0, rect.Width(), messageHeight));
+
+ dialogHeight += messageHeight;
+
+ // input view
+ if (fInputValue != NULL) {
+ rect.top =
+ rect.bottom += messageHeight + kVimDialogSpacingY;
+ fInputControl = new BTextControl(rect, "_iv_", NULL, fInputValue, NULL,
+ B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW | B_NAVIGABLE | B_PULSE_NEEDED);
+ fInputControl->TextView()->SetText(fInputValue);
+ fInputControl->TextView()->SetWordWrap(false);
+ AddChild(fInputControl);
+
+ float width = 0.f, height = 0.f;
+ fInputControl->GetPreferredSize(&width, &height);
+ fInputControl->MakeFocus(true);
+
+ dialogHeight += height + kVimDialogSpacingY * 1.5;
+ }
+
+ dialogHeight = max_c(dialogHeight, kVimDialogMinimalHeight);
+
+ ResizeTo(dialogWidth, dialogHeight);
+ MoveTo((gui.vimWindow->Bounds().Width() - dialogWidth) / 2,
+ (gui.vimWindow->Bounds().Height() - dialogHeight) / 2);
+
+ // adjust layout of buttons
+ float buttonWidth = max_c(maxButtonWidth, rect.Width() * 0.66);
+ BPoint origin(dialogWidth, dialogHeight);
+ origin.x -= kVimDialogSpacingX + (vertical ? buttonWidth : buttonsWidth);
+ origin.y -= kVimDialogSpacingY + (vertical ? buttonsHeight : maxButtonHeight);
+
+ for (int32 i = 0 ; i < buttonsCount; i++) {
+ BButton *button = (BButton*)fButtonsList.ItemAt(i);
+ button->MoveTo(origin);
+ if (vertical) {
+ origin.y += button->Frame().Height() + kVimDialogButtonsSpacingY;
+ button->ResizeTo(buttonWidth, button->Frame().Height());
+ } else
+ origin.x += button->Frame().Width() + kVimDialogButtonsSpacingX;
+
+ if (dfltbutton == i + 1) {
+ button->MakeDefault(true);
+ button->MakeFocus(fInputControl == NULL);
}
+ }
}
VimDialog::~VimDialog()
{
- if(fDialogSem > B_OK)
- delete_sem(fDialogSem);
+ if (fDialogSem > B_OK)
+ delete_sem(fDialogSem);
}
- int
+ int
VimDialog::Go()
{
- fDialogSem = create_sem(0, "VimDialogSem");
- if(fDialogSem < B_OK) {
- Quit();
- return fDialogValue;
- }
+ fDialogSem = create_sem(0, "VimDialogSem");
+ if (fDialogSem < B_OK) {
+ Quit();
+ return fDialogValue;
+ }
- Show();
+ Show();
- while(acquire_sem(fDialogSem) == B_INTERRUPTED);
+ while (acquire_sem(fDialogSem) == B_INTERRUPTED);
- int retValue = fDialogValue;
- if(fInputValue != NULL)
- vim_strncpy((char_u*)fInputValue, (char_u*)fInputControl->Text(), IOSIZE - 1);
+ int retValue = fDialogValue;
+ if (fInputValue != NULL)
+ vim_strncpy((char_u*)fInputValue, (char_u*)fInputControl->Text(), IOSIZE - 1);
- if(Lock())
- Quit();
+ if (Lock())
+ Quit();
- return retValue;
+ return retValue;
}
void VimDialog::MessageReceived(BMessage *msg)
{
- int32 which = 0;
- if(msg->what != kVimDialogButtonMsg ||
- msg->FindInt32("which", &which) != B_OK)
- return BWindow::MessageReceived(msg);
+ int32 which = 0;
+ if (msg->what != kVimDialogButtonMsg ||
+ msg->FindInt32("which", &which) != B_OK)
+ return BWindow::MessageReceived(msg);
- fDialogValue = which;
- delete_sem(fDialogSem);
- fDialogSem = -1;
+ fDialogValue = which;
+ delete_sem(fDialogSem);
+ fDialogSem = -1;
}
BButton* VimDialog::_CreateButton(int32 which, const char* label)
{
- BMessage *message = new BMessage(kVimDialogButtonMsg);
- message->AddInt32("which", which);
+ BMessage *message = new BMessage(kVimDialogButtonMsg);
+ message->AddInt32("which", which);
- BRect rect(0, 0, 0, 0);
- BString name;
- name << "_b" << which << "_";
+ BRect rect(0, 0, 0, 0);
+ BString name;
+ name << "_b" << which << "_";
- BButton* button = new BButton(rect, name.String(), label, message,
- B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
+ BButton* button = new BButton(rect, name.String(), label, message,
+ B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
- float width = 0.f, height = 0.f;
- button->GetPreferredSize(&width, &height);
- button->ResizeTo(width, height);
+ float width = 0.f, height = 0.f;
+ button->GetPreferredSize(&width, &height);
+ button->ResizeTo(width, height);
- return button;
+ return button;
}
VimDialog::View::View(BRect frame)
- : BView(frame, "VimDialogView", B_FOLLOW_ALL_SIDES, B_WILL_DRAW),
- fIconBitmap(NULL)
+ : BView(frame, "VimDialogView", B_FOLLOW_ALL_SIDES, B_WILL_DRAW),
+ fIconBitmap(NULL)
{
- SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
+ SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
}
VimDialog::View::~View()
{
- delete fIconBitmap;
+ delete fIconBitmap;
}
void VimDialog::View::Draw(BRect updateRect)
{
- BRect stripeRect = Bounds();
- stripeRect.right = kVimDialogIconStripeWidth;
- SetHighColor(tint_color(ViewColor(), B_DARKEN_1_TINT));
- FillRect(stripeRect);
+ BRect stripeRect = Bounds();
+ stripeRect.right = kVimDialogIconStripeWidth;
+ SetHighColor(tint_color(ViewColor(), B_DARKEN_1_TINT));
+ FillRect(stripeRect);
- if(fIconBitmap == NULL)
- return;
+ if (fIconBitmap == NULL)
+ return;
- SetDrawingMode(B_OP_ALPHA);
- SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY);
- DrawBitmapAsync(fIconBitmap, BPoint(18, 6));
+ SetDrawingMode(B_OP_ALPHA);
+ SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY);
+ DrawBitmapAsync(fIconBitmap, BPoint(18, 6));
}
void VimDialog::View::InitIcon(int32 type)
{
- if(type == VIM_GENERIC)
- return;
+ if (type == VIM_GENERIC)
+ return;
- BPath path;
- status_t status = find_directory(B_BEOS_SERVERS_DIRECTORY, &path);
- if(status != B_OK) {
- fprintf(stderr, "Cannot retrieve app info:%s\n", strerror(status));
- return;
- }
+ BPath path;
+ status_t status = find_directory(B_BEOS_SERVERS_DIRECTORY, &path);
+ if (status != B_OK) {
+ fprintf(stderr, "Cannot retrieve app info:%s\n", strerror(status));
+ return;
+ }
- path.Append("app_server");
+ path.Append("app_server");
- BFile file(path.Path(), O_RDONLY);
- if(file.InitCheck() != B_OK) {
- fprintf(stderr, "App file assignment failed:%s\n",
- strerror(file.InitCheck()));
- return;
- }
+ BFile file(path.Path(), O_RDONLY);
+ if (file.InitCheck() != B_OK) {
+ fprintf(stderr, "App file assignment failed:%s\n",
+ strerror(file.InitCheck()));
+ return;
+ }
- BResources resources(&file);
- if(resources.InitCheck() != B_OK) {
- fprintf(stderr, "App server resources assignment failed:%s\n",
- strerror(resources.InitCheck()));
- return;
- }
+ BResources resources(&file);
+ if (resources.InitCheck() != B_OK) {
+ fprintf(stderr, "App server resources assignment failed:%s\n",
+ strerror(resources.InitCheck()));
+ return;
+ }
- const char *name = "";
- switch(type) {
- case VIM_ERROR: name = "stop"; break;
- case VIM_WARNING: name = "warn"; break;
- case VIM_INFO: name = "info"; break;
- case VIM_QUESTION: name = "idea"; break;
- default: return;
- }
+ const char *name = "";
+ switch(type) {
+ case VIM_ERROR: name = "stop"; break;
+ case VIM_WARNING: name = "warn"; break;
+ case VIM_INFO: name = "info"; break;
+ case VIM_QUESTION: name = "idea"; break;
+ default: return;
+ }
- int32 iconSize = 32;
- fIconBitmap = new BBitmap(BRect(0, 0, iconSize - 1, iconSize - 1), 0, B_RGBA32);
- if(fIconBitmap == NULL || fIconBitmap->InitCheck() != B_OK) {
- fprintf(stderr, "Icon bitmap allocation failed:%s\n",
- (fIconBitmap == NULL) ? "null" : strerror(fIconBitmap->InitCheck()));
- return;
- }
+ int32 iconSize = 32;
+ fIconBitmap = new BBitmap(BRect(0, 0, iconSize - 1, iconSize - 1), 0, B_RGBA32);
+ if (fIconBitmap == NULL || fIconBitmap->InitCheck() != B_OK) {
+ fprintf(stderr, "Icon bitmap allocation failed:%s\n",
+ (fIconBitmap == NULL) ? "null" : strerror(fIconBitmap->InitCheck()));
+ return;
+ }
- size_t size = 0;
- const uint8* iconData = NULL;
- // try vector icon first?
- iconData = (const uint8*)resources.LoadResource(B_VECTOR_ICON_TYPE, name, &size);
- if(iconData != NULL && BIconUtils::GetVectorIcon(iconData, size, fIconBitmap) == B_OK)
- return;
-
- // try bitmap icon now
- iconData = (const uint8*)resources.LoadResource(B_LARGE_ICON_TYPE, name, &size);
- if(iconData == NULL) {
- fprintf(stderr, "Bitmap icon resource not found\n");
- delete fIconBitmap;
- fIconBitmap = NULL;
- return;
- }
+ size_t size = 0;
+ const uint8* iconData = NULL;
+ // try vector icon first?
+ iconData = (const uint8*)resources.LoadResource(B_VECTOR_ICON_TYPE, name, &size);
+ if (iconData != NULL && BIconUtils::GetVectorIcon(iconData, size, fIconBitmap) == B_OK)
+ return;
- if(fIconBitmap->ColorSpace() != B_CMAP8)
- BIconUtils::ConvertFromCMAP8(iconData, iconSize, iconSize, iconSize, fIconBitmap);
+ // try bitmap icon now
+ iconData = (const uint8*)resources.LoadResource(B_LARGE_ICON_TYPE, name, &size);
+ if (iconData == NULL) {
+ fprintf(stderr, "Bitmap icon resource not found\n");
+ delete fIconBitmap;
+ fIconBitmap = NULL;
+ return;
+ }
+
+ if (fIconBitmap->ColorSpace() != B_CMAP8)
+ BIconUtils::ConvertFromCMAP8(iconData, iconSize, iconSize, iconSize, fIconBitmap);
}
-const unsigned int kVimDialogOKButtonMsg = 'FDOK';
-const unsigned int kVimDialogCancelButtonMsg = 'FDCN';
-const unsigned int kVimDialogSizeInputMsg = 'SICH';
-const unsigned int kVimDialogFamilySelectMsg = 'MSFM';
-const unsigned int kVimDialogStyleSelectMsg = 'MSST';
-const unsigned int kVimDialogSizeSelectMsg = 'MSSZ';
+const unsigned int kVimDialogOKButtonMsg = 'FDOK';
+const unsigned int kVimDialogCancelButtonMsg = 'FDCN';
+const unsigned int kVimDialogSizeInputMsg = 'SICH';
+const unsigned int kVimDialogFamilySelectMsg = 'MSFM';
+const unsigned int kVimDialogStyleSelectMsg = 'MSST';
+const unsigned int kVimDialogSizeSelectMsg = 'MSSZ';
VimSelectFontDialog::VimSelectFontDialog(font_family* family, font_style* style, float* size)
: BWindow(kDefaultRect, "Font Selection", B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL,
- B_NOT_CLOSABLE | B_NOT_RESIZABLE |
- B_NOT_ZOOMABLE | B_NOT_MINIMIZABLE | B_ASYNCHRONOUS_CONTROLS)
- , fStatus(B_NO_INIT)
- , fDialogSem(-1)
- , fDialogValue(false)
- , fFamily(family)
- , fStyle(style)
- , fSize(size)
- , fFontSize(*size)
- , fPreview(0)
- , fFamiliesList(0)
- , fStylesList(0)
- , fSizesList(0)
- , fSizesInput(0)
-{
- strncpy(fFontFamily, *family, B_FONT_FAMILY_LENGTH);
- strncpy(fFontStyle, *style, B_FONT_STYLE_LENGTH);
-
- // "client" area view
- BBox *clientBox = new BBox(Bounds(), B_EMPTY_STRING, B_FOLLOW_ALL_SIDES,
- B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP | B_PULSE_NEEDED,
- B_PLAIN_BORDER);
- AddChild(clientBox);
-
- // client view
- BRect RC = clientBox->Bounds();
- RC.InsetBy(kVimDialogSpacingX, kVimDialogSpacingY);
- BRect rc(RC.LeftTop(), RC.LeftTop());
-
- // at first create all controls
- fPreview = new BStringView(rc, "preview", "DejaVu Sans Mono");
- clientBox->AddChild(fPreview);
-
- BBox* boxDivider = new BBox(rc, B_EMPTY_STRING,
- B_FOLLOW_NONE, B_WILL_DRAW, B_FANCY_BORDER);
- clientBox->AddChild(boxDivider);
-
- BStringView *labelFamily = new BStringView(rc, "labelFamily", "Family:");
- clientBox->AddChild(labelFamily);
- labelFamily->ResizeToPreferred();
-
- BStringView *labelStyle = new BStringView(rc, "labelStyle", "Style:");
- clientBox->AddChild(labelStyle);
- labelStyle->ResizeToPreferred();
-
- BStringView *labelSize = new BStringView(rc, "labelSize", "Size:");
- clientBox->AddChild(labelSize);
- labelSize->ResizeToPreferred();
-
- fFamiliesList = new BListView(rc, "listFamily",
- B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL_SIDES);
- BScrollView *scrollFamilies = new BScrollView("scrollFamily",
- fFamiliesList, B_FOLLOW_LEFT_RIGHT, 0, false, true);
- clientBox->AddChild(scrollFamilies);
-
- fStylesList= new BListView(rc, "listStyles",
- B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL_SIDES);
- BScrollView *scrollStyles = new BScrollView("scrollStyle",
- fStylesList, B_FOLLOW_LEFT_RIGHT, 0, false, true);
- clientBox->AddChild(scrollStyles);
-
- fSizesInput = new BTextControl(rc, "inputSize", NULL, "???",
- new BMessage(kVimDialogSizeInputMsg));
- clientBox->AddChild(fSizesInput);
- fSizesInput->ResizeToPreferred();
-
- fSizesList = new BListView(rc, "listSizes",
- B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL_SIDES);
- BScrollView *scrollSizes = new BScrollView("scrollSize",
- fSizesList, B_FOLLOW_LEFT_RIGHT, 0, false, true);
- clientBox->AddChild(scrollSizes);
-
- BButton *buttonOK = new BButton(rc, "buttonOK", "OK",
- new BMessage(kVimDialogOKButtonMsg));
- clientBox->AddChild(buttonOK);
- buttonOK->ResizeToPreferred();
-
- BButton *buttonCancel = new BButton(rc, "buttonCancel", "Cancel",
- new BMessage(kVimDialogCancelButtonMsg));
- clientBox->AddChild(buttonCancel);
- buttonCancel->ResizeToPreferred();
-
- // layout controls
- float lineHeight = labelFamily->Bounds().Height();
- float previewHeight = lineHeight * 3;
- float offsetYLabels = previewHeight + kVimDialogSpacingY;
- float offsetYLists = offsetYLabels + lineHeight + kVimDialogSpacingY / 2;
- float offsetYSizes = offsetYLists + fSizesInput->Bounds().Height() + kVimDialogSpacingY / 2;
- float listsHeight = lineHeight * 9;
- float offsetYButtons = offsetYLists + listsHeight + kVimDialogSpacingY;
- float maxControlsHeight = offsetYButtons + buttonOK->Bounds().Height();
- float familiesWidth = labelFamily->Bounds().Width() * 5;
- float offsetXStyles = familiesWidth + kVimDialogSpacingX;
- float stylesWidth = labelStyle->Bounds().Width() * 4;
- float offsetXSizes = offsetXStyles + stylesWidth + kVimDialogSpacingX;
- float sizesWidth = labelSize->Bounds().Width() * 2;
- float maxControlsWidth = offsetXSizes + sizesWidth;
-
- ResizeTo(maxControlsWidth + kVimDialogSpacingX * 2,
- maxControlsHeight + kVimDialogSpacingY * 2);
-
- BRect rcVim = gui.vimWindow->Frame();
- MoveTo(rcVim.left + (rcVim.Width() - Frame().Width()) / 2,
- rcVim.top + (rcVim.Height() - Frame().Height()) / 2);
-
- fPreview->ResizeTo(maxControlsWidth, previewHeight);
- fPreview->SetAlignment(B_ALIGN_CENTER);
-
- boxDivider->MoveBy(0.f, previewHeight + kVimDialogSpacingY / 2);
- boxDivider->ResizeTo(maxControlsWidth, 1.f);
-
- labelFamily->MoveBy(0.f, offsetYLabels);
- labelStyle->MoveBy(offsetXStyles, offsetYLabels);
- labelSize->MoveBy(offsetXSizes, offsetYLabels);
-
- // text control alignment issues
- float insetX = fSizesInput->TextView()->Bounds().Width() - fSizesInput->Bounds().Width();
- float insetY = fSizesInput->TextView()->Bounds().Width() - fSizesInput->Bounds().Width();
-
- scrollFamilies->MoveBy(0.f, offsetYLists);
- scrollStyles->MoveBy(offsetXStyles, offsetYLists);
- fSizesInput->MoveBy(offsetXSizes + insetX / 2, offsetYLists + insetY / 2);
- scrollSizes->MoveBy(offsetXSizes, offsetYSizes);
-
- fSizesInput->SetAlignment(B_ALIGN_CENTER, B_ALIGN_CENTER);
-
- scrollFamilies->ResizeTo(familiesWidth, listsHeight);
- scrollStyles->ResizeTo(stylesWidth, listsHeight);
- fSizesInput->ResizeTo(sizesWidth, fSizesInput->Bounds().Height());
- scrollSizes->ResizeTo(sizesWidth,
- listsHeight - (offsetYSizes - offsetYLists));
-
- buttonOK->MoveBy(maxControlsWidth - buttonOK->Bounds().Width(), offsetYButtons);
- buttonCancel->MoveBy(maxControlsWidth - buttonOK->Bounds().Width()
- - buttonCancel->Bounds().Width() - kVimDialogSpacingX, offsetYButtons);
-
- // fill lists
- int selIndex = -1;
- int count = count_font_families();
- for (int i = 0; i < count; i++) {
- font_family family;
- if (get_font_family(i, &family ) == B_OK) {
- fFamiliesList->AddItem(new BStringItem((const char*)family));
- if (strncmp(family, fFontFamily, B_FONT_FAMILY_LENGTH) == 0)
- selIndex = i;
- }
+ B_NOT_CLOSABLE | B_NOT_RESIZABLE |
+ B_NOT_ZOOMABLE | B_NOT_MINIMIZABLE | B_ASYNCHRONOUS_CONTROLS)
+ , fStatus(B_NO_INIT)
+ , fDialogSem(-1)
+ , fDialogValue(false)
+ , fFamily(family)
+ , fStyle(style)
+ , fSize(size)
+ , fFontSize(*size)
+ , fPreview(0)
+ , fFamiliesList(0)
+ , fStylesList(0)
+ , fSizesList(0)
+ , fSizesInput(0)
+{
+ strncpy(fFontFamily, *family, B_FONT_FAMILY_LENGTH);
+ strncpy(fFontStyle, *style, B_FONT_STYLE_LENGTH);
+
+ // "client" area view
+ BBox *clientBox = new BBox(Bounds(), B_EMPTY_STRING, B_FOLLOW_ALL_SIDES,
+ B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP | B_PULSE_NEEDED,
+ B_PLAIN_BORDER);
+ AddChild(clientBox);
+
+ // client view
+ BRect RC = clientBox->Bounds();
+ RC.InsetBy(kVimDialogSpacingX, kVimDialogSpacingY);
+ BRect rc(RC.LeftTop(), RC.LeftTop());
+
+ // at first create all controls
+ fPreview = new BStringView(rc, "preview", "DejaVu Sans Mono");
+ clientBox->AddChild(fPreview);
+
+ BBox* boxDivider = new BBox(rc, B_EMPTY_STRING,
+ B_FOLLOW_NONE, B_WILL_DRAW, B_FANCY_BORDER);
+ clientBox->AddChild(boxDivider);
+
+ BStringView *labelFamily = new BStringView(rc, "labelFamily", "Family:");
+ clientBox->AddChild(labelFamily);
+ labelFamily->ResizeToPreferred();
+
+ BStringView *labelStyle = new BStringView(rc, "labelStyle", "Style:");
+ clientBox->AddChild(labelStyle);
+ labelStyle->ResizeToPreferred();
+
+ BStringView *labelSize = new BStringView(rc, "labelSize", "Size:");
+ clientBox->AddChild(labelSize);
+ labelSize->ResizeToPreferred();
+
+ fFamiliesList = new BListView(rc, "listFamily",
+ B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL_SIDES);
+ BScrollView *scrollFamilies = new BScrollView("scrollFamily",
+ fFamiliesList, B_FOLLOW_LEFT_RIGHT, 0, false, true);
+ clientBox->AddChild(scrollFamilies);
+
+ fStylesList= new BListView(rc, "listStyles",
+ B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL_SIDES);
+ BScrollView *scrollStyles = new BScrollView("scrollStyle",
+ fStylesList, B_FOLLOW_LEFT_RIGHT, 0, false, true);
+ clientBox->AddChild(scrollStyles);
+
+ fSizesInput = new BTextControl(rc, "inputSize", NULL, "???",
+ new BMessage(kVimDialogSizeInputMsg));
+ clientBox->AddChild(fSizesInput);
+ fSizesInput->ResizeToPreferred();
+
+ fSizesList = new BListView(rc, "listSizes",
+ B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL_SIDES);
+ BScrollView *scrollSizes = new BScrollView("scrollSize",
+ fSizesList, B_FOLLOW_LEFT_RIGHT, 0, false, true);
+ clientBox->AddChild(scrollSizes);
+
+ BButton *buttonOK = new BButton(rc, "buttonOK", "OK",
+ new BMessage(kVimDialogOKButtonMsg));
+ clientBox->AddChild(buttonOK);
+ buttonOK->ResizeToPreferred();
+
+ BButton *buttonCancel = new BButton(rc, "buttonCancel", "Cancel",
+ new BMessage(kVimDialogCancelButtonMsg));
+ clientBox->AddChild(buttonCancel);
+ buttonCancel->ResizeToPreferred();
+
+ // layout controls
+ float lineHeight = labelFamily->Bounds().Height();
+ float previewHeight = lineHeight * 3;
+ float offsetYLabels = previewHeight + kVimDialogSpacingY;
+ float offsetYLists = offsetYLabels + lineHeight + kVimDialogSpacingY / 2;
+ float offsetYSizes = offsetYLists + fSizesInput->Bounds().Height() + kVimDialogSpacingY / 2;
+ float listsHeight = lineHeight * 9;
+ float offsetYButtons = offsetYLists + listsHeight + kVimDialogSpacingY;
+ float maxControlsHeight = offsetYButtons + buttonOK->Bounds().Height();
+ float familiesWidth = labelFamily->Bounds().Width() * 5;
+ float offsetXStyles = familiesWidth + kVimDialogSpacingX;
+ float stylesWidth = labelStyle->Bounds().Width() * 4;
+ float offsetXSizes = offsetXStyles + stylesWidth + kVimDialogSpacingX;
+ float sizesWidth = labelSize->Bounds().Width() * 2;
+ float maxControlsWidth = offsetXSizes + sizesWidth;
+
+ ResizeTo(maxControlsWidth + kVimDialogSpacingX * 2,
+ maxControlsHeight + kVimDialogSpacingY * 2);
+
+ BRect rcVim = gui.vimWindow->Frame();
+ MoveTo(rcVim.left + (rcVim.Width() - Frame().Width()) / 2,
+ rcVim.top + (rcVim.Height() - Frame().Height()) / 2);
+
+ fPreview->ResizeTo(maxControlsWidth, previewHeight);
+ fPreview->SetAlignment(B_ALIGN_CENTER);
+
+ boxDivider->MoveBy(0.f, previewHeight + kVimDialogSpacingY / 2);
+ boxDivider->ResizeTo(maxControlsWidth, 1.f);
+
+ labelFamily->MoveBy(0.f, offsetYLabels);
+ labelStyle->MoveBy(offsetXStyles, offsetYLabels);
+ labelSize->MoveBy(offsetXSizes, offsetYLabels);
+
+ // text control alignment issues
+ float insetX = fSizesInput->TextView()->Bounds().Width() - fSizesInput->Bounds().Width();
+ float insetY = fSizesInput->TextView()->Bounds().Width() - fSizesInput->Bounds().Width();
+
+ scrollFamilies->MoveBy(0.f, offsetYLists);
+ scrollStyles->MoveBy(offsetXStyles, offsetYLists);
+ fSizesInput->MoveBy(offsetXSizes + insetX / 2, offsetYLists + insetY / 2);
+ scrollSizes->MoveBy(offsetXSizes, offsetYSizes);
+
+ fSizesInput->SetAlignment(B_ALIGN_CENTER, B_ALIGN_CENTER);
+
+ scrollFamilies->ResizeTo(familiesWidth, listsHeight);
+ scrollStyles->ResizeTo(stylesWidth, listsHeight);
+ fSizesInput->ResizeTo(sizesWidth, fSizesInput->Bounds().Height());
+ scrollSizes->ResizeTo(sizesWidth,
+ listsHeight - (offsetYSizes - offsetYLists));
+
+ buttonOK->MoveBy(maxControlsWidth - buttonOK->Bounds().Width(), offsetYButtons);
+ buttonCancel->MoveBy(maxControlsWidth - buttonOK->Bounds().Width()
+ - buttonCancel->Bounds().Width() - kVimDialogSpacingX, offsetYButtons);
+
+ // fill lists
+ int selIndex = -1;
+ int count = count_font_families();
+ for (int i = 0; i < count; i++) {
+ font_family family;
+ if (get_font_family(i, &family ) == B_OK) {
+ fFamiliesList->AddItem(new BStringItem((const char*)family));
+ if (strncmp(family, fFontFamily, B_FONT_FAMILY_LENGTH) == 0)
+ selIndex = i;
}
+ }
- if (selIndex >= 0) {
- fFamiliesList->Select(selIndex);
- fFamiliesList->ScrollToSelection();
- }
+ if (selIndex >= 0) {
+ fFamiliesList->Select(selIndex);
+ fFamiliesList->ScrollToSelection();
+ }
- _UpdateFontStyles();
+ _UpdateFontStyles();
- selIndex = -1;
- for (int size = 8, index = 0; size <= 18; size++, index++) {
- BString str;
- str << size;
- fSizesList->AddItem(new BStringItem(str));
- if (size == fFontSize)
- selIndex = index;
+ selIndex = -1;
+ for (int size = 8, index = 0; size <= 18; size++, index++) {
+ BString str;
+ str << size;
+ fSizesList->AddItem(new BStringItem(str));
+ if (size == fFontSize)
+ selIndex = index;
- }
+ }
- if (selIndex >= 0) {
- fSizesList->Select(selIndex);
- fSizesList->ScrollToSelection();
- }
+ if (selIndex >= 0) {
+ fSizesList->Select(selIndex);
+ fSizesList->ScrollToSelection();
+ }
- fFamiliesList->SetSelectionMessage(new BMessage(kVimDialogFamilySelectMsg));
- fStylesList->SetSelectionMessage(new BMessage(kVimDialogStyleSelectMsg));
- fSizesList->SetSelectionMessage(new BMessage(kVimDialogSizeSelectMsg));
- fSizesInput->SetModificationMessage(new BMessage(kVimDialogSizeInputMsg));
+ fFamiliesList->SetSelectionMessage(new BMessage(kVimDialogFamilySelectMsg));
+ fStylesList->SetSelectionMessage(new BMessage(kVimDialogStyleSelectMsg));
+ fSizesList->SetSelectionMessage(new BMessage(kVimDialogSizeSelectMsg));
+ fSizesInput->SetModificationMessage(new BMessage(kVimDialogSizeInputMsg));
- _UpdateSizeInputPreview();
- _UpdateFontPreview();
+ _UpdateSizeInputPreview();
+ _UpdateFontPreview();
- fStatus = B_OK;
+ fStatus = B_OK;
}
VimSelectFontDialog::~VimSelectFontDialog()
{
- _CleanList(fFamiliesList);
- _CleanList(fStylesList);
- _CleanList(fSizesList);
+ _CleanList(fFamiliesList);
+ _CleanList(fStylesList);
+ _CleanList(fSizesList);
- if (fDialogSem > B_OK)
- delete_sem(fDialogSem);
+ if (fDialogSem > B_OK)
+ delete_sem(fDialogSem);
}
- void
+ void
VimSelectFontDialog::_CleanList(BListView* list)
{
- while(0 < list->CountItems())
- delete (dynamic_cast<BStringItem*>(list->RemoveItem((int32)0)));
+ while (0 < list->CountItems())
+ delete (dynamic_cast<BStringItem*>(list->RemoveItem((int32)0)));
}
- bool
+ bool
VimSelectFontDialog::Go()
{
- if (fStatus != B_OK) {
- Quit();
- return NOFONT;
- }
+ if (fStatus != B_OK) {
+ Quit();
+ return NOFONT;
+ }
- fDialogSem = create_sem(0, "VimFontSelectDialogSem");
- if(fDialogSem < B_OK) {
- Quit();
- return fDialogValue;
- }
+ fDialogSem = create_sem(0, "VimFontSelectDialogSem");
+ if (fDialogSem < B_OK) {
+ Quit();
+ return fDialogValue;
+ }
- Show();
+ Show();
- while(acquire_sem(fDialogSem) == B_INTERRUPTED);
+ while (acquire_sem(fDialogSem) == B_INTERRUPTED);
- bool retValue = fDialogValue;
+ bool retValue = fDialogValue;
- if(Lock())
- Quit();
+ if (Lock())
+ Quit();
- return retValue;
+ return retValue;
}
void VimSelectFontDialog::_UpdateFontStyles()
{
- _CleanList(fStylesList);
-
- int32 selIndex = -1;
- int32 count = count_font_styles(fFontFamily);
- for (int32 i = 0; i < count; i++) {
- font_style style;
- uint32 flags = 0;
- if (get_font_style(fFontFamily, i, &style, &flags) == B_OK) {
- fStylesList->AddItem(new BStringItem((const char*)style));
- if (strncmp(style, fFontStyle, B_FONT_STYLE_LENGTH) == 0)
- selIndex = i;
- }
+ _CleanList(fStylesList);
+
+ int32 selIndex = -1;
+ int32 count = count_font_styles(fFontFamily);
+ for (int32 i = 0; i < count; i++) {
+ font_style style;
+ uint32 flags = 0;
+ if (get_font_style(fFontFamily, i, &style, &flags) == B_OK) {
+ fStylesList->AddItem(new BStringItem((const char*)style));
+ if (strncmp(style, fFontStyle, B_FONT_STYLE_LENGTH) == 0)
+ selIndex = i;
}
+ }
- if (selIndex >= 0) {
- fStylesList->Select(selIndex);
- fStylesList->ScrollToSelection();
- } else
- fStylesList->Select(0);
+ if (selIndex >= 0) {
+ fStylesList->Select(selIndex);
+ fStylesList->ScrollToSelection();
+ } else
+ fStylesList->Select(0);
}
void VimSelectFontDialog::_UpdateSizeInputPreview()
{
- char buf[10] = {0};
- vim_snprintf(buf, sizeof(buf), (char*)"%.0f", fFontSize);
- fSizesInput->SetText(buf);
+ char buf[10] = {0};
+ vim_snprintf(buf, sizeof(buf), (char*)"%.0f", fFontSize);
+ fSizesInput->SetText(buf);
}
void VimSelectFontDialog::_UpdateFontPreview()
{
- BFont font;
- fPreview->GetFont(&font);
- font.SetSize(fFontSize);
- font.SetFamilyAndStyle(fFontFamily, fFontStyle);
- fPreview->SetFont(&font, B_FONT_FAMILY_AND_STYLE | B_FONT_SIZE);
+ BFont font;
+ fPreview->GetFont(&font);
+ font.SetSize(fFontSize);
+ font.SetFamilyAndStyle(fFontFamily, fFontStyle);
+ fPreview->SetFont(&font, B_FONT_FAMILY_AND_STYLE | B_FONT_SIZE);
- BString str;
- str << fFontFamily << " " << fFontStyle << ", " << (int)fFontSize << " pt.";
- fPreview->SetText(str);
+ BString str;
+ str << fFontFamily << " " << fFontStyle << ", " << (int)fFontSize << " pt.";
+ fPreview->SetText(str);
}
- bool
+ bool
VimSelectFontDialog::_UpdateFromListItem(BListView* list, char* text, int textSize)
{
- int32 index = list->CurrentSelection();
- if (index < 0)
- return false;
- BStringItem* item = (BStringItem*)list->ItemAt(index);
- if (item == NULL)
- return false;
- strncpy(text, item->Text(), textSize);
- return true;
+ int32 index = list->CurrentSelection();
+ if (index < 0)
+ return false;
+ BStringItem* item = (BStringItem*)list->ItemAt(index);
+ if (item == NULL)
+ return false;
+ strncpy(text, item->Text(), textSize);
+ return true;
}
void VimSelectFontDialog::MessageReceived(BMessage *msg)
{
- switch (msg->what) {
- case kVimDialogOKButtonMsg:
- strncpy(*fFamily, fFontFamily, B_FONT_FAMILY_LENGTH);
- strncpy(*fStyle, fFontStyle, B_FONT_STYLE_LENGTH);
- *fSize = fFontSize;
- fDialogValue = true;
- case kVimDialogCancelButtonMsg:
- delete_sem(fDialogSem);
- fDialogSem = -1;
- return;
- case B_KEY_UP:
- {
- int32 key = 0;
- if (msg->FindInt32("raw_char", &key) == B_OK
- && key == B_ESCAPE) {
- delete_sem(fDialogSem);
- fDialogSem = -1;
- }
- }
- break;
+ switch (msg->what) {
+ case kVimDialogOKButtonMsg:
+ strncpy(*fFamily, fFontFamily, B_FONT_FAMILY_LENGTH);
+ strncpy(*fStyle, fFontStyle, B_FONT_STYLE_LENGTH);
+ *fSize = fFontSize;
+ fDialogValue = true;
+ case kVimDialogCancelButtonMsg:
+ delete_sem(fDialogSem);
+ fDialogSem = -1;
+ return;
+ case B_KEY_UP:
+ {
+ int32 key = 0;
+ if (msg->FindInt32("raw_char", &key) == B_OK
+ && key == B_ESCAPE) {
+ delete_sem(fDialogSem);
+ fDialogSem = -1;
+ }
+ }
+ break;
- case kVimDialogFamilySelectMsg:
- if (_UpdateFromListItem(fFamiliesList,
- fFontFamily, B_FONT_FAMILY_LENGTH)) {
- _UpdateFontStyles();
- _UpdateFontPreview();
- }
- break;
- case kVimDialogStyleSelectMsg:
- if (_UpdateFromListItem(fStylesList,
- fFontStyle, B_FONT_STYLE_LENGTH))
- _UpdateFontPreview();
- break;
- case kVimDialogSizeSelectMsg:
- {
- char buf[10] = {0};
- if (_UpdateFromListItem(fSizesList, buf, sizeof(buf))) {
- float size = atof(buf);
- if (size > 0.f) {
- fFontSize = size;
- _UpdateSizeInputPreview();
- _UpdateFontPreview();
- }
- }
- }
- break;
- case kVimDialogSizeInputMsg:
- {
- float size = atof(fSizesInput->Text());
- if (size > 0.f) {
- fFontSize = size;
- _UpdateFontPreview();
- }
- }
- break;
- default:
- break;
- }
- return BWindow::MessageReceived(msg);
+ case kVimDialogFamilySelectMsg:
+ if (_UpdateFromListItem(fFamiliesList,
+ fFontFamily, B_FONT_FAMILY_LENGTH)) {
+ _UpdateFontStyles();
+ _UpdateFontPreview();
+ }
+ break;
+ case kVimDialogStyleSelectMsg:
+ if (_UpdateFromListItem(fStylesList,
+ fFontStyle, B_FONT_STYLE_LENGTH))
+ _UpdateFontPreview();
+ break;
+ case kVimDialogSizeSelectMsg:
+ {
+ char buf[10] = {0};
+ if (_UpdateFromListItem(fSizesList, buf, sizeof(buf))) {
+ float size = atof(buf);
+ if (size > 0.f) {
+ fFontSize = size;
+ _UpdateSizeInputPreview();
+ _UpdateFontPreview();
+ }
+ }
+ }
+ break;
+ case kVimDialogSizeInputMsg:
+ {
+ float size = atof(fSizesInput->Text());
+ if (size > 0.f) {
+ fFontSize = size;
+ _UpdateFontPreview();
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ return BWindow::MessageReceived(msg);
}
#endif // FEAT_GUI_DIALOG
@@ -2717,330 +2717,330 @@ void VimSelectFontDialog::MessageReceived(BMessage *msg)
static BMessage * MenuMessage(vimmenu_T *menu);
VimToolbar::VimToolbar(BRect frame, const char *name) :
- BBox(frame, name, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW | B_FRAME_EVENTS, B_PLAIN_BORDER)
+ BBox(frame, name, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW | B_FRAME_EVENTS, B_PLAIN_BORDER)
{
}
VimToolbar::~VimToolbar()
{
- int32 count = fButtonsList.CountItems();
- for(int32 i = 0; i < count; i++)
- delete (BPictureButton*)fButtonsList.ItemAt(i);
- fButtonsList.MakeEmpty();
+ int32 count = fButtonsList.CountItems();
+ for (int32 i = 0; i < count; i++)
+ delete (BPictureButton*)fButtonsList.ItemAt(i);
+ fButtonsList.MakeEmpty();
- delete normalButtonsBitmap;
- delete grayedButtonsBitmap;
- normalButtonsBitmap = NULL;
- grayedButtonsBitmap = NULL;
+ delete normalButtonsBitmap;
+ delete grayedButtonsBitmap;
+ normalButtonsBitmap = NULL;
+ grayedButtonsBitmap = NULL;
}
- void
+ void
VimToolbar::AttachedToWindow()
{
- BBox::AttachedToWindow();
+ BBox::AttachedToWindow();
- SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
+ SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
}
- float
+ float
VimToolbar::ToolbarHeight() const
{
- float size = NULL == normalButtonsBitmap ? 18. : normalButtonsBitmap->Bounds().Height();
- return size + ToolbarMargin * 2 + ButtonMargin * 2 + 1;
+ float size = NULL == normalButtonsBitmap ? 18. : normalButtonsBitmap->Bounds().Height();
+ return size + ToolbarMargin * 2 + ButtonMargin * 2 + 1;
}
- bool
+ bool
VimToolbar::ModifyBitmapToGrayed(BBitmap *bitmap)
{
- float height = bitmap->Bounds().Height();
- float width = bitmap->Bounds().Width();
+ float height = bitmap->Bounds().Height();
+ float width = bitmap->Bounds().Width();
- rgb_color *bits = (rgb_color*)bitmap->Bits();
- int32 pixels = bitmap->BitsLength() / 4;
- for(int32 i = 0; i < pixels; i++) {
- bits[i].red = bits[i].green =
- bits[i].blue = ((uint32)bits[i].red + bits[i].green + bits[i].blue) / 3;
- bits[i].alpha /= 4;
- }
+ rgb_color *bits = (rgb_color*)bitmap->Bits();
+ int32 pixels = bitmap->BitsLength() / 4;
+ for (int32 i = 0; i < pixels; i++) {
+ bits[i].red = bits[i].green =
+ bits[i].blue = ((uint32)bits[i].red + bits[i].green + bits[i].blue) / 3;
+ bits[i].alpha /= 4;
+ }
- return true;
+ return true;
}
- bool
+ bool
VimToolbar::PrepareButtonBitmaps()
{
- // first try to load potentially customized $VIRUNTIME/bitmaps/builtin-tools.png
- normalButtonsBitmap = LoadVimBitmap("builtin-tools.png");
- if(normalButtonsBitmap == NULL)
- // customized not found? dig application resources for "builtin-tools" one
- normalButtonsBitmap = BTranslationUtils::GetBitmap(B_PNG_FORMAT, "builtin-tools");
+ // first try to load potentially customized $VIRUNTIME/bitmaps/builtin-tools.png
+ normalButtonsBitmap = LoadVimBitmap("builtin-tools.png");
+ if (normalButtonsBitmap == NULL)
+ // customized not found? dig application resources for "builtin-tools" one
+ normalButtonsBitmap = BTranslationUtils::GetBitmap(B_PNG_FORMAT, "builtin-tools");
- if(normalButtonsBitmap == NULL)
- return false;
+ if (normalButtonsBitmap == NULL)
+ return false;
- BMessage archive;
- normalButtonsBitmap->Archive(&archive);
+ BMessage archive;
+ normalButtonsBitmap->Archive(&archive);
- grayedButtonsBitmap = new BBitmap(&archive);
- if(grayedButtonsBitmap == NULL)
- return false;
+ grayedButtonsBitmap = new BBitmap(&archive);
+ if (grayedButtonsBitmap == NULL)
+ return false;
- // modify grayed bitmap
- ModifyBitmapToGrayed(grayedButtonsBitmap);
+ // modify grayed bitmap
+ ModifyBitmapToGrayed(grayedButtonsBitmap);
- return true;
+ return true;
}
BBitmap *VimToolbar::LoadVimBitmap(const char* fileName)
{
- BBitmap *bitmap = NULL;
+ BBitmap *bitmap = NULL;
- int mustfree = 0;
- char_u* runtimePath = vim_getenv((char_u*)"VIMRUNTIME", &mustfree);
- if(runtimePath != NULL && fileName != NULL) {
- BString strPath((char*)runtimePath);
- strPath << "/bitmaps/" << fileName;
- bitmap = BTranslationUtils::GetBitmap(strPath.String());
- }
+ int mustfree = 0;
+ char_u* runtimePath = vim_getenv((char_u*)"VIMRUNTIME", &mustfree);
+ if (runtimePath != NULL && fileName != NULL) {
+ BString strPath((char*)runtimePath);
+ strPath << "/bitmaps/" << fileName;
+ bitmap = BTranslationUtils::GetBitmap(strPath.String());
+ }
- if(mustfree)
- vim_free(runtimePath);
+ if (mustfree)
+ vim_free(runtimePath);
- return bitmap;
+ return bitmap;
}
- bool
+ bool
VimToolbar::GetPictureFromBitmap(BPicture *pictureTo, int32 index, BBitmap *bitmapFrom, bool pressed)
{
- float size = bitmapFrom->Bounds().Height() + 1.;
+ float size = bitmapFrom->Bounds().Height() + 1.;
- BView view(BRect(0, 0, size, size), "", 0, 0);
+ BView view(BRect(0, 0, size, size), "", 0, 0);
- AddChild(&view);
- view.BeginPicture(pictureTo);
+ AddChild(&view);
+ view.BeginPicture(pictureTo);
- view.SetHighColor(ui_color(B_PANEL_BACKGROUND_COLOR));
- view.FillRect(view.Bounds());
- view.SetDrawingMode(B_OP_OVER);
+ view.SetHighColor(ui_color(B_PANEL_BACKGROUND_COLOR));
+ view.FillRect(view.Bounds());
+ view.SetDrawingMode(B_OP_OVER);
- BRect source(0, 0, size - 1, size - 1);
- BRect destination(source);
+ BRect source(0, 0, size - 1, size - 1);
+ BRect destination(source);
- source.OffsetBy(size * index, 0);
- destination.OffsetBy(ButtonMargin, ButtonMargin);
+ source.OffsetBy(size * index, 0);
+ destination.OffsetBy(ButtonMargin, ButtonMargin);
- view.DrawBitmap(bitmapFrom, source, destination);
+ view.DrawBitmap(bitmapFrom, source, destination);
- if(pressed) {
- rgb_color shineColor = ui_color(B_SHINE_COLOR);
- rgb_color shadowColor = ui_color(B_SHADOW_COLOR);
- size += ButtonMargin * 2 - 1;
- view.BeginLineArray(4);
- view.AddLine(BPoint(0, 0), BPoint(size, 0), shadowColor);
- view.AddLine(BPoint(size, 0), BPoint(size, size), shineColor);
- view.AddLine(BPoint(size, size), BPoint(0, size), shineColor);
- view.AddLine(BPoint(0, size), BPoint(0, 0), shadowColor);
- view.EndLineArray();
- }
+ if (pressed) {
+ rgb_color shineColor = ui_color(B_SHINE_COLOR);
+ rgb_color shadowColor = ui_color(B_SHADOW_COLOR);
+ size += ButtonMargin * 2 - 1;
+ view.BeginLineArray(4);
+ view.AddLine(BPoint(0, 0), BPoint(size, 0), shadowColor);
+ view.AddLine(BPoint(size, 0), BPoint(size, size), shineColor);
+ view.AddLine(BPoint(size, size), BPoint(0, size), shineColor);
+ view.AddLine(BPoint(0, size), BPoint(0, 0), shadowColor);
+ view.EndLineArray();
+ }
- view.EndPicture();
- RemoveChild(&view);
+ view.EndPicture();
+ RemoveChild(&view);
- return true;
+ return true;
}
- bool
+ bool
VimToolbar::AddButton(int32 index, vimmenu_T *menu)
{
- BPictureButton *button = NULL;
- if(!menu_is_separator(menu->name)) {
- float size = normalButtonsBitmap ?
- normalButtonsBitmap->Bounds().Height() + 1. + ButtonMargin * 2 : 18.;
- BRect frame(0, 0, size, size);
- BPicture pictureOn;
- BPicture pictureOff;
- BPicture pictureGray;
-
- if(menu->iconfile == NULL && menu->iconidx >= 0 && normalButtonsBitmap) {
- GetPictureFromBitmap(&pictureOn, menu->iconidx, normalButtonsBitmap, true);
- GetPictureFromBitmap(&pictureOff, menu->iconidx, normalButtonsBitmap, false);
- GetPictureFromBitmap(&pictureGray, menu->iconidx, grayedButtonsBitmap, false);
- } else {
+ BPictureButton *button = NULL;
+ if (!menu_is_separator(menu->name)) {
+ float size = normalButtonsBitmap ?
+ normalButtonsBitmap->Bounds().Height() + 1. + ButtonMargin * 2 : 18.;
+ BRect frame(0, 0, size, size);
+ BPicture pictureOn;
+ BPicture pictureOff;
+ BPicture pictureGray;
+
+ if (menu->iconfile == NULL && menu->iconidx >= 0 && normalButtonsBitmap) {
+ GetPictureFromBitmap(&pictureOn, menu->iconidx, normalButtonsBitmap, true);
+ GetPictureFromBitmap(&pictureOff, menu->iconidx, normalButtonsBitmap, false);
+ GetPictureFromBitmap(&pictureGray, menu->iconidx, grayedButtonsBitmap, false);
+ } else {
- char_u buffer[MAXPATHL] = {0};
- BBitmap *bitmap = NULL;
+ char_u buffer[MAXPATHL] = {0};
+ BBitmap *bitmap = NULL;
- if(menu->iconfile) {
- gui_find_iconfile(menu->iconfile, buffer, (char*)"png");
- bitmap = BTranslationUtils::GetBitmap((char*)buffer);
- }
+ if (menu->iconfile) {
+ gui_find_iconfile(menu->iconfile, buffer, (char*)"png");
+ bitmap = BTranslationUtils::GetBitmap((char*)buffer);
+ }
- if(bitmap == NULL && gui_find_bitmap(menu->name, buffer, (char*)"png") == OK)
- bitmap = BTranslationUtils::GetBitmap((char*)buffer);
+ if (bitmap == NULL && gui_find_bitmap(menu->name, buffer, (char*)"png") == OK)
+ bitmap = BTranslationUtils::GetBitmap((char*)buffer);
- if(bitmap == NULL)
- bitmap = new BBitmap(BRect(0, 0, size, size), B_RGB32);
+ if (bitmap == NULL)
+ bitmap = new BBitmap(BRect(0, 0, size, size), B_RGB32);
- GetPictureFromBitmap(&pictureOn, 0, bitmap, true);
- GetPictureFromBitmap(&pictureOff, 0, bitmap, false);
- ModifyBitmapToGrayed(bitmap);
- GetPictureFromBitmap(&pictureGray, 0, bitmap, false);
+ GetPictureFromBitmap(&pictureOn, 0, bitmap, true);
+ GetPictureFromBitmap(&pictureOff, 0, bitmap, false);
+ ModifyBitmapToGrayed(bitmap);
+ GetPictureFromBitmap(&pictureGray, 0, bitmap, false);
- delete bitmap;
- }
+ delete bitmap;
+ }
- button = new BPictureButton(frame, (char*)menu->name,
- &pictureOff, &pictureOn, MenuMessage(menu));
+ button = new BPictureButton(frame, (char*)menu->name,
+ &pictureOff, &pictureOn, MenuMessage(menu));
- button->SetDisabledOn(&pictureGray);
- button->SetDisabledOff(&pictureGray);
+ button->SetDisabledOn(&pictureGray);
+ button->SetDisabledOff(&pictureGray);
- button->SetTarget(gui.vimTextArea);
+ button->SetTarget(gui.vimTextArea);
- AddChild(button);
+ AddChild(button);
- menu->button = button;
- }
+ menu->button = button;
+ }
- bool result = fButtonsList.AddItem(button, index);
- InvalidateLayout();
- return result;
+ bool result = fButtonsList.AddItem(button, index);
+ InvalidateLayout();
+ return result;
}
- bool
+ bool
VimToolbar::RemoveButton(vimmenu_T *menu)
{
- if(menu->button) {
- if(fButtonsList.RemoveItem(menu->button)) {
- delete menu->button;
- menu->button = NULL;
- }
+ if (menu->button) {
+ if (fButtonsList.RemoveItem(menu->button)) {
+ delete menu->button;
+ menu->button = NULL;
}
- return true;
+ }
+ return true;
}
- bool
+ bool
VimToolbar::GrayButton(vimmenu_T *menu, int grey)
{
- if(menu->button) {
- int32 index = fButtonsList.IndexOf(menu->button);
- if(index >= 0)
- menu->button->SetEnabled(grey ? false : true);
- }
- return true;
+ if (menu->button) {
+ int32 index = fButtonsList.IndexOf(menu->button);
+ if (index >= 0)
+ menu->button->SetEnabled(grey ? false : true);
+ }
+ return true;
}
- void
+ void
VimToolbar::InvalidateLayout()
{
- int32 offset = ToolbarMargin;
- int32 count = fButtonsList.CountItems();
- for(int32 i = 0; i < count; i++) {
- BPictureButton *button = (BPictureButton *)fButtonsList.ItemAt(i);
- if(button) {
- button->MoveTo(offset, ToolbarMargin);
- offset += button->Bounds().Width() + ToolbarMargin;
- } else
- offset += ToolbarMargin * 3;
- }
+ int32 offset = ToolbarMargin;
+ int32 count = fButtonsList.CountItems();
+ for (int32 i = 0; i < count; i++) {
+ BPictureButton *button = (BPictureButton *)fButtonsList.ItemAt(i);
+ if (button) {
+ button->MoveTo(offset, ToolbarMargin);
+ offset += button->Bounds().Width() + ToolbarMargin;
+ } else
+ offset += ToolbarMargin * 3;
+ }
}
#endif /*FEAT_TOOLBAR*/
#if defined(FEAT_GUI_TABLINE)
- float
+ float
VimTabLine::TablineHeight() const
{
-// float size = NULL == normalButtonsBitmap ? 18. : normalButtonsBitmap->Bounds().Height();
-// return size + ToolbarMargin * 2 + ButtonMargin * 2 + 1;
- return TabHeight(); // + ToolbarMargin;
+// float size = NULL == normalButtonsBitmap ? 18. : normalButtonsBitmap->Bounds().Height();
+// return size + ToolbarMargin * 2 + ButtonMargin * 2 + 1;
+ return TabHeight(); // + ToolbarMargin;
}
void
VimTabLine::MouseDown(BPoint point)
{
- if(!gui_mch_showing_tabline())
- return;
+ if (!gui_mch_showing_tabline())
+ return;
- BMessage *m = Window()->CurrentMessage();
- assert(m);
+ BMessage *m = Window()->CurrentMessage();
+ assert(m);
- int32 buttons = 0;
- m->FindInt32("buttons", &buttons);
+ int32 buttons = 0;
+ m->FindInt32("buttons", &buttons);
- int32 clicks = 0;
- m->FindInt32("clicks", &clicks);
+ int32 clicks = 0;
+ m->FindInt32("clicks", &clicks);
- int index = 0; // 0 means here - no tab found
- for (int i = 0; i < CountTabs(); i++) {
- if(TabFrame(i).Contains(point)) {
- index = i + 1; // indexes are 1-based
- break;
- }
+ int index = 0; // 0 means here - no tab found
+ for (int i = 0; i < CountTabs(); i++) {
+ if (TabFrame(i).Contains(point)) {
+ index = i + 1; // indexes are 1-based
+ break;
}
+ }
- int event = -1;
+ int event = -1;
- if ((buttons & B_PRIMARY_MOUSE_BUTTON) && clicks > 1)
- // left button double click on - create new tab
- event = TABLINE_MENU_NEW;
+ if ((buttons & B_PRIMARY_MOUSE_BUTTON) && clicks > 1)
+ // left button double click on - create new tab
+ event = TABLINE_MENU_NEW;
- else if (buttons & B_TERTIARY_MOUSE_BUTTON)
- // middle button click - close the pointed tab
- // or create new one in case empty space
- event = index > 0 ? TABLINE_MENU_CLOSE : TABLINE_MENU_NEW;
+ else if (buttons & B_TERTIARY_MOUSE_BUTTON)
+ // middle button click - close the pointed tab
+ // or create new one in case empty space
+ event = index > 0 ? TABLINE_MENU_CLOSE : TABLINE_MENU_NEW;
- else if (buttons & B_SECONDARY_MOUSE_BUTTON) {
- // right button click - show context menu
- BPopUpMenu* popUpMenu = new BPopUpMenu("tabLineContextMenu", false, false);
- popUpMenu->AddItem(new BMenuItem(_("Close tabi R"), new BMessage(TABLINE_MENU_CLOSE)));
- popUpMenu->AddItem(new BMenuItem(_("New tab T"), new BMessage(TABLINE_MENU_NEW)));
- popUpMenu->AddItem(new BMenuItem(_("Open tab..."), new BMessage(TABLINE_MENU_OPEN)));
+ else if (buttons & B_SECONDARY_MOUSE_BUTTON) {
+ // right button click - show context menu
+ BPopUpMenu* popUpMenu = new BPopUpMenu("tabLineContextMenu", false, false);
+ popUpMenu->AddItem(new BMenuItem(_("Close tabi R"), new BMessage(TABLINE_MENU_CLOSE)));
+ popUpMenu->AddItem(new BMenuItem(_("New tab T"), new BMessage(TABLINE_MENU_NEW)));
+ popUpMenu->AddItem(new BMenuItem(_("Open tab..."), new BMessage(TABLINE_MENU_OPEN)));
- ConvertToScreen(&point);
- BMenuItem* item = popUpMenu->Go(point);
- if (item != NULL) {
- event = item->Command();
- }
+ ConvertToScreen(&point);
+ BMenuItem* item = popUpMenu->Go(point);
+ if (item != NULL) {
+ event = item->Command();
+ }
- delete popUpMenu;
+ delete popUpMenu;
- } else {
- // default processing
- BTabView::MouseDown(point);
- return;
- }
+ } else {
+ // default processing
+ BTabView::MouseDown(point);
+ return;
+ }
- if (event < 0)
- return;
+ if (event < 0)
+ return;
- VimTablineMenuMsg tmm;
- tmm.index = index;
- tmm.event = event;
- write_port(gui.vdcmp, VimMsg::TablineMenu, &tmm, sizeof(tmm));
+ VimTablineMenuMsg tmm;
+ tmm.index = index;
+ tmm.event = event;
+ write_port(gui.vdcmp, VimMsg::TablineMenu, &tmm, sizeof(tmm));
}
void
VimTabLine::VimTab::Select(BView* owner)
{
- BTab::Select(owner);
+ BTab::Select(owner);
- VimTabLine *tabLine = gui.vimForm->TabLine();
- if(tabLine != NULL) {
+ VimTabLine *tabLine = gui.vimForm->TabLine();
+ if (tabLine != NULL) {
- int32 i = 0;
- for (; i < tabLine->CountTabs(); i++)
- if(this == tabLine->TabAt(i))
- break;
+ int32 i = 0;
+ for (; i < tabLine->CountTabs(); i++)
+ if (this == tabLine->TabAt(i))
+ break;
-// printf("%d:%d:%s\n", i, tabLine->CountTabs(), tabLine->TabAt(i)->Label());
- if(i < tabLine->CountTabs()) {
- VimTablineMsg tm;
- tm.index = i + 1;
- write_port(gui.vdcmp, VimMsg::Tabline, &tm, sizeof(tm));
- }
+// printf("%d:%d:%s\n", i, tabLine->CountTabs(), tabLine->TabAt(i)->Label());
+ if (i < tabLine->CountTabs()) {
+ VimTablineMsg tm;
+ tm.index = i + 1;
+ write_port(gui.vdcmp, VimMsg::Tabline, &tm, sizeof(tm));
}
+ }
}
#endif // defined(FEAT_GUI_TABLINE)
@@ -3053,123 +3053,123 @@ key_map *keyMap;
char *keyMapChars;
int main_exitcode = 127;
- status_t
+ status_t
gui_haiku_process_event(bigtime_t timeout)
{
- struct VimMsg vm;
- int32 what;
- ssize_t size;
+ struct VimMsg vm;
+ int32 what;
+ ssize_t size;
- size = read_port_etc(gui.vdcmp, &what, &vm, sizeof(vm),
- B_TIMEOUT, timeout);
+ size = read_port_etc(gui.vdcmp, &what, &vm, sizeof(vm),
+ B_TIMEOUT, timeout);
- if (size >= 0) {
- switch (what) {
- case VimMsg::Key:
- {
- char_u *string = vm.u.Key.chars;
- int len = vm.u.Key.length;
- if (len == 1 && string[0] == Ctrl_chr('C')) {
- trash_input_buf();
- got_int = TRUE;
- }
-
- if (vm.u.Key.csi_escape)
+ if (size >= 0) {
+ switch (what) {
+ case VimMsg::Key:
+ {
+ char_u *string = vm.u.Key.chars;
+ int len = vm.u.Key.length;
+ if (len == 1 && string[0] == Ctrl_chr('C')) {
+ trash_input_buf();
+ got_int = TRUE;
+ }
+
+ if (vm.u.Key.csi_escape)
#ifndef FEAT_MBYTE_IME
- {
- int i;
- char_u buf[2];
-
- for (i = 0; i < len; ++i)
- {
- add_to_input_buf(string + i, 1);
- if (string[i] == CSI)
- {
- // Turn CSI into K_CSI.
- buf[0] = KS_EXTRA;
- buf[1] = (int)KE_CSI;
- add_to_input_buf(buf, 2);
- }
- }
- }
+ {
+ int i;
+ char_u buf[2];
+
+ for (i = 0; i < len; ++i)
+ {
+ add_to_input_buf(string + i, 1);
+ if (string[i] == CSI)
+ {
+ // Turn CSI into K_CSI.
+ buf[0] = KS_EXTRA;
+ buf[1] = (int)KE_CSI;
+ add_to_input_buf(buf, 2);
+ }
+ }
+ }
#else
- add_to_input_buf_csi(string, len);
+ add_to_input_buf_csi(string, len);
#endif
- else
- add_to_input_buf(string, len);
- }
- break;
- case VimMsg::Resize:
- gui_resize_shell(vm.u.NewSize.width, vm.u.NewSize.height);
- break;
- case VimMsg::ScrollBar:
- {
- /*
- * If loads of scroll messages queue up, use only the last
- * one. Always report when the scrollbar stops dragging.
- * This is not perfect yet anyway: these events are queued
- * yet again, this time in the keyboard input buffer.
- */
- int32 oldCount =
- atomic_add(&vm.u.Scroll.sb->scrollEventCount, -1);
- if (oldCount <= 1 || !vm.u.Scroll.stillDragging)
- gui_drag_scrollbar(vm.u.Scroll.sb->getGsb(),
- vm.u.Scroll.value, vm.u.Scroll.stillDragging);
- }
- break;
+ else
+ add_to_input_buf(string, len);
+ }
+ break;
+ case VimMsg::Resize:
+ gui_resize_shell(vm.u.NewSize.width, vm.u.NewSize.height);
+ break;
+ case VimMsg::ScrollBar:
+ {
+ /*
+ * If loads of scroll messages queue up, use only the last
+ * one. Always report when the scrollbar stops dragging.
+ * This is not perfect yet anyway: these events are queued
+ * yet again, this time in the keyboard input buffer.
+ */
+ int32 oldCount =
+ atomic_add(&vm.u.Scroll.sb->scrollEventCount, -1);
+ if (oldCount <= 1 || !vm.u.Scroll.stillDragging)
+ gui_drag_scrollbar(vm.u.Scroll.sb->getGsb(),
+ vm.u.Scroll.value, vm.u.Scroll.stillDragging);
+ }
+ break;
#if defined(FEAT_MENU)
- case VimMsg::Menu:
- gui_menu_cb(vm.u.Menu.guiMenu);
- break;
+ case VimMsg::Menu:
+ gui_menu_cb(vm.u.Menu.guiMenu);
+ break;
#endif
- case VimMsg::Mouse:
- {
- int32 oldCount;
- if (vm.u.Mouse.button == MOUSE_DRAG)
- oldCount =
- atomic_add(&gui.vimTextArea->mouseDragEventCount, -1);
- else
- oldCount = 0;
- if (oldCount <= 1)
- gui_send_mouse_event(vm.u.Mouse.button, vm.u.Mouse.x,
- vm.u.Mouse.y, vm.u.Mouse.repeated_click,
- vm.u.Mouse.modifiers);
- }
- break;
- case VimMsg::MouseMoved:
- {
- gui_mouse_moved(vm.u.MouseMoved.x, vm.u.MouseMoved.y);
- }
- break;
- case VimMsg::Focus:
- gui.in_focus = vm.u.Focus.active;
- // XXX Signal that scrollbar dragging has stopped?
- // This is needed because we don't get a MouseUp if
- // that happens while outside the window... :-(
- if (gui.dragged_sb) {
- gui.dragged_sb = SBAR_NONE;
- }
- // gui_update_cursor(TRUE, FALSE);
- break;
- case VimMsg::Refs:
- ::RefsReceived(vm.u.Refs.message, vm.u.Refs.changedir);
- break;
- case VimMsg::Tabline:
- send_tabline_event(vm.u.Tabline.index);
- break;
- case VimMsg::TablineMenu:
- send_tabline_menu_event(vm.u.TablineMenu.index, vm.u.TablineMenu.event);
- break;
- default:
- // unrecognised message, ignore it
- break;
+ case VimMsg::Mouse:
+ {
+ int32 oldCount;
+ if (vm.u.Mouse.button == MOUSE_DRAG)
+ oldCount =
+ atomic_add(&gui.vimTextArea->mouseDragEventCount, -1);
+ else
+ oldCount = 0;
+ if (oldCount <= 1)
+ gui_send_mouse_event(vm.u.Mouse.button, vm.u.Mouse.x,
+ vm.u.Mouse.y, vm.u.Mouse.repeated_click,
+ vm.u.Mouse.modifiers);
+ }
+ break;
+ case VimMsg::MouseMoved:
+ {
+ gui_mouse_moved(vm.u.MouseMoved.x, vm.u.MouseMoved.y);
}
+ break;
+ case VimMsg::Focus:
+ gui.in_focus = vm.u.Focus.active;
+ // XXX Signal that scrollbar dragging has stopped?
+ // This is needed because we don't get a MouseUp if
+ // that happens while outside the window... :-(
+ if (gui.dragged_sb) {
+ gui.dragged_sb = SBAR_NONE;
+ }
+ // gui_update_cursor(TRUE, FALSE);
+ break;
+ case VimMsg::Refs:
+ ::RefsReceived(vm.u.Refs.message, vm.u.Refs.changedir);
+ break;
+ case VimMsg::Tabline:
+ send_tabline_event(vm.u.Tabline.index);
+ break;
+ case VimMsg::TablineMenu:
+ send_tabline_menu_event(vm.u.TablineMenu.index, vm.u.TablineMenu.event);
+ break;
+ default:
+ // unrecognised message, ignore it
+ break;
}
+ }
- /*
- * If size < B_OK, it is an error code.
- */
- return size;
+ /*
+ * If size < B_OK, it is an error code.
+ */
+ return size;
}
/*
@@ -3185,42 +3185,42 @@ gui_haiku_process_event(bigtime_t timeout)
* If there is no window, don't call Lock() but do succeed.
*/
- int
+ int
vim_lock_screen()
{
- return !gui.vimWindow || gui.vimWindow->Lock();
+ return !gui.vimWindow || gui.vimWindow->Lock();
}
- void
+ void
vim_unlock_screen()
{
- if (gui.vimWindow)
- gui.vimWindow->Unlock();
+ if (gui.vimWindow)
+ gui.vimWindow->Unlock();
}
#define RUN_BAPPLICATION_IN_NEW_THREAD 0
#if RUN_BAPPLICATION_IN_NEW_THREAD
- int32
+ int32
run_vimapp(void *args)
{
- VimApp app(appsig);
+ VimApp app(appsig);
- gui.vimApp = &app;
- app.Run(); // Run until Quit() called
+ gui.vimApp = &app;
+ app.Run(); // Run until Quit() called
- return 0;
+ return 0;
}
#else
- int32
+ int32
call_main(void *args)
{
- struct MainArgs *ma = (MainArgs *)args;
+ struct MainArgs *ma = (MainArgs *)args;
- return main(ma->argc, ma->argv);
+ return main(ma->argc, ma->argv);
}
#endif
@@ -3229,251 +3229,251 @@ call_main(void *args)
* deleted from argv, and *argc is decremented accordingly. This is called
* when vim is started, whether or not the GUI has been started.
*/
- void
+ void
gui_mch_prepare(
- int *argc,
- char **argv)
+ int *argc,
+ char **argv)
{
- /*
- * We don't have any command line arguments for the BeOS GUI yet,
- * but this is an excellent place to create our Application object.
- */
- if (!gui.vimApp) {
- thread_info tinfo;
- get_thread_info(find_thread(NULL), &tinfo);
+ /*
+ * We don't have any command line arguments for the BeOS GUI yet,
+ * but this is an excellent place to create our Application object.
+ */
+ if (!gui.vimApp) {
+ thread_info tinfo;
+ get_thread_info(find_thread(NULL), &tinfo);
- // May need the port very early on to process RefsReceived()
- gui.vdcmp = create_port(B_MAX_PORT_COUNT, "vim VDCMP");
+ // May need the port very early on to process RefsReceived()
+ gui.vdcmp = create_port(B_MAX_PORT_COUNT, "vim VDCMP");
#if RUN_BAPPLICATION_IN_NEW_THREAD
- thread_id tid = spawn_thread(run_vimapp, "vim VimApp",
- tinfo.priority, NULL);
- if (tid >= B_OK) {
- resume_thread(tid);
- } else {
- getout(1);
- }
-#else
- MainArgs ma = { *argc, argv };
- thread_id tid = spawn_thread(call_main, "vim main()",
- tinfo.priority, &ma);
- if (tid >= B_OK) {
- VimApp app(appsig);
-
- gui.vimApp = &app;
- resume_thread(tid);
- /*
- * This is rather horrible.
- * call_main will call main() again...
- * There will be no infinite recursion since
- * gui.vimApp is set now.
- */
- app.Run(); // Run until Quit() called
- // fprintf(stderr, "app.Run() returned...\n");
- status_t dummy_exitcode;
- (void)wait_for_thread(tid, &dummy_exitcode);
-
- /*
- * This path should be the normal one taken to exit Vim.
- * The main() thread calls mch_exit() which calls
- * gui_mch_exit() which terminates its thread.
- */
- exit(main_exitcode);
- }
-#endif
+ thread_id tid = spawn_thread(run_vimapp, "vim VimApp",
+ tinfo.priority, NULL);
+ if (tid >= B_OK) {
+ resume_thread(tid);
+ } else {
+ getout(1);
}
- // Don't fork() when starting the GUI. Spawned threads are not
- // duplicated with a fork(). The result is a mess.
- gui.dofork = FALSE;
- /*
- * XXX Try to determine whether we were started from
- * the Tracker or the terminal.
- * It would be nice to have this work, because the Tracker
- * follows symlinks, so even if you double-click on gvim,
- * when it is a link to vim it will still pass a command name
- * of vim...
- * We try here to see if stdin comes from /dev/null. If so,
- * (or if there is an error, which should never happen) start the GUI.
- * This does the wrong thing for vim - </dev/null, and we're
- * too early to see the command line parsing. Tough.
- * On the other hand, it starts the gui for vim file & which is nice.
- */
- if (!isatty(0)) {
- struct stat stat_stdin, stat_dev_null;
-
- if (fstat(0, &stat_stdin) == -1 ||
- stat("/dev/null", &stat_dev_null) == -1 ||
- (stat_stdin.st_dev == stat_dev_null.st_dev &&
- stat_stdin.st_ino == stat_dev_null.st_ino))
- gui.starting = TRUE;
+#else
+ MainArgs ma = { *argc, argv };
+ thread_id tid = spawn_thread(call_main, "vim main()",
+ tinfo.priority, &ma);
+ if (tid >= B_OK) {
+ VimApp app(appsig);
+
+ gui.vimApp = &app;
+ resume_thread(tid);
+ /*
+ * This is rather horrible.
+ * call_main will call main() again...
+ * There will be no infinite recursion since
+ * gui.vimApp is set now.
+ */
+ app.Run(); // Run until Quit() called
+ // fprintf(stderr, "app.Run() returned...\n");
+ status_t dummy_exitcode;
+ (void)wait_for_thread(tid, &dummy_exitcode);
+
+ /*
+ * This path should be the normal one taken to exit Vim.
+ * The main() thread calls mch_exit() which calls
+ * gui_mch_exit() which terminates its thread.
+ */
+ exit(main_exitcode);
}
+#endif
+ }
+ // Don't fork() when starting the GUI. Spawned threads are not
+ // duplicated with a fork(). The result is a mess.
+ gui.dofork = FALSE;
+ /*
+ * XXX Try to determine whether we were started from
+ * the Tracker or the terminal.
+ * It would be nice to have this work, because the Tracker
+ * follows symlinks, so even if you double-click on gvim,
+ * when it is a link to vim it will still pass a command name
+ * of vim...
+ * We try here to see if stdin comes from /dev/null. If so,
+ * (or if there is an error, which should never happen) start the GUI.
+ * This does the wrong thing for vim - </dev/null, and we're
+ * too early to see the command line parsing. Tough.
+ * On the other hand, it starts the gui for vim file & which is nice.
+ */
+ if (!isatty(0)) {
+ struct stat stat_stdin, stat_dev_null;
+
+ if (fstat(0, &stat_stdin) == -1 ||
+ stat("/dev/null", &stat_dev_null) == -1 ||
+ (stat_stdin.st_dev == stat_dev_null.st_dev &&
+ stat_stdin.st_ino == stat_dev_null.st_ino))
+ gui.starting = TRUE;
+ }
}
/*
* Check if the GUI can be started. Called before gvimrc is sourced.
* Return OK or FAIL.
*/
- int
+ int
gui_mch_init_check(void)
{
- return OK; // TODO: GUI can always be started?
+ return OK; // TODO: GUI can always be started?
}
/*
- * Initialise the GUI. Create all the windows, set up all the call-backs
+ * Initialise the GUI. Create all the windows, set up all the call-backs
* etc.
*/
- int
+ int
gui_mch_init()
{
display_errors();
- gui.def_norm_pixel = RGB(0x00, 0x00, 0x00); // black
- gui.def_back_pixel = RGB(0xFF, 0xFF, 0xFF); // white
- gui.norm_pixel = gui.def_norm_pixel;
- gui.back_pixel = gui.def_back_pixel;
+ gui.def_norm_pixel = RGB(0x00, 0x00, 0x00); // black
+ gui.def_back_pixel = RGB(0xFF, 0xFF, 0xFF); // white
+ gui.norm_pixel = gui.def_norm_pixel;
+ gui.back_pixel = gui.def_back_pixel;
- gui.scrollbar_width = (int) B_V_SCROLL_BAR_WIDTH;
- gui.scrollbar_height = (int) B_H_SCROLL_BAR_HEIGHT;
+ gui.scrollbar_width = (int) B_V_SCROLL_BAR_WIDTH;
+ gui.scrollbar_height = (int) B_H_SCROLL_BAR_HEIGHT;
#ifdef FEAT_MENU
- gui.menu_height = 19; // initial guess -
- // correct for my default settings
+ gui.menu_height = 19; // initial guess -
+ // correct for my default settings
#endif
- gui.border_offset = 3; // coordinates are inside window borders
+ gui.border_offset = 3; // coordinates are inside window borders
- if (gui.vdcmp < B_OK)
- return FAIL;
- get_key_map(&keyMap, &keyMapChars);
+ if (gui.vdcmp < B_OK)
+ return FAIL;
+ get_key_map(&keyMap, &keyMapChars);
- gui.vimWindow = new VimWindow(); // hidden and locked
- if (!gui.vimWindow)
- return FAIL;
+ gui.vimWindow = new VimWindow(); // hidden and locked
+ if (!gui.vimWindow)
+ return FAIL;
- gui.vimWindow->Run(); // Run() unlocks but does not show
+ gui.vimWindow->Run(); // Run() unlocks but does not show
- // Get the colors from the "Normal" group (set in syntax.c or in a vimrc
- // file)
- set_normal_colors();
+ // Get the colors from the "Normal" group (set in syntax.c or in a vimrc
+ // file)
+ set_normal_colors();
- /*
- * Check that none of the colors are the same as the background color
- */
- gui_check_colors();
+ /*
+ * Check that none of the colors are the same as the background color
+ */
+ gui_check_colors();
- // Get the colors for the highlight groups (gui_check_colors() might have
- // changed them)
- highlight_gui_started(); // re-init colors and fonts
+ // Get the colors for the highlight groups (gui_check_colors() might have
+ // changed them)
+ highlight_gui_started(); // re-init colors and fonts
- gui_mch_new_colors(); // window must exist for this
+ gui_mch_new_colors(); // window must exist for this
- return OK;
+ return OK;
}
/*
* Called when the foreground or background color has been changed.
*/
- void
+ void
gui_mch_new_colors()
{
- rgb_color rgb = GUI_TO_RGB(gui.back_pixel);
+ rgb_color rgb = GUI_TO_RGB(gui.back_pixel);
- if (gui.vimWindow->Lock()) {
- gui.vimForm->SetViewColor(rgb);
- // Does this not have too much effect for those small rectangles?
- gui.vimForm->Invalidate();
- gui.vimWindow->Unlock();
- }
+ if (gui.vimWindow->Lock()) {
+ gui.vimForm->SetViewColor(rgb);
+ // Does this not have too much effect for those small rectangles?
+ gui.vimForm->Invalidate();
+ gui.vimWindow->Unlock();
+ }
}
/*
* Open the GUI window which was created by a call to gui_mch_init().
*/
- int
+ int
gui_mch_open()
{
- if (gui_win_x != -1 && gui_win_y != -1)
- gui_mch_set_winpos(gui_win_x, gui_win_y);
+ if (gui_win_x != -1 && gui_win_y != -1)
+ gui_mch_set_winpos(gui_win_x, gui_win_y);
- // Actually open the window
- if (gui.vimWindow->Lock()) {
- gui.vimWindow->Show();
- gui.vimWindow->Unlock();
- return OK;
- }
+ // Actually open the window
+ if (gui.vimWindow->Lock()) {
+ gui.vimWindow->Show();
+ gui.vimWindow->Unlock();
+ return OK;
+ }
- return FAIL;
+ return FAIL;
}
- void
+ void
gui_mch_exit(int vim_exitcode)
{
- if (gui.vimWindow) {
- thread_id tid = gui.vimWindow->Thread();
- gui.vimWindow->Lock();
- gui.vimWindow->Quit();
- // Wait until it is truely gone
- int32 exitcode;
- wait_for_thread(tid, &exitcode);
- }
- delete_port(gui.vdcmp);
+ if (gui.vimWindow) {
+ thread_id tid = gui.vimWindow->Thread();
+ gui.vimWindow->Lock();
+ gui.vimWindow->Quit();
+ // Wait until it is truely gone
+ int32 exitcode;
+ wait_for_thread(tid, &exitcode);
+ }
+ delete_port(gui.vdcmp);
#if !RUN_BAPPLICATION_IN_NEW_THREAD
- /*
- * We are in the main() thread - quit the App thread and
- * quit ourselves (passing on the exitcode). Use a global since the
- * value from exit_thread() is only used if wait_for_thread() is
- * called in time (race condition).
- */
+ /*
+ * We are in the main() thread - quit the App thread and
+ * quit ourselves (passing on the exitcode). Use a global since the
+ * value from exit_thread() is only used if wait_for_thread() is
+ * called in time (race condition).
+ */
#endif
- if (gui.vimApp) {
- VimTextAreaView::guiBlankMouse(false);
+ if (gui.vimApp) {
+ VimTextAreaView::guiBlankMouse(false);
- main_exitcode = vim_exitcode;
+ main_exitcode = vim_exitcode;
#if RUN_BAPPLICATION_IN_NEW_THREAD
- thread_id tid = gui.vimApp->Thread();
- int32 exitcode;
- gui.vimApp->Lock();
- gui.vimApp->Quit();
- gui.vimApp->Unlock();
- wait_for_thread(tid, &exitcode);
+ thread_id tid = gui.vimApp->Thread();
+ int32 exitcode;
+ gui.vimApp->Lock();
+ gui.vimApp->Quit();
+ gui.vimApp->Unlock();
+ wait_for_thread(tid, &exitcode);
#else
- gui.vimApp->Lock();
- gui.vimApp->Quit();
- gui.vimApp->Unlock();
- // suicide
- exit_thread(vim_exitcode);
+ gui.vimApp->Lock();
+ gui.vimApp->Quit();
+ gui.vimApp->Unlock();
+ // suicide
+ exit_thread(vim_exitcode);
#endif
- }
- // If we are somehow still here, let mch_exit() handle things.
+ }
+ // If we are somehow still here, let mch_exit() handle things.
}
/*
* Get the position of the top left corner of the window.
*/
- int
+ int
gui_mch_get_winpos(int *x, int *y)
{
- if (gui.vimWindow->Lock()) {
- BRect r;
- r = gui.vimWindow->Frame();
- gui.vimWindow->Unlock();
- *x = (int)r.left;
- *y = (int)r.top;
- return OK;
- }
- else
- return FAIL;
+ if (gui.vimWindow->Lock()) {
+ BRect r;
+ r = gui.vimWindow->Frame();
+ gui.vimWindow->Unlock();
+ *x = (int)r.left;
+ *y = (int)r.top;
+ return OK;
+ }
+ else
+ return FAIL;
}
/*
* Set the position of the top left corner of the window to the given
* coordinates.
*/
- void
+ void
gui_mch_set_winpos(int x, int y)
{
- if (gui.vimWindow->Lock()) {
- gui.vimWindow->MoveTo(x, y);
- gui.vimWindow->Unlock();
- }
+ if (gui.vimWindow->Lock()) {
+ gui.vimWindow->MoveTo(x, y);
+ gui.vimWindow->Unlock();
+ }
}
/*
@@ -3481,98 +3481,98 @@ gui_mch_set_winpos(int x, int y)
*/
void
gui_mch_set_shellsize(
- int width,
- int height,
- int min_width,
- int min_height,
- int base_width,
- int base_height,
- int direction) // TODO: utilize?
-{
+ int width,
+ int height,
+ int min_width,
+ int min_height,
+ int base_width,
+ int base_height,
+ int direction) // TODO: utilize?
+{
+ /*
+ * We are basically given the size of the VimForm, if I understand
+ * correctly. Since it fills the window completely, this will also
+ * be the size of the window.
+ */
+ if (gui.vimWindow->Lock()) {
+ gui.vimWindow->ResizeTo(width - PEN_WIDTH, height - PEN_WIDTH);
+
+ // set size limits
+ float minWidth, maxWidth, minHeight, maxHeight;
+
+ gui.vimWindow->GetSizeLimits(&minWidth, &maxWidth,
+ &minHeight, &maxHeight);
+ gui.vimWindow->SetSizeLimits(min_width, maxWidth,
+ min_height, maxHeight);
+
/*
- * We are basically given the size of the VimForm, if I understand
- * correctly. Since it fills the window completely, this will also
- * be the size of the window.
+ * Set the resizing alignment depending on font size.
*/
- if (gui.vimWindow->Lock()) {
- gui.vimWindow->ResizeTo(width - PEN_WIDTH, height - PEN_WIDTH);
+ gui.vimWindow->SetWindowAlignment(
+ B_PIXEL_ALIGNMENT, // window_alignment mode,
+ 1, // int32 h,
+ 0, // int32 hOffset = 0,
+ gui.char_width, // int32 width = 0,
+ base_width, // int32 widthOffset = 0,
+ 1, // int32 v = 0,
+ 0, // int32 vOffset = 0,
+ gui.char_height, // int32 height = 0,
+ base_height // int32 heightOffset = 0
+ );
- // set size limits
- float minWidth, maxWidth, minHeight, maxHeight;
-
- gui.vimWindow->GetSizeLimits(&minWidth, &maxWidth,
- &minHeight, &maxHeight);
- gui.vimWindow->SetSizeLimits(min_width, maxWidth,
- min_height, maxHeight);
-
- /*
- * Set the resizing alignment depending on font size.
- */
- gui.vimWindow->SetWindowAlignment(
- B_PIXEL_ALIGNMENT, // window_alignment mode,
- 1, // int32 h,
- 0, // int32 hOffset = 0,
- gui.char_width, // int32 width = 0,
- base_width, // int32 widthOffset = 0,
- 1, // int32 v = 0,
- 0, // int32 vOffset = 0,
- gui.char_height, // int32 height = 0,
- base_height // int32 heightOffset = 0
- );
-
- gui.vimWindow->Unlock();
- }
+ gui.vimWindow->Unlock();
+ }
}
void
gui_mch_get_screen_dimensions(
- int *screen_w,
- int *screen_h)
+ int *screen_w,
+ int *screen_h)
{
- BRect frame;
+ BRect frame;
- {
- BScreen screen(gui.vimWindow);
+ {
+ BScreen screen(gui.vimWindow);
- if (screen.IsValid()) {
- frame = screen.Frame();
- } else {
- frame.right = 640;
- frame.bottom = 480;
- }
+ if (screen.IsValid()) {
+ frame = screen.Frame();
+ } else {
+ frame.right = 640;
+ frame.bottom = 480;
}
+ }
- // XXX approximations...
- *screen_w = (int) frame.right - 2 * gui.scrollbar_width - 20;
- *screen_h = (int) frame.bottom - gui.scrollbar_height
+ // XXX approximations...
+ *screen_w = (int) frame.right - 2 * gui.scrollbar_width - 20;
+ *screen_h = (int) frame.bottom - gui.scrollbar_height
#ifdef FEAT_MENU
- - gui.menu_height
+ - gui.menu_height
#endif
- - 30;
+ - 30;
}
void
gui_mch_set_text_area_pos(
- int x,
- int y,
- int w,
- int h)
+ int x,
+ int y,
+ int w,
+ int h)
{
- if (!gui.vimTextArea)
- return;
+ if (!gui.vimTextArea)
+ return;
- if (gui.vimWindow->Lock()) {
- gui.vimTextArea->MoveTo(x, y);
- gui.vimTextArea->ResizeTo(w - PEN_WIDTH, h - PEN_WIDTH);
+ if (gui.vimWindow->Lock()) {
+ gui.vimTextArea->MoveTo(x, y);
+ gui.vimTextArea->ResizeTo(w - PEN_WIDTH, h - PEN_WIDTH);
#ifdef FEAT_GUI_TABLINE
- if(gui.vimForm->TabLine() != NULL) {
- gui.vimForm->TabLine()->ResizeTo(w, gui.vimForm->TablineHeight());
- }
+ if (gui.vimForm->TabLine() != NULL) {
+ gui.vimForm->TabLine()->ResizeTo(w, gui.vimForm->TablineHeight());
+ }
#endif // FEAT_GUI_TABLINE
- gui.vimWindow->Unlock();
- }
+ gui.vimWindow->Unlock();
+ }
}
@@ -3582,115 +3582,115 @@ gui_mch_set_text_area_pos(
void
gui_mch_enable_scrollbar(
- scrollbar_T *sb,
- int flag)
+ scrollbar_T *sb,
+ int flag)
{
- VimScrollBar *vsb = sb->id;
- if (gui.vimWindow->Lock()) {
- /*
- * This function is supposed to be idempotent, but Show()/Hide()
- * is not. Therefore we test if they are needed.
- */
- if (flag) {
- if (vsb->IsHidden()) {
- vsb->Show();
- }
- } else {
- if (!vsb->IsHidden()) {
- vsb->Hide();
- }
- }
- gui.vimWindow->Unlock();
+ VimScrollBar *vsb = sb->id;
+ if (gui.vimWindow->Lock()) {
+ /*
+ * This function is supposed to be idempotent, but Show()/Hide()
+ * is not. Therefore we test if they are needed.
+ */
+ if (flag) {
+ if (vsb->IsHidden()) {
+ vsb->Show();
+ }
+ } else {
+ if (!vsb->IsHidden()) {
+ vsb->Hide();
+ }
}
+ gui.vimWindow->Unlock();
+ }
}
void
gui_mch_set_scrollbar_thumb(
- scrollbar_T *sb,
- int val,
- int size,
- int max)
-{
- if (gui.vimWindow->Lock()) {
- VimScrollBar *s = sb->id;
- if (max == 0) {
- s->SetValue(0);
- s->SetRange(0.0, 0.0);
- } else {
- s->SetProportion((float)size / (max + 1.0));
- s->SetSteps(1.0, size > 5 ? size - 2 : size);
-#ifndef SCROLL_PAST_END // really only defined in gui.c...
- max = max + 1 - size;
+ scrollbar_T *sb,
+ int val,
+ int size,
+ int max)
+{
+ if (gui.vimWindow->Lock()) {
+ VimScrollBar *s = sb->id;
+ if (max == 0) {
+ s->SetValue(0);
+ s->SetRange(0.0, 0.0);
+ } else {
+ s->SetProportion((float)size / (max + 1.0));
+ s->SetSteps(1.0, size > 5 ? size - 2 : size);
+#ifndef SCROLL_PAST_END // really only defined in gui.c...
+ max = max + 1 - size;
#endif
- if (max < s->Value()) {
- /*
- * If the new maximum is lower than the current value,
- * setting it would cause the value to be clipped and
- * therefore a ValueChanged() call.
- * We avoid this by setting the value first, because
- * it presumably is <= max.
- */
- s->SetValue(val);
- s->SetRange(0.0, max);
- } else {
- /*
- * In the other case, set the range first, since the
- * new value might be higher than the current max.
- */
- s->SetRange(0.0, max);
- s->SetValue(val);
- }
- }
- gui.vimWindow->Unlock();
+ if (max < s->Value()) {
+ /*
+ * If the new maximum is lower than the current value,
+ * setting it would cause the value to be clipped and
+ * therefore a ValueChanged() call.
+ * We avoid this by setting the value first, because
+ * it presumably is <= max.
+ */
+ s->SetValue(val);
+ s->SetRange(0.0, max);
+ } else {
+ /*
+ * In the other case, set the range first, since the
+ * new value might be higher than the current max.
+ */
+ s->SetRange(0.0, max);
+ s->SetValue(val);
+ }
}
+ gui.vimWindow->Unlock();
+ }
}
void
gui_mch_set_scrollbar_pos(
- scrollbar_T *sb,
- int x,
- int y,
- int w,
- int h)
-{
- if (gui.vimWindow->Lock()) {
- BRect winb = gui.vimWindow->Bounds();
- float vsbx = x, vsby = y;
- VimScrollBar *vsb = sb->id;
- vsb->ResizeTo(w - PEN_WIDTH, h - PEN_WIDTH);
- if(winb.right-(x+w)<w) vsbx = winb.right - (w - PEN_WIDTH);
- vsb->MoveTo(vsbx, vsby);
- gui.vimWindow->Unlock();
- }
+ scrollbar_T *sb,
+ int x,
+ int y,
+ int w,
+ int h)
+{
+ if (gui.vimWindow->Lock()) {
+ BRect winb = gui.vimWindow->Bounds();
+ float vsbx = x, vsby = y;
+ VimScrollBar *vsb = sb->id;
+ vsb->ResizeTo(w - PEN_WIDTH, h - PEN_WIDTH);
+ if (winb.right-(x+w)<w) vsbx = winb.right - (w - PEN_WIDTH);
+ vsb->MoveTo(vsbx, vsby);
+ gui.vimWindow->Unlock();
+ }
}
void
gui_mch_create_scrollbar(
- scrollbar_T *sb,
- int orient) // SBAR_VERT or SBAR_HORIZ
+ scrollbar_T *sb,
+ int orient) // SBAR_VERT or SBAR_HORIZ
{
- orientation posture =
- (orient == SBAR_HORIZ) ? B_HORIZONTAL : B_VERTICAL;
+ orientation posture =
+ (orient == SBAR_HORIZ) ? B_HORIZONTAL : B_VERTICAL;
- VimScrollBar *vsb = sb->id = new VimScrollBar(sb, posture);
- if (gui.vimWindow->Lock()) {
- vsb->SetTarget(gui.vimTextArea);
- vsb->Hide();
- gui.vimForm->AddChild(vsb);
- gui.vimWindow->Unlock();
- }
+ VimScrollBar *vsb = sb->id = new VimScrollBar(sb, posture);
+ if (gui.vimWindow->Lock()) {
+ vsb->SetTarget(gui.vimTextArea);
+ vsb->Hide();
+ gui.vimForm->AddChild(vsb);
+ gui.vimWindow->Unlock();
+ }
}
#if defined(FEAT_WINDOWS) || defined(FEAT_GUI_HAIKU) || defined(PROTO)
void
gui_mch_destroy_scrollbar(
- scrollbar_T *sb)
+ scrollbar_T *sb)
{
- if (gui.vimWindow->Lock()) {
- sb->id->RemoveSelf();
- delete sb->id;
- gui.vimWindow->Unlock();
- }
+ if (gui.vimWindow->Lock()) {
+ sb->id->RemoveSelf();
+ delete sb->id;
+ gui.vimWindow->Unlock();
+ }
}
#endif
@@ -3709,65 +3709,65 @@ gui_mch_is_blink_off(void)
* This is a simple state machine:
* BLINK_NONE not blinking at all
* BLINK_OFF blinking, cursor is not shown
- * BLINK_ON blinking, cursor is shown
+ * BLINK_ON blinking, cursor is shown
*/
#define BLINK_NONE 0
#define BLINK_OFF 1
#define BLINK_ON 2
-static int blink_state = BLINK_NONE;
-static long_u blink_waittime = 700;
-static long_u blink_ontime = 400;
-static long_u blink_offtime = 250;
-static int blink_timer = 0;
+static int blink_state = BLINK_NONE;
+static long_u blink_waittime = 700;
+static long_u blink_ontime = 400;
+static long_u blink_offtime = 250;
+static int blink_timer = 0;
void
gui_mch_set_blinking(
- long waittime,
- long on,
- long off)
+ long waittime,
+ long on,
+ long off)
{
- // TODO
- blink_waittime = waittime;
- blink_ontime = on;
- blink_offtime = off;
+ // TODO
+ blink_waittime = waittime;
+ blink_ontime = on;
+ blink_offtime = off;
}
/*
* Stop the cursor blinking. Show the cursor if it wasn't shown.
*/
- void
+ void
gui_mch_stop_blink(int may_call_gui_update_cursor)
{
- // TODO
- if (blink_timer != 0)
- {
- // XtRemoveTimeOut(blink_timer);
- blink_timer = 0;
- }
- if (blink_state == BLINK_OFF)
- gui_update_cursor(TRUE, FALSE);
- blink_state = BLINK_NONE;
+ // TODO
+ if (blink_timer != 0)
+ {
+ // XtRemoveTimeOut(blink_timer);
+ blink_timer = 0;
+ }
+ if (blink_state == BLINK_OFF)
+ gui_update_cursor(TRUE, FALSE);
+ blink_state = BLINK_NONE;
}
/*
* Start the cursor blinking. If it was already blinking, this restarts the
* waiting time and shows the cursor.
*/
- void
+ void
gui_mch_start_blink()
{
- // TODO
- if (blink_timer != 0)
- ;// XtRemoveTimeOut(blink_timer);
- // Only switch blinking on if none of the times is zero
- if (blink_waittime && blink_ontime && blink_offtime && gui.in_focus)
- {
- blink_timer = 1; // XtAppAddTimeOut(app_context, blink_waittime,
- blink_state = BLINK_ON;
- gui_update_cursor(TRUE, FALSE);
- }
+ // TODO
+ if (blink_timer != 0)
+ ;// XtRemoveTimeOut(blink_timer);
+ // Only switch blinking on if none of the times is zero
+ if (blink_waittime && blink_ontime && blink_offtime && gui.in_focus)
+ {
+ blink_timer = 1; // XtAppAddTimeOut(app_context, blink_waittime,
+ blink_state = BLINK_ON;
+ gui_update_cursor(TRUE, FALSE);
+ }
}
/*
@@ -3776,144 +3776,144 @@ gui_mch_start_blink()
*/
int
gui_mch_init_font(
- char_u *font_name,
- int fontset)
+ char_u *font_name,
+ int fontset)
{
- if (gui.vimWindow->Lock())
- {
- int rc = gui.vimTextArea->mchInitFont(font_name);
- gui.vimWindow->Unlock();
+ if (gui.vimWindow->Lock())
+ {
+ int rc = gui.vimTextArea->mchInitFont(font_name);
+ gui.vimWindow->Unlock();
- return rc;
- }
+ return rc;
+ }
- return FAIL;
+ return FAIL;
}
- int
+ int
gui_mch_adjust_charsize()
{
- return FAIL;
+ return FAIL;
}
- int
+ int
gui_mch_font_dialog(font_family* family, font_style* style, float* size)
{
#if defined(FEAT_GUI_DIALOG)
- // gui.vimWindow->Unlock();
- VimSelectFontDialog *dialog = new VimSelectFontDialog(family, style, size);
- return dialog->Go();
+ // gui.vimWindow->Unlock();
+ VimSelectFontDialog *dialog = new VimSelectFontDialog(family, style, size);
+ return dialog->Go();
#else
- return NOFONT;
+ return NOFONT;
#endif // FEAT_GUI_DIALOG
}
GuiFont
gui_mch_get_font(
- char_u *name,
- int giveErrorIfMissing)
+ char_u *name,
+ int giveErrorIfMissing)
{
- static VimFont *fontList = NULL;
+ static VimFont *fontList = NULL;
- if (!gui.in_use) // can't do this when GUI not running
- return NOFONT;
+ if (!gui.in_use) // can't do this when GUI not running
+ return NOFONT;
- // storage for locally modified name;
- const int buff_size = B_FONT_FAMILY_LENGTH + B_FONT_STYLE_LENGTH + 20;
- static char font_name[buff_size] = {0};
- font_family family = {0};
- font_style style = {0};
- float size = 0.f;
+ // storage for locally modified name;
+ const int buff_size = B_FONT_FAMILY_LENGTH + B_FONT_STYLE_LENGTH + 20;
+ static char font_name[buff_size] = {0};
+ font_family family = {0};
+ font_style style = {0};
+ float size = 0.f;
- if (name == 0 && be_fixed_font == 0) {
- if(giveErrorIfMissing)
- semsg(_(e_font), name);
- return NOFONT;
- }
+ if (name == 0 && be_fixed_font == 0) {
+ if (giveErrorIfMissing)
+ semsg(_(e_font), name);
+ return NOFONT;
+ }
- bool useSelectGUI = false;
- if (name != NULL)
- if (STRCMP(name, "*") == 0) {
- useSelectGUI = true;
- STRNCPY(font_name, hl_get_font_name(), buff_size);
- } else
- STRNCPY(font_name, name, buff_size);
-
- if (font_name[0] == 0) {
- be_fixed_font->GetFamilyAndStyle(&family, &style);
- size = be_fixed_font->Size();
- vim_snprintf(font_name, buff_size,
- (char*)"%s/%s/%.0f", family, style, size);
- }
+ bool useSelectGUI = false;
+ if (name != NULL)
+ if (STRCMP(name, "*") == 0) {
+ useSelectGUI = true;
+ STRNCPY(font_name, hl_get_font_name(), buff_size);
+ } else
+ STRNCPY(font_name, name, buff_size);
- // replace underscores with spaces
- char* end = 0;
- while (end = strchr((char *)font_name, '_'))
- *end = ' ';
-
- // store the name before strtok corrupt the buffer ;-)
- static char buff[buff_size] = {0};
- STRNCPY(buff, font_name, buff_size);
- STRNCPY(family, strtok(buff, "/\0"), B_FONT_FAMILY_LENGTH);
- char* style_s = strtok(0, "/\0");
- if (style_s != 0)
- STRNCPY(style, style_s, B_FONT_STYLE_LENGTH);
- size = atof((style_s != 0) ? strtok(0, "/\0") : "0");
-
- if (useSelectGUI) {
- if(gui_mch_font_dialog(&family, &style, &size) == NOFONT)
- return FAIL;
- // compose for further processing
- vim_snprintf(font_name, buff_size,
- (char*)"%s/%s/%.0f", family, style, size);
- hl_set_font_name((char_u*)font_name);
-
- // Set guifont to the name of the selected font.
- char_u* new_p_guifont = (char_u*)alloc(STRLEN(font_name) + 1);
- if (new_p_guifont != NULL) {
- STRCPY(new_p_guifont, font_name);
- vim_free(p_guifont);
- p_guifont = new_p_guifont;
- // Replace spaces in the font name with underscores.
- for ( ; *new_p_guifont; ++new_p_guifont)
- if (*new_p_guifont == ' ')
- *new_p_guifont = '_';
- }
+ if (font_name[0] == 0) {
+ be_fixed_font->GetFamilyAndStyle(&family, &style);
+ size = be_fixed_font->Size();
+ vim_snprintf(font_name, buff_size,
+ (char*)"%s/%s/%.0f", family, style, size);
+ }
+
+ // replace underscores with spaces
+ char* end = 0;
+ while (end = strchr((char *)font_name, '_'))
+ *end = ' ';
+
+ // store the name before strtok corrupt the buffer ;-)
+ static char buff[buff_size] = {0};
+ STRNCPY(buff, font_name, buff_size);
+ STRNCPY(family, strtok(buff, "/\0"), B_FONT_FAMILY_LENGTH);
+ char* style_s = strtok(0, "/\0");
+ if (style_s != 0)
+ STRNCPY(style, style_s, B_FONT_STYLE_LENGTH);
+ size = atof((style_s != 0) ? strtok(0, "/\0") : "0");
+
+ if (useSelectGUI) {
+ if (gui_mch_font_dialog(&family, &style, &size) == NOFONT)
+ return FAIL;
+ // compose for further processing
+ vim_snprintf(font_name, buff_size,
+ (char*)"%s/%s/%.0f", family, style, size);
+ hl_set_font_name((char_u*)font_name);
+
+ // Set guifont to the name of the selected font.
+ char_u* new_p_guifont = (char_u*)alloc(STRLEN(font_name) + 1);
+ if (new_p_guifont != NULL) {
+ STRCPY(new_p_guifont, font_name);
+ vim_free(p_guifont);
+ p_guifont = new_p_guifont;
+ // Replace spaces in the font name with underscores.
+ for ( ; *new_p_guifont; ++new_p_guifont)
+ if (*new_p_guifont == ' ')
+ *new_p_guifont = '_';
}
+ }
- VimFont *flp;
- for (flp = fontList; flp; flp = flp->next) {
- if (STRCMP(font_name, flp->name) == 0) {
- flp->refcount++;
- return (GuiFont)flp;
- }
+ VimFont *flp;
+ for (flp = fontList; flp; flp = flp->next) {
+ if (STRCMP(font_name, flp->name) == 0) {
+ flp->refcount++;
+ return (GuiFont)flp;
}
+ }
- VimFont *font = new VimFont();
- font->name = vim_strsave((char_u*)font_name);
+ VimFont *font = new VimFont();
+ font->name = vim_strsave((char_u*)font_name);
- if(count_font_styles(family) <= 0) {
- if (giveErrorIfMissing)
- semsg(_(e_font), font->name);
- delete font;
- return NOFONT;
- }
+ if (count_font_styles(family) <= 0) {
+ if (giveErrorIfMissing)
+ semsg(_(e_font), font->name);
+ delete font;
+ return NOFONT;
+ }
- // Remember font in the static list for later use
- font->next = fontList;
- fontList = font;
+ // Remember font in the static list for later use
+ font->next = fontList;
+ fontList = font;
- font->SetFamilyAndStyle(family, style);
- if(size > 0.f)
- font->SetSize(size);
+ font->SetFamilyAndStyle(family, style);
+ if (size > 0.f)
+ font->SetSize(size);
- font->SetSpacing(B_FIXED_SPACING);
- font->SetEncoding(B_UNICODE_UTF8);
+ font->SetSpacing(B_FIXED_SPACING);
+ font->SetEncoding(B_UNICODE_UTF8);
- return (GuiFont)font;
+ return (GuiFont)font;
}
/*
@@ -3921,73 +3921,73 @@ gui_mch_get_font(
*/
void
gui_mch_set_font(
- GuiFont font)
+ GuiFont font)
{
- if (gui.vimWindow->Lock()) {
- VimFont *vf = (VimFont *)font;
+ if (gui.vimWindow->Lock()) {
+ VimFont *vf = (VimFont *)font;
- gui.vimTextArea->SetFont(vf);
+ gui.vimTextArea->SetFont(vf);
- gui.char_width = (int) vf->StringWidth("n");
- font_height fh;
- vf->GetHeight(&fh);
- gui.char_height = (int)(fh.ascent + 0.9999)
- + (int)(fh.descent + 0.9999) + (int)(fh.leading + 0.9999);
- gui.char_ascent = (int)(fh.ascent + 0.9999);
+ gui.char_width = (int) vf->StringWidth("n");
+ font_height fh;
+ vf->GetHeight(&fh);
+ gui.char_height = (int)(fh.ascent + 0.9999)
+ + (int)(fh.descent + 0.9999) + (int)(fh.leading + 0.9999);
+ gui.char_ascent = (int)(fh.ascent + 0.9999);
- gui.vimWindow->Unlock();
- }
+ gui.vimWindow->Unlock();
+ }
}
// XXX TODO This is apparently never called...
void
gui_mch_free_font(
- GuiFont font)
-{
- if(font == NOFONT)
- return;
- VimFont *f = (VimFont *)font;
- if (--f->refcount <= 0) {
- if (f->refcount < 0)
- fprintf(stderr, "VimFont: refcount < 0\n");
- delete f;
- }
+ GuiFont font)
+{
+ if (font == NOFONT)
+ return;
+ VimFont *f = (VimFont *)font;
+ if (--f->refcount <= 0) {
+ if (f->refcount < 0)
+ fprintf(stderr, "VimFont: refcount < 0\n");
+ delete f;
+ }
}
- char_u *
+ char_u *
gui_mch_get_fontname(GuiFont font, char_u *name)
{
- if (name == NULL)
- return NULL;
- return vim_strsave(name);
+ if (name == NULL)
+ return NULL;
+ return vim_strsave(name);
}
/*
* Adjust gui.char_height (after 'linespace' was changed).
*/
- int
+ int
gui_mch_adjust_charheight()
{
- // TODO: linespace support?
+ // TODO: linespace support?
// #ifdef FEAT_XFONTSET
-// if (gui.fontset != NOFONTSET)
-// {
-// gui.char_height = fontset_height((XFontSet)gui.fontset) + p_linespace;
-// gui.char_ascent = fontset_ascent((XFontSet)gui.fontset)
-// + p_linespace / 2;
-// }
-// else
+// if (gui.fontset != NOFONTSET)
+// {
+// gui.char_height = fontset_height((XFontSet)gui.fontset) + p_linespace;
+// gui.char_ascent = fontset_ascent((XFontSet)gui.fontset)
+// + p_linespace / 2;
+// }
+// else
// #endif
- {
- VimFont *font = (VimFont *)gui.norm_font;
- font_height fh = {0};
- font->GetHeight(&fh);
- gui.char_height = (int)(fh.ascent + fh.descent + 0.5) + p_linespace;
- gui.char_ascent = (int)(fh.ascent + 0.5) + p_linespace / 2;
- }
- return OK;
+ {
+ VimFont *font = (VimFont *)gui.norm_font;
+ font_height fh = {0};
+ font->GetHeight(&fh);
+ gui.char_height = (int)(fh.ascent + fh.descent + 0.5) + p_linespace;
+ gui.char_ascent = (int)(fh.ascent + 0.5) + p_linespace / 2;
+ }
+ return OK;
}
/*
@@ -3997,68 +3997,68 @@ gui_mch_adjust_charheight()
void
display_errors(void)
{
- char *p;
- char_u pError[256];
+ char *p;
+ char_u pError[256];
if (error_ga.ga_data == NULL)
- return;
+ return;
// avoid putting up a message box with blanks only
for (p = (char *)error_ga.ga_data; *p; ++p)
- if (!isspace(*p))
- {
- if (STRLEN(p) > 255)
- pError[0] = 255;
- else
- pError[0] = STRLEN(p);
-
- STRNCPY(&pError[1], p, pError[0]);
-// ParamText(pError, nil, nil, nil);
-// Alert(128, nil);
- break;
- // TODO: handled message longer than 256 chars
- // use auto-sizeable alert
- // or dialog with scrollbars (TextEdit zone)
- }
+ if (!isspace(*p))
+ {
+ if (STRLEN(p) > 255)
+ pError[0] = 255;
+ else
+ pError[0] = STRLEN(p);
+
+ STRNCPY(&pError[1], p, pError[0]);
+// ParamText(pError, nil, nil, nil);
+// Alert(128, nil);
+ break;
+ // TODO: handled message longer than 256 chars
+ // use auto-sizeable alert
+ // or dialog with scrollbars (TextEdit zone)
+ }
ga_clear(&error_ga);
}
#endif
- void
+ void
gui_mch_getmouse(int *x, int *y)
{
- fprintf(stderr, "gui_mch_getmouse");
+ fprintf(stderr, "gui_mch_getmouse");
- /*int rootx, rooty, winx, winy;
- Window root, child;
- unsigned int mask;
+ /*int rootx, rooty, winx, winy;
+ Window root, child;
+ unsigned int mask;
- if (gui.wid && XQueryPointer(gui.dpy, gui.wid, &root, &child,
- &rootx, &rooty, &winx, &winy, &mask)) {
- *x = winx;
- *y = winy;
- } else*/ {
- *x = -1;
- *y = -1;
- }
+ if (gui.wid && XQueryPointer(gui.dpy, gui.wid, &root, &child,
+ &rootx, &rooty, &winx, &winy, &mask)) {
+ *x = winx;
+ *y = winy;
+ } else*/ {
+ *x = -1;
+ *y = -1;
+ }
}
- void
+ void
gui_mch_mousehide(int hide)
{
- fprintf(stderr, "gui_mch_getmouse");
- // TODO
+ fprintf(stderr, "gui_mch_getmouse");
+ // TODO
}
- static int
+ static int
hex_digit(int c)
{
- if (isdigit(c))
- return c - '0';
- c = TOLOWER_ASC(c);
- if (c >= 'a' && c <= 'f')
- return c - 'a' + 10;
- return -1000;
+ if (isdigit(c))
+ return c - '0';
+ c = TOLOWER_ASC(c);
+ if (c >= 'a' && c <= 'f')
+ return c - 'a' + 10;
+ return -1000;
}
/*
@@ -4069,166 +4069,166 @@ hex_digit(int c)
*/
guicolor_T
gui_mch_get_color(
- char_u *name)
-{
- typedef struct GuiColourTable
- {
- const char *name;
- guicolor_T colour;
- } GuiColourTable;
-
-#define NSTATIC_COLOURS 50 // 32
-#define NDYNAMIC_COLOURS 33
-#define NCOLOURS (NSTATIC_COLOURS + NDYNAMIC_COLOURS)
-
- static GuiColourTable table[NCOLOURS] =
- {
- {"Black", RGB(0x00, 0x00, 0x00)},
- {"DarkGray", RGB(0x80, 0x80, 0x80)},
- {"DarkGrey", RGB(0x80, 0x80, 0x80)},
- {"Gray", RGB(0xC0, 0xC0, 0xC0)},
- {"Grey", RGB(0xC0, 0xC0, 0xC0)},
- {"LightGray", RGB(0xD3, 0xD3, 0xD3)},
- {"LightGrey", RGB(0xD3, 0xD3, 0xD3)},
- {"Gray10", RGB(0x1A, 0x1A, 0x1A)},
- {"Grey10", RGB(0x1A, 0x1A, 0x1A)},
- {"Gray20", RGB(0x33, 0x33, 0x33)},
- {"Grey20", RGB(0x33, 0x33, 0x33)},
- {"Gray30", RGB(0x4D, 0x4D, 0x4D)},
- {"Grey30", RGB(0x4D, 0x4D, 0x4D)},
- {"Gray40", RGB(0x66, 0x66, 0x66)},
- {"Grey40", RGB(0x66, 0x66, 0x66)},
- {"Gray50", RGB(0x7F, 0x7F, 0x7F)},
- {"Grey50", RGB(0x7F, 0x7F, 0x7F)},
- {"Gray60", RGB(0x99, 0x99, 0x99)},
- {"Grey60", RGB(0x99, 0x99, 0x99)},
- {"Gray70", RGB(0xB3, 0xB3, 0xB3)},
- {"Grey70", RGB(0xB3, 0xB3, 0xB3)},
- {"Gray80", RGB(0xCC, 0xCC, 0xCC)},
- {"Grey80", RGB(0xCC, 0xCC, 0xCC)},
- {"Gray90", RGB(0xE5, 0xE5, 0xE5)},
- {"Grey90", RGB(0xE5, 0xE5, 0xE5)},
- {"White", RGB(0xFF, 0xFF, 0xFF)},
- {"DarkRed", RGB(0x80, 0x00, 0x00)},
- {"Red", RGB(0xFF, 0x00, 0x00)},
- {"LightRed", RGB(0xFF, 0xA0, 0xA0)},
- {"DarkBlue", RGB(0x00, 0x00, 0x80)},
- {"Blue", RGB(0x00, 0x00, 0xFF)},
- {"LightBlue", RGB(0xA0, 0xA0, 0xFF)},
- {"DarkGreen", RGB(0x00, 0x80, 0x00)},
- {"Green", RGB(0x00, 0xFF, 0x00)},
- {"LightGreen", RGB(0xA0, 0xFF, 0xA0)},
- {"DarkCyan", RGB(0x00, 0x80, 0x80)},
- {"Cyan", RGB(0x00, 0xFF, 0xFF)},
- {"LightCyan", RGB(0xA0, 0xFF, 0xFF)},
- {"DarkMagenta", RGB(0x80, 0x00, 0x80)},
- {"Magenta", RGB(0xFF, 0x00, 0xFF)},
- {"LightMagenta", RGB(0xFF, 0xA0, 0xFF)},
- {"Brown", RGB(0x80, 0x40, 0x40)},
- {"Yellow", RGB(0xFF, 0xFF, 0x00)},
- {"LightYellow", RGB(0xFF, 0xFF, 0xA0)},
- {"DarkYellow", RGB(0xBB, 0xBB, 0x00)},
- {"SeaGreen", RGB(0x2E, 0x8B, 0x57)},
- {"Orange", RGB(0xFF, 0xA5, 0x00)},
- {"Purple", RGB(0xA0, 0x20, 0xF0)},
- {"SlateBlue", RGB(0x6A, 0x5A, 0xCD)},
- {"Violet", RGB(0xEE, 0x82, 0xEE)},
- // NOTE: some entries are zero-allocated for NDDYNAMIC_COLORS
- // in this table!
- };
-
- static int endColour = NSTATIC_COLOURS;
- static int newColour = NSTATIC_COLOURS;
-
- int r, g, b;
- int i;
-
- if (name[0] == '#' && STRLEN(name) == 7)
- {
- // Name is in "#rrggbb" format
- r = hex_digit(name[1]) * 16 + hex_digit(name[2]);
- g = hex_digit(name[3]) * 16 + hex_digit(name[4]);
- b = hex_digit(name[5]) * 16 + hex_digit(name[6]);
- if (r < 0 || g < 0 || b < 0)
- return INVALCOLOR;
- return RGB(r, g, b);
- }
- else
- {
- // Check if the name is one of the colours we know
- for (i = 0; i < endColour; i++)
- if (STRICMP(name, table[i].name) == 0)
- return table[i].colour;
- }
+ char_u *name)
+{
+ typedef struct GuiColourTable
+ {
+ const char *name;
+ guicolor_T colour;
+ } GuiColourTable;
+
+#define NSTATIC_COLOURS 50 // 32
+#define NDYNAMIC_COLOURS 33
+#define NCOLOURS (NSTATIC_COLOURS + NDYNAMIC_COLOURS)
+
+ static GuiColourTable table[NCOLOURS] =
+ {
+ {"Black", RGB(0x00, 0x00, 0x00)},
+ {"DarkGray", RGB(0x80, 0x80, 0x80)},
+ {"DarkGrey", RGB(0x80, 0x80, 0x80)},
+ {"Gray", RGB(0xC0, 0xC0, 0xC0)},
+ {"Grey", RGB(0xC0, 0xC0, 0xC0)},
+ {"LightGray", RGB(0xD3, 0xD3, 0xD3)},
+ {"LightGrey", RGB(0xD3, 0xD3, 0xD3)},
+ {"Gray10", RGB(0x1A, 0x1A, 0x1A)},
+ {"Grey10", RGB(0x1A, 0x1A, 0x1A)},
+ {"Gray20", RGB(0x33, 0x33, 0x33)},
+ {"Grey20", RGB(0x33, 0x33, 0x33)},
+ {"Gray30", RGB(0x4D, 0x4D, 0x4D)},
+ {"Grey30", RGB(0x4D, 0x4D, 0x4D)},
+ {"Gray40", RGB(0x66, 0x66, 0x66)},
+ {"Grey40", RGB(0x66, 0x66, 0x66)},
+ {"Gray50", RGB(0x7F, 0x7F, 0x7F)},
+ {"Grey50", RGB(0x7F, 0x7F, 0x7F)},
+ {"Gray60", RGB(0x99, 0x99, 0x99)},
+ {"Grey60", RGB(0x99, 0x99, 0x99)},
+ {"Gray70", RGB(0xB3, 0xB3, 0xB3)},
+ {"Grey70", RGB(0xB3, 0xB3, 0xB3)},
+ {"Gray80", RGB(0xCC, 0xCC, 0xCC)},
+ {"Grey80", RGB(0xCC, 0xCC, 0xCC)},
+ {"Gray90", RGB(0xE5, 0xE5, 0xE5)},
+ {"Grey90", RGB(0xE5, 0xE5, 0xE5)},
+ {"White", RGB(0xFF, 0xFF, 0xFF)},
+ {"DarkRed", RGB(0x80, 0x00, 0x00)},
+ {"Red", RGB(0xFF, 0x00, 0x00)},
+ {"LightRed", RGB(0xFF, 0xA0, 0xA0)},
+ {"DarkBlue", RGB(0x00, 0x00, 0x80)},
+ {"Blue", RGB(0x00, 0x00, 0xFF)},
+ {"LightBlue", RGB(0xA0, 0xA0, 0xFF)},
+ {"DarkGreen", RGB(0x00, 0x80, 0x00)},
+ {"Green", RGB(0x00, 0xFF, 0x00)},
+ {"LightGreen", RGB(0xA0, 0xFF, 0xA0)},
+ {"DarkCyan", RGB(0x00, 0x80, 0x80)},
+ {"Cyan", RGB(0x00, 0xFF, 0xFF)},
+ {"LightCyan", RGB(0xA0, 0xFF, 0xFF)},
+ {"DarkMagenta", RGB(0x80, 0x00, 0x80)},
+ {"Magenta", RGB(0xFF, 0x00, 0xFF)},
+ {"LightMagenta", RGB(0xFF, 0xA0, 0xFF)},
+ {"Brown", RGB(0x80, 0x40, 0x40)},
+ {"Yellow", RGB(0xFF, 0xFF, 0x00)},
+ {"LightYellow", RGB(0xFF, 0xFF, 0xA0)},
+ {"DarkYellow", RGB(0xBB, 0xBB, 0x00)},
+ {"SeaGreen", RGB(0x2E, 0x8B, 0x57)},
+ {"Orange", RGB(0xFF, 0xA5, 0x00)},
+ {"Purple", RGB(0xA0, 0x20, 0xF0)},
+ {"SlateBlue", RGB(0x6A, 0x5A, 0xCD)},
+ {"Violet", RGB(0xEE, 0x82, 0xEE)},
+ // NOTE: some entries are zero-allocated for NDDYNAMIC_COLORS
+ // in this table!
+ };
+
+ static int endColour = NSTATIC_COLOURS;
+ static int newColour = NSTATIC_COLOURS;
+
+ int r, g, b;
+ int i;
+
+ if (name[0] == '#' && STRLEN(name) == 7)
+ {
+ // Name is in "#rrggbb" format
+ r = hex_digit(name[1]) * 16 + hex_digit(name[2]);
+ g = hex_digit(name[3]) * 16 + hex_digit(name[4]);
+ b = hex_digit(name[5]) * 16 + hex_digit(name[6]);
+ if (r < 0 || g < 0 || b < 0)
+ return INVALCOLOR;
+ return RGB(r, g, b);
+ }
+ else
+ {
+ // Check if the name is one of the colours we know
+ for (i = 0; i < endColour; i++)
+ if (STRICMP(name, table[i].name) == 0)
+ return table[i].colour;
+ }
- /*
- * Last attempt. Look in the file "$VIMRUNTIME/rgb.txt".
- */
- {
+ /*
+ * Last attempt. Look in the file "$VIMRUNTIME/rgb.txt".
+ */
+ {
#define LINE_LEN 100
- FILE *fd;
- char line[LINE_LEN];
- char_u *fname;
-
- fname = expand_env_save((char_u *)"$VIMRUNTIME/rgb.txt");
- if (fname == NULL)
- return INVALCOLOR;
+ FILE *fd;
+ char line[LINE_LEN];
+ char_u *fname;
- fd = fopen((char *)fname, "rt");
- vim_free(fname);
- if (fd == NULL)
- return INVALCOLOR;
+ fname = expand_env_save((char_u *)"$VIMRUNTIME/rgb.txt");
+ if (fname == NULL)
+ return INVALCOLOR;
- while (!feof(fd))
- {
- int len;
- int pos;
- char *colour;
+ fd = fopen((char *)fname, "rt");
+ vim_free(fname);
+ if (fd == NULL)
+ return INVALCOLOR;
- fgets(line, LINE_LEN, fd);
- len = strlen(line);
+ while (!feof(fd))
+ {
+ int len;
+ int pos;
+ char *colour;
- if (len <= 1 || line[len-1] != '\n')
- continue;
+ fgets(line, LINE_LEN, fd);
+ len = strlen(line);
- line[len-1] = '\0';
+ if (len <= 1 || line[len-1] != '\n')
+ continue;
- i = sscanf(line, "%d %d %d %n", &r, &g, &b, &pos);
- if (i != 3)
- continue;
+ line[len-1] = '\0';
- colour = line + pos;
+ i = sscanf(line, "%d %d %d %n", &r, &g, &b, &pos);
+ if (i != 3)
+ continue;
- if (STRICMP(colour, name) == 0)
- {
- fclose(fd);
- /*
- * Now remember this colour in the table.
- * A LRU scheme might be better but this is simpler.
- * Or could use a growing array.
- */
- guicolor_T gcolour = RGB(r,g,b);
-
- // NOTE: see note above in table allocation! We are working here with
- // dynamically allocated names, not constant ones!
- vim_free((char*)table[newColour].name);
- table[newColour].name = (char *)vim_strsave((char_u *)colour);
- table[newColour].colour = gcolour;
-
- newColour++;
- if (newColour >= NCOLOURS)
- newColour = NSTATIC_COLOURS;
- if (endColour < NCOLOURS)
- endColour = newColour;
-
- return gcolour;
- }
- }
+ colour = line + pos;
+ if (STRICMP(colour, name) == 0)
+ {
fclose(fd);
+ /*
+ * Now remember this colour in the table.
+ * A LRU scheme might be better but this is simpler.
+ * Or could use a growing array.
+ */
+ guicolor_T gcolour = RGB(r,g,b);
+
+ // NOTE: see note above in table allocation! We are working here with
+ // dynamically allocated names, not constant ones!
+ vim_free((char*)table[newColour].name);
+ table[newColour].name = (char *)vim_strsave((char_u *)colour);
+ table[newColour].colour = gcolour;
+
+ newColour++;
+ if (newColour >= NCOLOURS)
+ newColour = NSTATIC_COLOURS;
+ if (endColour < NCOLOURS)
+ endColour = newColour;
+
+ return gcolour;
+ }
}
- return INVALCOLOR;
+ fclose(fd);
+ }
+
+ return INVALCOLOR;
}
/*
@@ -4236,13 +4236,13 @@ gui_mch_get_color(
*/
void
gui_mch_set_fg_color(
- guicolor_T color)
+ guicolor_T color)
{
- rgb_color rgb = GUI_TO_RGB(color);
- if (gui.vimWindow->Lock()) {
- gui.vimTextArea->SetHighColor(rgb);
- gui.vimWindow->Unlock();
- }
+ rgb_color rgb = GUI_TO_RGB(color);
+ if (gui.vimWindow->Lock()) {
+ gui.vimTextArea->SetHighColor(rgb);
+ gui.vimWindow->Unlock();
+ }
}
/*
@@ -4250,39 +4250,39 @@ gui_mch_set_fg_color(
*/
void
gui_mch_set_bg_color(
- guicolor_T color)
+ guicolor_T color)
{
- rgb_color rgb = GUI_TO_RGB(color);
- if (gui.vimWindow->Lock()) {
- gui.vimTextArea->SetLowColor(rgb);
- gui.vimWindow->Unlock();
- }
+ rgb_color rgb = GUI_TO_RGB(color);
+ if (gui.vimWindow->Lock()) {
+ gui.vimTextArea->SetLowColor(rgb);
+ gui.vimWindow->Unlock();
+ }
}
/*
* Set the current text special color.
*/
- void
+ void
gui_mch_set_sp_color(guicolor_T color)
{
- // prev_sp_color = color;
+ // prev_sp_color = color;
}
void
gui_mch_draw_string(
- int row,
- int col,
- char_u *s,
- int len,
- int flags)
-{
- if (gui.vimWindow->Lock()) {
- gui.vimTextArea->mchDrawString(row, col, s, len, flags);
- gui.vimWindow->Unlock();
- }
+ int row,
+ int col,
+ char_u *s,
+ int len,
+ int flags)
+{
+ if (gui.vimWindow->Lock()) {
+ gui.vimTextArea->mchDrawString(row, col, s, len, flags);
+ gui.vimWindow->Unlock();
+ }
}
- guicolor_T
+ guicolor_T
gui_mch_get_rgb_color(int r, int g, int b)
{
return gui_get_rgb_color_cmn(r, g, b);
@@ -4292,40 +4292,40 @@ gui_mch_get_rgb_color(int r, int g, int b)
// Return OK if the key with the termcap name "name" is supported.
int
gui_mch_haskey(
- char_u *name)
+ char_u *name)
{
- int i;
+ int i;
- for (i = 0; special_keys[i].BeKeys != 0; i++)
- if (name[0] == special_keys[i].vim_code0 &&
- name[1] == special_keys[i].vim_code1)
- return OK;
- return FAIL;
+ for (i = 0; special_keys[i].BeKeys != 0; i++)
+ if (name[0] == special_keys[i].vim_code0 &&
+ name[1] == special_keys[i].vim_code1)
+ return OK;
+ return FAIL;
}
- void
+ void
gui_mch_beep()
{
- ::beep();
+ ::beep();
}
- void
+ void
gui_mch_flash(int msec)
{
- // Do a visual beep by reversing the foreground and background colors
+ // Do a visual beep by reversing the foreground and background colors
- if (gui.vimWindow->Lock()) {
- BRect rect = gui.vimTextArea->Bounds();
-
- gui.vimTextArea->SetDrawingMode(B_OP_INVERT);
- gui.vimTextArea->FillRect(rect);
- gui.vimTextArea->Sync();
- snooze(msec * 1000); // wait for a few msec
- gui.vimTextArea->FillRect(rect);
- gui.vimTextArea->SetDrawingMode(B_OP_COPY);
- gui.vimTextArea->Flush();
- gui.vimWindow->Unlock();
- }
+ if (gui.vimWindow->Lock()) {
+ BRect rect = gui.vimTextArea->Bounds();
+
+ gui.vimTextArea->SetDrawingMode(B_OP_INVERT);
+ gui.vimTextArea->FillRect(rect);
+ gui.vimTextArea->Sync();
+ snooze(msec * 1000); // wait for a few msec
+ gui.vimTextArea->FillRect(rect);
+ gui.vimTextArea->SetDrawingMode(B_OP_COPY);
+ gui.vimTextArea->Flush();
+ gui.vimWindow->Unlock();
+ }
}
/*
@@ -4333,45 +4333,45 @@ gui_mch_flash(int msec)
*/
void
gui_mch_invert_rectangle(
- int r,
- int c,
- int nr,
- int nc)
-{
- BRect rect;
- rect.left = FILL_X(c);
- rect.top = FILL_Y(r);
- rect.right = rect.left + nc * gui.char_width - PEN_WIDTH;
- rect.bottom = rect.top + nr * gui.char_height - PEN_WIDTH;
-
- if (gui.vimWindow->Lock()) {
- gui.vimTextArea->SetDrawingMode(B_OP_INVERT);
- gui.vimTextArea->FillRect(rect);
- gui.vimTextArea->SetDrawingMode(B_OP_COPY);
- gui.vimWindow->Unlock();
- }
+ int r,
+ int c,
+ int nr,
+ int nc)
+{
+ BRect rect;
+ rect.left = FILL_X(c);
+ rect.top = FILL_Y(r);
+ rect.right = rect.left + nc * gui.char_width - PEN_WIDTH;
+ rect.bottom = rect.top + nr * gui.char_height - PEN_WIDTH;
+
+ if (gui.vimWindow->Lock()) {
+ gui.vimTextArea->SetDrawingMode(B_OP_INVERT);
+ gui.vimTextArea->FillRect(rect);
+ gui.vimTextArea->SetDrawingMode(B_OP_COPY);
+ gui.vimWindow->Unlock();
+ }
}
/*
* Iconify the GUI window.
*/
- void
+ void
gui_mch_iconify()
{
- if (gui.vimWindow->Lock()) {
- gui.vimWindow->Minimize(true);
- gui.vimWindow->Unlock();
- }
+ if (gui.vimWindow->Lock()) {
+ gui.vimWindow->Minimize(true);
+ gui.vimWindow->Unlock();
+ }
}
#if defined(FEAT_EVAL) || defined(PROTO)
/*
* Bring the Vim window to the foreground.
*/
- void
+ void
gui_mch_set_foreground(void)
{
- // TODO
+ // TODO
}
#endif
@@ -4380,36 +4380,36 @@ gui_mch_set_foreground(void)
*/
void
gui_mch_settitle(
- char_u *title,
- char_u *icon)
+ char_u *title,
+ char_u *icon)
{
- if (gui.vimWindow->Lock()) {
- gui.vimWindow->SetTitle((char *)title);
- gui.vimWindow->Unlock();
- }
+ if (gui.vimWindow->Lock()) {
+ gui.vimWindow->SetTitle((char *)title);
+ gui.vimWindow->Unlock();
+ }
}
/*
* Draw a cursor without focus.
*/
- void
+ void
gui_mch_draw_hollow_cursor(guicolor_T color)
{
- gui_mch_set_fg_color(color);
+ gui_mch_set_fg_color(color);
- BRect r;
- r.left = FILL_X(gui.col);
- r.top = FILL_Y(gui.row);
- int cells = utf_off2cells(LineOffset[gui.row] + gui.col, 100); // TODO-TODO
- if(cells>=4) cells = 1;
- r.right = r.left + cells*gui.char_width - PEN_WIDTH;
- r.bottom = r.top + gui.char_height - PEN_WIDTH;
+ BRect r;
+ r.left = FILL_X(gui.col);
+ r.top = FILL_Y(gui.row);
+ int cells = utf_off2cells(LineOffset[gui.row] + gui.col, 100); // TODO-TODO
+ if (cells>=4) cells = 1;
+ r.right = r.left + cells*gui.char_width - PEN_WIDTH;
+ r.bottom = r.top + gui.char_height - PEN_WIDTH;
- if (gui.vimWindow->Lock()) {
- gui.vimTextArea->StrokeRect(r);
- gui.vimWindow->Unlock();
- // gui_mch_flush();
- }
+ if (gui.vimWindow->Lock()) {
+ gui.vimTextArea->StrokeRect(r);
+ gui.vimWindow->Unlock();
+ // gui_mch_flush();
+ }
}
/*
@@ -4417,28 +4417,28 @@ gui_mch_draw_hollow_cursor(guicolor_T color)
*/
void
gui_mch_draw_part_cursor(
- int w,
- int h,
- guicolor_T color)
+ int w,
+ int h,
+ guicolor_T color)
{
- gui_mch_set_fg_color(color);
+ gui_mch_set_fg_color(color);
- BRect r;
- r.left =
+ BRect r;
+ r.left =
#ifdef FEAT_RIGHTLEFT
- // vertical line should be on the right of current point
- CURSOR_BAR_RIGHT ? FILL_X(gui.col + 1) - w :
+ // vertical line should be on the right of current point
+ CURSOR_BAR_RIGHT ? FILL_X(gui.col + 1) - w :
#endif
- FILL_X(gui.col);
- r.right = r.left + w - PEN_WIDTH;
- r.bottom = FILL_Y(gui.row + 1) - PEN_WIDTH;
- r.top = r.bottom - h + PEN_WIDTH;
+ FILL_X(gui.col);
+ r.right = r.left + w - PEN_WIDTH;
+ r.bottom = FILL_Y(gui.row + 1) - PEN_WIDTH;
+ r.top = r.bottom - h + PEN_WIDTH;
- if (gui.vimWindow->Lock()) {
- gui.vimTextArea->FillRect(r);
- gui.vimWindow->Unlock();
- // gui_mch_flush();
- }
+ if (gui.vimWindow->Lock()) {
+ gui.vimTextArea->FillRect(r);
+ gui.vimWindow->Unlock();
+ // gui_mch_flush();
+ }
}
/*
@@ -4447,78 +4447,78 @@ gui_mch_draw_part_cursor(
* nothing in the event queue (& no timers pending), then we return
* immediately.
*/
- void
+ void
gui_mch_update()
{
- gui_mch_flush();
- while (port_count(gui.vdcmp) > 0 &&
- !vim_is_input_buf_full() &&
- gui_haiku_process_event(0) >= B_OK)
- /* nothing */ ;
+ gui_mch_flush();
+ while (port_count(gui.vdcmp) > 0 &&
+ !vim_is_input_buf_full() &&
+ gui_haiku_process_event(0) >= B_OK)
+ /* nothing */ ;
}
/*
* GUI input routine called by gui_wait_for_chars(). Waits for a character
* from the keyboard.
- * wtime == -1 Wait forever.
- * wtime == 0 This should never happen.
- * wtime > 0 Wait wtime milliseconds for a character.
+ * wtime == -1 Wait forever.
+ * wtime == 0 This should never happen.
+ * wtime > 0 Wait wtime milliseconds for a character.
* Returns OK if a character was found to be available within the given time,
* or FAIL otherwise.
*/
int
gui_mch_wait_for_chars(
- int wtime)
+ int wtime)
{
- int focus;
- bigtime_t until, timeout;
- status_t st;
+ int focus;
+ bigtime_t until, timeout;
+ status_t st;
- if (wtime >= 0) {
- timeout = wtime * 1000;
- until = system_time() + timeout;
- } else {
- timeout = B_INFINITE_TIMEOUT;
- }
+ if (wtime >= 0) {
+ timeout = wtime * 1000;
+ until = system_time() + timeout;
+ } else {
+ timeout = B_INFINITE_TIMEOUT;
+ }
- focus = gui.in_focus;
- for (;;)
+ focus = gui.in_focus;
+ for (;;)
+ {
+ // Stop or start blinking when focus changes
+ if (gui.in_focus != focus)
{
- // Stop or start blinking when focus changes
- if (gui.in_focus != focus)
- {
- if (gui.in_focus)
- gui_mch_start_blink();
- else
- gui_mch_stop_blink(TRUE);
- focus = gui.in_focus;
- }
+ if (gui.in_focus)
+ gui_mch_start_blink();
+ else
+ gui_mch_stop_blink(TRUE);
+ focus = gui.in_focus;
+ }
- gui_mch_flush();
- /*
- * Don't use gui_mch_update() because then we will spin-lock until a
- * char arrives, instead we use gui_haiku_process_event() to hang until
- * an event arrives. No need to check for input_buf_full because we
- * are returning as soon as it contains a single char.
- */
- st = gui_haiku_process_event(timeout);
+ gui_mch_flush();
+ /*
+ * Don't use gui_mch_update() because then we will spin-lock until a
+ * char arrives, instead we use gui_haiku_process_event() to hang until
+ * an event arrives. No need to check for input_buf_full because we
+ * are returning as soon as it contains a single char.
+ */
+ st = gui_haiku_process_event(timeout);
- if (input_available())
- return OK;
- if (st < B_OK) // includes B_TIMED_OUT
- return FAIL;
+ if (input_available())
+ return OK;
+ if (st < B_OK) // includes B_TIMED_OUT
+ return FAIL;
- /*
- * Calculate how much longer we're willing to wait for the
- * next event.
- */
- if (wtime >= 0) {
- timeout = until - system_time();
- if (timeout < 0)
- break;
- }
+ /*
+ * Calculate how much longer we're willing to wait for the
+ * next event.
+ */
+ if (wtime >= 0) {
+ timeout = until - system_time();
+ if (timeout < 0)
+ break;
}
- return FAIL;
+ }
+ return FAIL;
}
@@ -4530,15 +4530,15 @@ gui_mch_wait_for_chars(
* Flush any output to the screen. This is typically called before
* the app goes to sleep.
*/
- void
+ void
gui_mch_flush()
{
- // does this need to lock the window? Apparently not but be safe.
- if (gui.vimWindow->Lock()) {
- gui.vimWindow->Flush();
- gui.vimWindow->Unlock();
- }
- return;
+ // does this need to lock the window? Apparently not but be safe.
+ if (gui.vimWindow->Lock()) {
+ gui.vimWindow->Flush();
+ gui.vimWindow->Unlock();
+ }
+ return;
}
/*
@@ -4547,24 +4547,24 @@ gui_mch_flush()
*/
void
gui_mch_clear_block(
- int row1,
- int col1,
- int row2,
- int col2)
+ int row1,
+ int col1,
+ int row2,
+ int col2)
{
- if (gui.vimWindow->Lock()) {
- gui.vimTextArea->mchClearBlock(row1, col1, row2, col2);
- gui.vimWindow->Unlock();
- }
+ if (gui.vimWindow->Lock()) {
+ gui.vimTextArea->mchClearBlock(row1, col1, row2, col2);
+ gui.vimWindow->Unlock();
+ }
}
- void
+ void
gui_mch_clear_all()
{
- if (gui.vimWindow->Lock()) {
- gui.vimTextArea->mchClearAll();
- gui.vimWindow->Unlock();
- }
+ if (gui.vimWindow->Lock()) {
+ gui.vimTextArea->mchClearAll();
+ gui.vimWindow->Unlock();
+ }
}
/*
@@ -4573,10 +4573,10 @@ gui_mch_clear_all()
*/
void
gui_mch_delete_lines(
- int row,
- int num_lines)
+ int row,
+ int num_lines)
{
- gui.vimTextArea->mchDeleteLines(row, num_lines);
+ gui.vimTextArea->mchDeleteLines(row, num_lines);
}
/*
@@ -4585,10 +4585,10 @@ gui_mch_delete_lines(
*/
void
gui_mch_insert_lines(
- int row,
- int num_lines)
+ int row,
+ int num_lines)
{
- gui.vimTextArea->mchInsertLines(row, num_lines);
+ gui.vimTextArea->mchInsertLines(row, num_lines);
}
#if defined(FEAT_MENU) || defined(PROTO)
@@ -4598,24 +4598,24 @@ gui_mch_insert_lines(
void
gui_mch_enable_menu(
- int flag)
+ int flag)
{
- if (gui.vimWindow->Lock())
- {
- BMenuBar *menubar = gui.vimForm->MenuBar();
- menubar->SetEnabled(flag);
- gui.vimWindow->Unlock();
- }
+ if (gui.vimWindow->Lock())
+ {
+ BMenuBar *menubar = gui.vimForm->MenuBar();
+ menubar->SetEnabled(flag);
+ gui.vimWindow->Unlock();
+ }
}
void
gui_mch_set_menu_pos(
- int x,
- int y,
- int w,
- int h)
+ int x,
+ int y,
+ int w,
+ int h)
{
- // It will be in the right place anyway
+ // It will be in the right place anyway
}
/*
@@ -4623,72 +4623,72 @@ gui_mch_set_menu_pos(
*/
void
gui_mch_add_menu(
- vimmenu_T *menu,
- int idx)
+ vimmenu_T *menu,
+ int idx)
{
- vimmenu_T *parent = menu->parent;
+ vimmenu_T *parent = menu->parent;
- // popup menu - just create it unattached
- if (menu_is_popup(menu->name) && parent == NULL) {
- BPopUpMenu* popUpMenu = new BPopUpMenu((const char*)menu->name, false, false);
- menu->submenu_id = popUpMenu;
- menu->id = NULL;
- return;
- }
+ // popup menu - just create it unattached
+ if (menu_is_popup(menu->name) && parent == NULL) {
+ BPopUpMenu* popUpMenu = new BPopUpMenu((const char*)menu->name, false, false);
+ menu->submenu_id = popUpMenu;
+ menu->id = NULL;
+ return;
+ }
- if (!menu_is_menubar(menu->name)
- || (parent != NULL && parent->submenu_id == NULL))
- return;
+ if (!menu_is_menubar(menu->name)
+ || (parent != NULL && parent->submenu_id == NULL))
+ return;
- if (gui.vimWindow->Lock())
- {
- // Major re-write of the menu code, it was failing with memory corruption when
- // we started loading multiple files (the Buffer menu)
- //
- // Note we don't use the preference values yet, all are inserted into the
- // menubar on a first come-first served basis...
- //
- // richard@whitequeen.com jul 99
-
- BMenu *tmp;
-
- if ( parent )
- tmp = parent->submenu_id;
- else
- tmp = gui.vimForm->MenuBar();
- // make sure we don't try and add the same menu twice. The Buffers menu tries to
- // do this and Be starts to crash...
+ if (gui.vimWindow->Lock())
+ {
+ // Major re-write of the menu code, it was failing with memory corruption when
+ // we started loading multiple files (the Buffer menu)
+ //
+ // Note we don't use the preference values yet, all are inserted into the
+ // menubar on a first come-first served basis...
+ //
+ // richard@whitequeen.com jul 99
- if ( ! tmp->FindItem((const char *) menu->dname)) {
+ BMenu *tmp;
- BMenu *bmenu = new BMenu((char *)menu->dname);
+ if ( parent )
+ tmp = parent->submenu_id;
+ else
+ tmp = gui.vimForm->MenuBar();
+ // make sure we don't try and add the same menu twice. The Buffers menu tries to
+ // do this and Be starts to crash...
- menu->submenu_id = bmenu;
+ if ( ! tmp->FindItem((const char *) menu->dname)) {
- // when we add a BMenu to another Menu, it creates the interconnecting BMenuItem
- tmp->AddItem(bmenu);
+ BMenu *bmenu = new BMenu((char *)menu->dname);
- // Now its safe to query the menu for the associated MenuItem....
- menu->id = tmp->FindItem((const char *) menu->dname);
+ menu->submenu_id = bmenu;
+
+ // when we add a BMenu to another Menu, it creates the interconnecting BMenuItem
+ tmp->AddItem(bmenu);
+
+ // Now its safe to query the menu for the associated MenuItem....
+ menu->id = tmp->FindItem((const char *) menu->dname);
- }
- gui.vimWindow->Unlock();
}
+ gui.vimWindow->Unlock();
+ }
}
- void
+ void
gui_mch_toggle_tearoffs(int enable)
{
- // no tearoff menus
+ // no tearoff menus
}
- static BMessage *
+ static BMessage *
MenuMessage(vimmenu_T *menu)
{
- BMessage *m = new BMessage('menu');
- m->AddPointer("VimMenu", (void *)menu);
+ BMessage *m = new BMessage('menu');
+ m->AddPointer("VimMenu", (void *)menu);
- return m;
+ return m;
}
/*
@@ -4696,48 +4696,48 @@ MenuMessage(vimmenu_T *menu)
*/
void
gui_mch_add_menu_item(
- vimmenu_T *menu,
- int idx)
-{
- int mnemonic = 0;
- vimmenu_T *parent = menu->parent;
-
- // TODO: use menu->actext
- // This is difficult, since on Be, an accelerator must be a single char
- // and a lot of Vim ones are the standard VI commands.
- //
- // Punt for Now...
- // richard@whiequeen.com jul 99
- if (gui.vimWindow->Lock())
- {
+ vimmenu_T *menu,
+ int idx)
+{
+ int mnemonic = 0;
+ vimmenu_T *parent = menu->parent;
+
+ // TODO: use menu->actext
+ // This is difficult, since on Be, an accelerator must be a single char
+ // and a lot of Vim ones are the standard VI commands.
+ //
+ // Punt for Now...
+ // richard@whiequeen.com jul 99
+ if (gui.vimWindow->Lock())
+ {
#ifdef FEAT_TOOLBAR
- if(menu_is_toolbar(parent->name)) {
- VimToolbar *toolbar = gui.vimForm->ToolBar();
- if(toolbar != NULL) {
- toolbar->AddButton(idx, menu);
- }
- } else
+ if (menu_is_toolbar(parent->name)) {
+ VimToolbar *toolbar = gui.vimForm->ToolBar();
+ if (toolbar != NULL) {
+ toolbar->AddButton(idx, menu);
+ }
+ } else
#endif
- if (parent->submenu_id != NULL || menu_is_popup(parent->name)) {
- if (menu_is_separator(menu->name)) {
- BSeparatorItem *item = new BSeparatorItem();
- parent->submenu_id->AddItem(item);
- menu->id = item;
- menu->submenu_id = NULL;
- }
- else {
- BMenuItem *item = new BMenuItem((char *)menu->dname,
- MenuMessage(menu));
- item->SetTarget(gui.vimTextArea);
- item->SetTrigger((char) menu->mnemonic);
- parent->submenu_id->AddItem(item);
- menu->id = item;
- menu->submenu_id = NULL;
- }
- }
- gui.vimWindow->Unlock();
+ if (parent->submenu_id != NULL || menu_is_popup(parent->name)) {
+ if (menu_is_separator(menu->name)) {
+ BSeparatorItem *item = new BSeparatorItem();
+ parent->submenu_id->AddItem(item);
+ menu->id = item;
+ menu->submenu_id = NULL;
+ }
+ else {
+ BMenuItem *item = new BMenuItem((char *)menu->dname,
+ MenuMessage(menu));
+ item->SetTarget(gui.vimTextArea);
+ item->SetTrigger((char) menu->mnemonic);
+ parent->submenu_id->AddItem(item);
+ menu->id = item;
+ menu->submenu_id = NULL;
+ }
}
+ gui.vimWindow->Unlock();
+ }
}
/*
@@ -4745,48 +4745,48 @@ gui_mch_add_menu_item(
*/
void
gui_mch_destroy_menu(
- vimmenu_T *menu)
+ vimmenu_T *menu)
{
- if (gui.vimWindow->Lock())
- {
+ if (gui.vimWindow->Lock())
+ {
#ifdef FEAT_TOOLBAR
- if(menu->parent && menu_is_toolbar(menu->parent->name)) {
- VimToolbar *toolbar = gui.vimForm->ToolBar();
- if(toolbar != NULL) {
- toolbar->RemoveButton(menu);
- }
- } else
+ if (menu->parent && menu_is_toolbar(menu->parent->name)) {
+ VimToolbar *toolbar = gui.vimForm->ToolBar();
+ if (toolbar != NULL) {
+ toolbar->RemoveButton(menu);
+ }
+ } else
#endif
+ {
+ assert(menu->submenu_id == NULL || menu->submenu_id->CountItems() == 0);
+ /*
+ * Detach this menu from its parent, so that it is not deleted
+ * twice once we get to delete that parent.
+ * Deleting a BMenuItem also deletes the associated BMenu, if any
+ * (which does not have any items anymore since they were
+ * removed and deleted before).
+ */
+ BMenu *bmenu = menu->id->Menu();
+ if (bmenu)
+ {
+ bmenu->RemoveItem(menu->id);
+ /*
+ * If we removed the last item from the menu bar,
+ * resize it out of sight.
+ */
+ if (bmenu == gui.vimForm->MenuBar() && bmenu->CountItems() == 0)
{
- assert(menu->submenu_id == NULL || menu->submenu_id->CountItems() == 0);
- /*
- * Detach this menu from its parent, so that it is not deleted
- * twice once we get to delete that parent.
- * Deleting a BMenuItem also deletes the associated BMenu, if any
- * (which does not have any items anymore since they were
- * removed and deleted before).
- */
- BMenu *bmenu = menu->id->Menu();
- if (bmenu)
- {
- bmenu->RemoveItem(menu->id);
- /*
- * If we removed the last item from the menu bar,
- * resize it out of sight.
- */
- if (bmenu == gui.vimForm->MenuBar() && bmenu->CountItems() == 0)
- {
- bmenu->ResizeTo(-MENUBAR_MARGIN, -MENUBAR_MARGIN);
- }
- }
- delete menu->id;
- menu->id = NULL;
- menu->submenu_id = NULL;
-
- gui.menu_height = (int) gui.vimForm->MenuHeight();
+ bmenu->ResizeTo(-MENUBAR_MARGIN, -MENUBAR_MARGIN);
}
- gui.vimWindow->Unlock();
+ }
+ delete menu->id;
+ menu->id = NULL;
+ menu->submenu_id = NULL;
+
+ gui.menu_height = (int) gui.vimForm->MenuHeight();
}
+ gui.vimWindow->Unlock();
+ }
}
/*
@@ -4794,22 +4794,22 @@ gui_mch_destroy_menu(
*/
void
gui_mch_menu_grey(
- vimmenu_T *menu,
- int grey)
+ vimmenu_T *menu,
+ int grey)
{
#ifdef FEAT_TOOLBAR
- if(menu->parent && menu_is_toolbar(menu->parent->name)) {
- if (gui.vimWindow->Lock()) {
- VimToolbar *toolbar = gui.vimForm->ToolBar();
- if(toolbar != NULL) {
- toolbar->GrayButton(menu, grey);
- }
- gui.vimWindow->Unlock();
- }
- } else
+ if (menu->parent && menu_is_toolbar(menu->parent->name)) {
+ if (gui.vimWindow->Lock()) {
+ VimToolbar *toolbar = gui.vimForm->ToolBar();
+ if (toolbar != NULL) {
+ toolbar->GrayButton(menu, grey);
+ }
+ gui.vimWindow->Unlock();
+ }
+ } else
#endif
- if (menu->id != NULL)
- menu->id->SetEnabled(!grey);
+ if (menu->id != NULL)
+ menu->id->SetEnabled(!grey);
}
/*
@@ -4817,40 +4817,40 @@ gui_mch_menu_grey(
*/
void
gui_mch_menu_hidden(
- vimmenu_T *menu,
- int hidden)
+ vimmenu_T *menu,
+ int hidden)
{
- if (menu->id != NULL)
- menu->id->SetEnabled(!hidden);
+ if (menu->id != NULL)
+ menu->id->SetEnabled(!hidden);
}
/*
* This is called after setting all the menus to grey/hidden or not.
*/
- void
+ void
gui_mch_draw_menubar()
{
- // Nothing to do in BeOS
+ // Nothing to do in BeOS
}
- void
+ void
gui_mch_show_popupmenu(vimmenu_T *menu)
{
- if (!menu_is_popup(menu->name) || menu->submenu_id == NULL)
- return;
+ if (!menu_is_popup(menu->name) || menu->submenu_id == NULL)
+ return;
- BPopUpMenu* popupMenu = dynamic_cast<BPopUpMenu*>(menu->submenu_id);
- if (popupMenu == NULL)
- return;
+ BPopUpMenu* popupMenu = dynamic_cast<BPopUpMenu*>(menu->submenu_id);
+ if (popupMenu == NULL)
+ return;
- BPoint point;
- if(gui.vimWindow->Lock()) {
- uint32 buttons = 0;
- gui.vimTextArea->GetMouse(&point, &buttons);
- gui.vimTextArea->ConvertToScreen(&point);
- gui.vimWindow->Unlock();
- }
- popupMenu->Go(point, true);
+ BPoint point;
+ if (gui.vimWindow->Lock()) {
+ uint32 buttons = 0;
+ gui.vimTextArea->GetMouse(&point, &buttons);
+ gui.vimTextArea->ConvertToScreen(&point);
+ gui.vimWindow->Unlock();
+ }
+ popupMenu->Go(point, true);
}
#endif // FEAT_MENU
@@ -4867,122 +4867,122 @@ char vimselectiontype[] = "application/x-vnd.Rhialto-Vim-selectiontype";
/*
* Get the current selection and put it in the clipboard register.
*/
- void
+ void
clip_mch_request_selection(Clipboard_T *cbd)
{
- if (be_clipboard->Lock())
- {
- BMessage *m = be_clipboard->Data();
- // m->PrintToStream();
+ if (be_clipboard->Lock())
+ {
+ BMessage *m = be_clipboard->Data();
+ // m->PrintToStream();
- char_u *string = NULL;
- ssize_t stringlen = -1;
+ char_u *string = NULL;
+ ssize_t stringlen = -1;
- if (m->FindData(textplain, B_MIME_TYPE,
- (const void **)&string, &stringlen) == B_OK
- || m->FindString("text", (const char **)&string) == B_OK)
+ if (m->FindData(textplain, B_MIME_TYPE,
+ (const void **)&string, &stringlen) == B_OK
+ || m->FindString("text", (const char **)&string) == B_OK)
+ {
+ if (stringlen == -1)
+ stringlen = STRLEN(string);
+
+ int type;
+ char *seltype;
+ ssize_t seltypelen;
+
+ /*
+ * Try to get the special vim selection type first
+ */
+ if (m->FindData(vimselectiontype, B_MIME_TYPE,
+ (const void **)&seltype, &seltypelen) == B_OK)
+ {
+ switch (*seltype)
{
- if (stringlen == -1)
- stringlen = STRLEN(string);
-
- int type;
- char *seltype;
- ssize_t seltypelen;
-
- /*
- * Try to get the special vim selection type first
- */
- if (m->FindData(vimselectiontype, B_MIME_TYPE,
- (const void **)&seltype, &seltypelen) == B_OK)
- {
- switch (*seltype)
- {
- default:
- case 'L': type = MLINE; break;
- case 'C': type = MCHAR; break;
+ default:
+ case 'L': type = MLINE; break;
+ case 'C': type = MCHAR; break;
#ifdef FEAT_VISUAL
- case 'B': type = MBLOCK; break;
+ case 'B': type = MBLOCK; break;
#endif
- }
- }
- else
- {
- // Otherwise use heuristic as documented
- type = memchr(string, stringlen, '\n') ? MLINE : MCHAR;
- }
- clip_yank_selection(type, string, (long)stringlen, cbd);
}
- be_clipboard->Unlock();
+ }
+ else
+ {
+ // Otherwise use heuristic as documented
+ type = memchr(string, stringlen, '\n') ? MLINE : MCHAR;
+ }
+ clip_yank_selection(type, string, (long)stringlen, cbd);
}
+ be_clipboard->Unlock();
+ }
}
/*
* Make vim the owner of the current selection.
*/
- void
+ void
clip_mch_lose_selection(Clipboard_T *cbd)
{
- // Nothing needs to be done here
+ // Nothing needs to be done here
}
/*
* Make vim the owner of the current selection. Return OK upon success.
*/
- int
+ int
clip_mch_own_selection(Clipboard_T *cbd)
{
- /*
- * Never actually own the clipboard. If another application sets the
- * clipboard, we don't want to think that we still own it.
- */
- return FAIL;
+ /*
+ * Never actually own the clipboard. If another application sets the
+ * clipboard, we don't want to think that we still own it.
+ */
+ return FAIL;
}
/*
* Send the current selection to the clipboard.
*/
- void
+ void
clip_mch_set_selection(Clipboard_T *cbd)
{
- if (be_clipboard->Lock())
- {
- be_clipboard->Clear();
- BMessage *m = be_clipboard->Data();
- assert(m);
+ if (be_clipboard->Lock())
+ {
+ be_clipboard->Clear();
+ BMessage *m = be_clipboard->Data();
+ assert(m);
- // If the '*' register isn't already filled in, fill it in now
- cbd->owned = TRUE;
- clip_get_selection(cbd);
- cbd->owned = FALSE;
+ // If the '*' register isn't already filled in, fill it in now
+ cbd->owned = TRUE;
+ clip_get_selection(cbd);
+ cbd->owned = FALSE;
- char_u *str = NULL;
- long_u count;
- int type;
+ char_u *str = NULL;
+ long_u count;
+ int type;
- type = clip_convert_selection(&str, &count, cbd);
+ type = clip_convert_selection(&str, &count, cbd);
- if (type < 0)
- return;
+ if (type < 0)
+ return;
- m->AddData(textplain, B_MIME_TYPE, (void *)str, count);
+ m->AddData(textplain, B_MIME_TYPE, (void *)str, count);
- // Add type of selection
- char vtype;
- switch (type)
- {
- default:
- case MLINE: vtype = 'L'; break;
- case MCHAR: vtype = 'C'; break;
+ // Add type of selection
+ char vtype;
+ switch (type)
+ {
+ default:
+ case MLINE: vtype = 'L'; break;
+ case MCHAR: vtype = 'C'; break;
#ifdef FEAT_VISUAL
- case MBLOCK: vtype = 'B'; break;
+ case MBLOCK: vtype = 'B'; break;
#endif
- }
- m->AddData(vimselectiontype, B_MIME_TYPE, (void *)&vtype, 1);
+ }
+ m->AddData(vimselectiontype, B_MIME_TYPE, (void *)&vtype, 1);
- vim_free(str);
+ vim_free(str);
- be_clipboard->Commit();
- be_clipboard->Unlock();
- }
+ be_clipboard->Commit();
+ be_clipboard->Unlock();
+ }
}
#endif // FEAT_CLIPBOARD
@@ -5008,42 +5008,42 @@ clip_mch_set_selection(Clipboard_T *cbd)
*/
char_u *
gui_mch_browse(
- int saving,
- char_u *title,
- char_u *dflt,
- char_u *ext,
- char_u *initdir,
- char_u *filter)
+ int saving,
+ char_u *title,
+ char_u *dflt,
+ char_u *ext,
+ char_u *initdir,
+ char_u *filter)
{
- gui.vimApp->fFilePanel = new BFilePanel((saving == TRUE) ? B_SAVE_PANEL : B_OPEN_PANEL,
- NULL, NULL, 0, false,
- new BMessage((saving == TRUE) ? 'save' : 'open'), NULL, true);
+ gui.vimApp->fFilePanel = new BFilePanel((saving == TRUE) ? B_SAVE_PANEL : B_OPEN_PANEL,
+ NULL, NULL, 0, false,
+ new BMessage((saving == TRUE) ? 'save' : 'open'), NULL, true);
- gui.vimApp->fBrowsedPath.Unset();
+ gui.vimApp->fBrowsedPath.Unset();
- gui.vimApp->fFilePanel->Window()->SetTitle((char*)title);
- gui.vimApp->fFilePanel->SetPanelDirectory((const char*)initdir);
+ gui.vimApp->fFilePanel->Window()->SetTitle((char*)title);
+ gui.vimApp->fFilePanel->SetPanelDirectory((const char*)initdir);
- gui.vimApp->fFilePanel->Show();
+ gui.vimApp->fFilePanel->Show();
- gui.vimApp->fFilePanelSem = create_sem(0, "FilePanelSem");
+ gui.vimApp->fFilePanelSem = create_sem(0, "FilePanelSem");
- while(acquire_sem(gui.vimApp->fFilePanelSem) == B_INTERRUPTED);
+ while (acquire_sem(gui.vimApp->fFilePanelSem) == B_INTERRUPTED);
- char_u *fileName = NULL;
- status_t result = gui.vimApp->fBrowsedPath.InitCheck();
- if(result == B_OK) {
- fileName = vim_strsave((char_u*)gui.vimApp->fBrowsedPath.Path());
- } else
- if(result != B_NO_INIT) {
- fprintf(stderr, "gui_mch_browse: BPath error: %#08x (%s)\n",
- result, strerror(result));
- }
+ char_u *fileName = NULL;
+ status_t result = gui.vimApp->fBrowsedPath.InitCheck();
+ if (result == B_OK) {
+ fileName = vim_strsave((char_u*)gui.vimApp->fBrowsedPath.Path());
+ } else
+ if (result != B_NO_INIT) {
+ fprintf(stderr, "gui_mch_browse: BPath error: %#08x (%s)\n",
+ result, strerror(result));
+ }
- delete gui.vimApp->fFilePanel;
- gui.vimApp->fFilePanel = NULL;
+ delete gui.vimApp->fFilePanel;
+ gui.vimApp->fFilePanel = NULL;
- return fileName;
+ return fileName;
}
#endif // FEAT_BROWSE
@@ -5052,34 +5052,34 @@ gui_mch_browse(
/*
* Create a dialog dynamically from the parameter strings.
- * type = type of dialog (question, alert, etc.)
- * title = dialog title. may be NULL for default title.
- * message = text to display. Dialog sizes to accommodate it.
- * buttons = '\n' separated list of button captions, default first.
+ * type = type of dialog (question, alert, etc.)
+ * title = dialog title. may be NULL for default title.
+ * message = text to display. Dialog sizes to accommodate it.
+ * buttons = '\n' separated list of button captions, default first.
* dfltbutton = number of default button.
*
* This routine returns 1 if the first button is pressed,
- * 2 for the second, etc.
+ * 2 for the second, etc.
*
- * 0 indicates Esc was pressed.
- * -1 for unexpected error
+ * 0 indicates Esc was pressed.
+ * -1 for unexpected error
*
* If stubbing out this fn, return 1.
*/
int
gui_mch_dialog(
- int type,
- char_u *title,
- char_u *message,
- char_u *buttons,
- int dfltbutton,
- char_u *textfield,
- int ex_cmd)
+ int type,
+ char_u *title,
+ char_u *message,
+ char_u *buttons,
+ int dfltbutton,
+ char_u *textfield,
+ int ex_cmd)
{
- VimDialog *dialog = new VimDialog(type, (char*)title, (char*)message,
- (char*)buttons, dfltbutton, (char*)textfield, ex_cmd);
- return dialog->Go();
+ VimDialog *dialog = new VimDialog(type, (char*)title, (char*)message,
+ (char*)buttons, dfltbutton, (char*)textfield, ex_cmd);
+ return dialog->Go();
}
#endif // FEAT_GUI_DIALOG
@@ -5091,50 +5091,50 @@ gui_mch_dialog(
guicolor_T
gui_mch_get_rgb(guicolor_T pixel)
{
- rgb_color rgb = GUI_TO_RGB(pixel);
+ rgb_color rgb = GUI_TO_RGB(pixel);
- return ((rgb.red & 0xff) << 16) + ((rgb.green & 0xff) << 8)
- + (rgb.blue & 0xff);
+ return ((rgb.red & 0xff) << 16) + ((rgb.green & 0xff) << 8)
+ + (rgb.blue & 0xff);
}
- void
+ void
gui_mch_setmouse(int x, int y)
{
- TRACE();
- // TODO
+ TRACE();
+ // TODO
}
#ifdef FEAT_MBYTE_IME
- void
+ void
im_set_position(int row, int col)
{
- if(gui.vimWindow->Lock())
- {
- gui.vimTextArea->DrawIMString();
- gui.vimWindow->Unlock();
- }
- return;
+ if (gui.vimWindow->Lock())
+ {
+ gui.vimTextArea->DrawIMString();
+ gui.vimWindow->Unlock();
+ }
+ return;
}
#endif
- void
+ void
gui_mch_show_toolbar(int showit)
{
- VimToolbar *toolbar = gui.vimForm->ToolBar();
- gui.toolbar_height = (toolbar && showit) ? toolbar->ToolbarHeight() : 0.;
+ VimToolbar *toolbar = gui.vimForm->ToolBar();
+ gui.toolbar_height = (toolbar && showit) ? toolbar->ToolbarHeight() : 0.;
}
- void
+ void
gui_mch_set_toolbar_pos(int x, int y, int w, int h)
{
- VimToolbar *toolbar = gui.vimForm->ToolBar();
- if(toolbar != NULL) {
- if (gui.vimWindow->Lock()) {
- toolbar->MoveTo(x, y);
- toolbar->ResizeTo(w - 1, h - 1);
- gui.vimWindow->Unlock();
- }
+ VimToolbar *toolbar = gui.vimForm->ToolBar();
+ if (toolbar != NULL) {
+ if (gui.vimWindow->Lock()) {
+ toolbar->MoveTo(x, y);
+ toolbar->ResizeTo(w - 1, h - 1);
+ gui.vimWindow->Unlock();
}
+ }
}
#if defined(FEAT_GUI_TABLINE) || defined(PROTO)
@@ -5145,28 +5145,28 @@ gui_mch_set_toolbar_pos(int x, int y, int w, int h)
void
gui_mch_show_tabline(int showit)
{
- VimTabLine *tabLine = gui.vimForm->TabLine();
+ VimTabLine *tabLine = gui.vimForm->TabLine();
if (tabLine == NULL)
- return;
+ return;
if (!showit != !gui.vimForm->IsShowingTabLine()) {
- gui.vimForm->SetShowingTabLine(showit != 0);
- gui.tabline_height = gui.vimForm->TablineHeight();
+ gui.vimForm->SetShowingTabLine(showit != 0);
+ gui.tabline_height = gui.vimForm->TablineHeight();
}
}
- void
+ void
gui_mch_set_tabline_pos(int x, int y, int w, int h)
{
- VimTabLine *tabLine = gui.vimForm->TabLine();
- if(tabLine != NULL) {
- if (gui.vimWindow->Lock()) {
- tabLine->MoveTo(x, y);
- tabLine->ResizeTo(w - 1, h - 1);
- gui.vimWindow->Unlock();
- }
+ VimTabLine *tabLine = gui.vimForm->TabLine();
+ if (tabLine != NULL) {
+ if (gui.vimWindow->Lock()) {
+ tabLine->MoveTo(x, y);
+ tabLine->ResizeTo(w - 1, h - 1);
+ gui.vimWindow->Unlock();
}
+ }
}
/*
@@ -5175,7 +5175,7 @@ gui_mch_set_tabline_pos(int x, int y, int w, int h)
int
gui_mch_showing_tabline()
{
- VimTabLine *tabLine = gui.vimForm->TabLine();
+ VimTabLine *tabLine = gui.vimForm->TabLine();
return tabLine != NULL && gui.vimForm->IsShowingTabLine();
}
@@ -5186,41 +5186,41 @@ gui_mch_showing_tabline()
gui_mch_update_tabline()
{
tabpage_T *tp;
- int nr = 0;
- int curtabidx = 0;
+ int nr = 0;
+ int curtabidx = 0;
- VimTabLine *tabLine = gui.vimForm->TabLine();
+ VimTabLine *tabLine = gui.vimForm->TabLine();
if (tabLine == NULL)
- return;
+ return;
- gui.vimWindow->Lock();
+ gui.vimWindow->Lock();
// Add a label for each tab page. They all contain the same text area.
for (tp = first_tabpage; tp != NULL; tp = tp->tp_next, ++nr) {
- if (tp == curtab)
- curtabidx = nr;
+ if (tp == curtab)
+ curtabidx = nr;
- BTab* tab = tabLine->TabAt(nr);
+ BTab* tab = tabLine->TabAt(nr);
- if (tab == NULL) {
- tab = new VimTabLine::VimTab();
- tabLine->AddTab(NULL, tab);
- }
+ if (tab == NULL) {
+ tab = new VimTabLine::VimTab();
+ tabLine->AddTab(NULL, tab);
+ }
- get_tabline_label(tp, FALSE);
- tab->SetLabel((const char*)NameBuff);
- tabLine->Invalidate();
+ get_tabline_label(tp, FALSE);
+ tab->SetLabel((const char*)NameBuff);
+ tabLine->Invalidate();
}
// Remove any old labels.
- while (nr < tabLine->CountTabs())
- tabLine->RemoveTab(nr);
+ while (nr < tabLine->CountTabs())
+ tabLine->RemoveTab(nr);
- if(tabLine->Selection() != curtabidx)
- tabLine->Select(curtabidx);
+ if (tabLine->Selection() != curtabidx)
+ tabLine->Select(curtabidx);
- gui.vimWindow->Unlock();
+ gui.vimWindow->Unlock();
}
/*
@@ -5229,16 +5229,16 @@ gui_mch_update_tabline()
void
gui_mch_set_curtab(int nr)
{
- VimTabLine *tabLine = gui.vimForm->TabLine();
- if(tabLine == NULL)
- return;
+ VimTabLine *tabLine = gui.vimForm->TabLine();
+ if (tabLine == NULL)
+ return;
- gui.vimWindow->Lock();
+ gui.vimWindow->Lock();
- if(tabLine->Selection() != nr -1)
- tabLine->Select(nr -1);
+ if (tabLine->Selection() != nr -1)
+ tabLine->Select(nr -1);
- gui.vimWindow->Unlock();
+ gui.vimWindow->Unlock();
}
#endif // FEAT_GUI_TABLINE
diff --git a/src/version.c b/src/version.c
index d2e7451c1..376462909 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 631,
+/**/
630,
/**/
629,