]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtktextview.h
Add a note about gtkrc-2.0 being parsed by all 2.x versions.
[~andy/gtk] / gtk / gtktextview.h
index 880cff302eaea872075b10fdec27de4a9afb413b..ad0edb40d07bc06a7bd6452af5d563d65671eeb9 100644 (file)
 #include <gtk/gtkcontainer.h>
 #include <gtk/gtkimcontext.h>
 #include <gtk/gtktextbuffer.h>
+#include <gtk/gtkmenu.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
 
 #define GTK_TYPE_TEXT_VIEW             (gtk_text_view_get_type ())
-#define GTK_TEXT_VIEW(obj)             (GTK_CHECK_CAST ((obj), GTK_TYPE_TEXT_VIEW, GtkTextView))
-#define GTK_TEXT_VIEW_CLASS(klass)     (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT_VIEW, GtkTextViewClass))
-#define GTK_IS_TEXT_VIEW(obj)          (GTK_CHECK_TYPE ((obj), GTK_TYPE_TEXT_VIEW))
-#define GTK_IS_TEXT_VIEW_CLASS(klass)  (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_VIEW))
-#define GTK_TEXT_VIEW_GET_CLASS(obj)   (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_TEXT_VIEW, GtkTextViewClass))
+#define GTK_TEXT_VIEW(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TEXT_VIEW, GtkTextView))
+#define GTK_TEXT_VIEW_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT_VIEW, GtkTextViewClass))
+#define GTK_IS_TEXT_VIEW(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TEXT_VIEW))
+#define GTK_IS_TEXT_VIEW_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_VIEW))
+#define GTK_TEXT_VIEW_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TEXT_VIEW, GtkTextViewClass))
 
 typedef enum
 {
@@ -53,11 +54,14 @@ typedef enum
   GTK_TEXT_WINDOW_BOTTOM
 } GtkTextWindowType;
 
+#define GTK_TEXT_VIEW_PRIORITY_VALIDATE (GDK_PRIORITY_REDRAW + 5)
+
 typedef struct _GtkTextView GtkTextView;
 typedef struct _GtkTextViewClass GtkTextViewClass;
 
-/* Internal private type. */
+/* Internal private types. */
 typedef struct _GtkTextWindow GtkTextWindow;
+typedef struct _GtkTextPendingScroll GtkTextPendingScroll;
 
 struct _GtkTextView
 {
@@ -67,8 +71,7 @@ struct _GtkTextView
   GtkTextBuffer *buffer;
 
   guint selection_drag_handler;
-  guint selection_drag_scan_timeout;
-  gint scrolling_accel_factor;
+  guint scroll_timeout;
 
   /* Default style settings */
   gint pixels_above_lines;
@@ -87,7 +90,19 @@ struct _GtkTextView
   guint overwrite_mode : 1;
   guint cursor_visible : 1;
   guint  need_im_reset : 1;    /* If we have reset the IM since the last character entered */
+  /* just selected a word or line via double/triple click */
+  guint just_selected_element : 1;
+
+  /* disable scrolling to cursor on focus */
+  guint disable_scroll_on_focus : 1;
+  
+  /* debug flag - means that we've validated onscreen since the
+   * last "invalidate" signal from the layout
+   */
+  guint onscreen_validated : 1;
 
+  guint mouse_cursor_obscured : 1;
+  
   GtkTextWindow *text_window;
   GtkTextWindow *left_window;
   GtkTextWindow *right_window;
@@ -119,7 +134,6 @@ struct _GtkTextView
 
   GtkTextMark *dnd_mark;
   guint blink_timeout;
-  guint preblink_timeout;
 
   guint first_validate_idle;            /* Idle to revalidate onscreen portion, runs before resize */
   guint incremental_validate_idle;      /* Idle to revalidate offscreen portions, runs after redraw */
@@ -131,12 +145,23 @@ struct _GtkTextView
   gint drag_start_y;
 
   GSList *children;
+
+  GtkTextPendingScroll *pending_scroll;
+
+  gint pending_place_cursor_button;
 };
 
 struct _GtkTextViewClass
 {
   GtkContainerClass parent_class;
 
+  void (* set_scroll_adjustments)   (GtkTextView    *text_view,
+                                     GtkAdjustment  *hadjustment,
+                                     GtkAdjustment  *vadjustment);
+
+  void (* populate_popup)           (GtkTextView    *text_view,
+                                     GtkMenu        *menu);
+  
   /* These are all RUN_ACTION signals for keybindings */
 
   /* move insertion point */
@@ -144,6 +169,15 @@ struct _GtkTextViewClass
                         GtkMovementStep step,
                         gint            count,
                         gboolean        extend_selection);
+
+  /* FIXME should be deprecated in favor of adding GTK_MOVEMENT_HORIZONTAL_PAGES
+   * or something in GTK 2.2, was put in to avoid adding enum values during
+   * the freeze.
+   */
+  void (* page_horizontally) (GtkTextView *text_view,
+                              gint         count,
+                              gboolean     extend_selection);
+  
   /* move the "anchor" (what Emacs calls the mark) to the cursor position */
   void (* set_anchor)  (GtkTextView    *text_view);
 
@@ -160,20 +194,43 @@ struct _GtkTextViewClass
   void (* paste_clipboard) (GtkTextView *text_view);
   /* overwrite */
   void (* toggle_overwrite) (GtkTextView *text_view);
-  void (* set_scroll_adjustments)   (GtkTextView    *text_view,
-                                     GtkAdjustment  *hadjustment,
-                                     GtkAdjustment  *vadjustment);
+
+  /* propagates to GtkWindow move_focus */
+  void (* move_focus)       (GtkTextView     *text_view,
+                             GtkDirectionType direction);  
+  
+  
+  /* Padding for future expansion */
+  void (*_gtk_reserved1) (void);
+  void (*_gtk_reserved2) (void);
+  void (*_gtk_reserved3) (void);
+  void (*_gtk_reserved4) (void);
+  void (*_gtk_reserved5) (void);
+  void (*_gtk_reserved6) (void);
+  void (*_gtk_reserved7) (void);
+  void (*_gtk_reserved8) (void);
 };
 
-GtkType        gtk_text_view_get_type              (void) G_GNUC_CONST;
+GType          gtk_text_view_get_type              (void) G_GNUC_CONST;
 GtkWidget *    gtk_text_view_new                   (void);
 GtkWidget *    gtk_text_view_new_with_buffer       (GtkTextBuffer *buffer);
 void           gtk_text_view_set_buffer            (GtkTextView   *text_view,
                                                     GtkTextBuffer *buffer);
 GtkTextBuffer *gtk_text_view_get_buffer            (GtkTextView   *text_view);
-gboolean       gtk_text_view_scroll_to_mark        (GtkTextView   *text_view,
+gboolean       gtk_text_view_scroll_to_iter        (GtkTextView   *text_view,
+                                                    GtkTextIter   *iter,
+                                                    gdouble        within_margin,
+                                                    gboolean       use_align,
+                                                    gdouble        xalign,
+                                                    gdouble        yalign);
+void           gtk_text_view_scroll_to_mark        (GtkTextView   *text_view,
                                                     GtkTextMark   *mark,
-                                                    gint           mark_within_margin);
+                                                    gdouble        within_margin,
+                                                    gboolean       use_align,
+                                                    gdouble        xalign,
+                                                    gdouble        yalign);
+void           gtk_text_view_scroll_mark_onscreen  (GtkTextView   *text_view,
+                                                    GtkTextMark   *mark);
 gboolean       gtk_text_view_move_mark_onscreen    (GtkTextView   *text_view,
                                                     GtkTextMark   *mark);
 gboolean       gtk_text_view_place_cursor_onscreen (GtkTextView   *text_view);
@@ -222,10 +279,22 @@ GtkTextWindowType gtk_text_view_get_window_type (GtkTextView       *text_view,
 void gtk_text_view_set_border_window_size (GtkTextView       *text_view,
                                            GtkTextWindowType  type,
                                            gint               size);
-void gtk_text_view_set_text_window_size   (GtkTextView       *text_view,
-                                           gint               width,
-                                           gint               height);
-
+gint gtk_text_view_get_border_window_size (GtkTextView       *text_view,
+                                          GtkTextWindowType  type);
+
+gboolean gtk_text_view_forward_display_line           (GtkTextView       *text_view,
+                                                       GtkTextIter       *iter);
+gboolean gtk_text_view_backward_display_line          (GtkTextView       *text_view,
+                                                       GtkTextIter       *iter);
+gboolean gtk_text_view_forward_display_line_end       (GtkTextView       *text_view,
+                                                       GtkTextIter       *iter);
+gboolean gtk_text_view_backward_display_line_start    (GtkTextView       *text_view,
+                                                       GtkTextIter       *iter);
+gboolean gtk_text_view_starts_display_line            (GtkTextView       *text_view,
+                                                       const GtkTextIter *iter);
+gboolean gtk_text_view_move_visually                  (GtkTextView       *text_view,
+                                                       GtkTextIter       *iter,
+                                                       gint               count);
 
 /* Adding child widgets */
 void gtk_text_view_add_child_at_anchor (GtkTextView          *text_view,
@@ -277,8 +346,9 @@ gint             gtk_text_view_get_indent             (GtkTextView      *text_vi
 void             gtk_text_view_set_tabs               (GtkTextView      *text_view,
                                                        PangoTabArray    *tabs);
 PangoTabArray*   gtk_text_view_get_tabs               (GtkTextView      *text_view);
-                                       
 
+/* note that the return value of this changes with the theme */
+GtkTextAttributes* gtk_text_view_get_default_attributes (GtkTextView    *text_view);
 
 #ifdef __cplusplus
 }