diff options
author | Havoc Pennington <hp@src.gnome.org> | 2000-07-09 19:47:12 +0000 |
---|---|---|
committer | Havoc Pennington <hp@src.gnome.org> | 2000-07-09 19:47:12 +0000 |
commit | 3a5915201eb119dadb4f13e410ea0cb0703b15c4 (patch) | |
tree | b1d70707224a6d525e61ab3948ca7579e13586c5 | |
parent | cc0de72d97752d7c89ca7fde6dd84880df639968 (diff) | |
download | gdk-pixbuf-3a5915201eb119dadb4f13e410ea0cb0703b15c4.tar.gz |
gtk_window_get_accel_group(), make accelerators work for dialogs,
make semi-public gtktextlayout.h and gtktextdisplay.h work without the
genuinely private text widget headers, don't install the private headers
-rw-r--r-- | gtk/Makefile.am | 10 | ||||
-rw-r--r-- | gtk/gtkdialog.c | 6 | ||||
-rw-r--r-- | gtk/gtkdialog.h | 6 | ||||
-rw-r--r-- | gtk/gtktextbtree.c | 3 | ||||
-rw-r--r-- | gtk/gtktextbtree.h | 2 | ||||
-rw-r--r-- | gtk/gtktextiterprivate.h | 1 | ||||
-rw-r--r-- | gtk/gtktextlayout.h | 7 | ||||
-rw-r--r-- | gtk/gtktextmarkprivate.h | 2 | ||||
-rw-r--r-- | gtk/gtktexttypes.h | 2 | ||||
-rw-r--r-- | gtk/gtktextview.c | 1 | ||||
-rw-r--r-- | gtk/gtkwindow.c | 23 | ||||
-rw-r--r-- | gtk/gtkwindow.h | 2 | ||||
-rw-r--r-- | gtk/testtext.c | 4 | ||||
-rw-r--r-- | tests/testtext.c | 4 |
14 files changed, 51 insertions, 22 deletions
diff --git a/gtk/Makefile.am b/gtk/Makefile.am index 99beb1f0e..463a92ba1 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -182,16 +182,18 @@ gtk_public_h_sources = @STRIP_BEGIN@ \ # interface) gtk_semipublic_h_sources = @STRIP_BEGIN@ \ - gtktextbtree.h \ - gtktextchild.h \ gtktextdisplay.h \ gtktextlayout.h \ - gtktextsegment.h \ - gtktexttypes.h \ @STRIP_END@ # GTK+ header files that don't get installed gtk_private_h_sources = @STRIP_BEGIN@ \ + gtktextbtree.h \ + gtktextchild.h \ + gtktextsegment.h \ + gtktexttypes.h \ + gtktextiterprivate.h \ + gtktextmarkprivate.h \ @STRIP_END@ # GTK+ C sources to build the library from gtk_c_sources = @STRIP_BEGIN@ \ diff --git a/gtk/gtkdialog.c b/gtk/gtkdialog.c index bbc988d5f..46daa15ea 100644 --- a/gtk/gtkdialog.c +++ b/gtk/gtkdialog.c @@ -135,7 +135,7 @@ static gint gtk_dialog_key_press (GtkWidget *widget, GdkEventKey *key) { - GdkEventAny event = { GDK_DELETE, widget->window, FALSE }; + GdkEventAny event = { GDK_DELETE, widget->window, TRUE }; if (GTK_WIDGET_CLASS (parent_class)->key_press_event (widget, key)) return TRUE; @@ -143,6 +143,7 @@ gtk_dialog_key_press (GtkWidget *widget, if (key->keyval != GDK_Escape) return FALSE; + /* Synthesize delete_event on key press. */ g_object_ref (G_OBJECT (event.window)); gtk_main_do_event ((GdkEvent*)&event); @@ -299,7 +300,8 @@ gtk_dialog_add_button (GtkDialog *dialog, g_return_if_fail (GTK_IS_DIALOG (dialog)); g_return_if_fail (button_text != NULL); - button = gtk_button_new_stock (button_text, NULL); + button = gtk_button_new_stock (button_text, + gtk_window_get_accel_group (GTK_WINDOW (dialog))); gtk_widget_show (button); diff --git a/gtk/gtkdialog.h b/gtk/gtkdialog.h index 1c5218e62..5ebb552a4 100644 --- a/gtk/gtkdialog.h +++ b/gtk/gtkdialog.h @@ -55,7 +55,7 @@ typedef enum */ typedef enum { - /* GTK returns this if an response widget has no response_id, + /* GTK returns this if a response widget has no response_id, or the dialog gets destroyed with no response */ GTK_RESPONSE_NONE = 0, /* GTK won't return these unless you pass them in @@ -119,8 +119,8 @@ void gtk_dialog_add_buttons (GtkDialog *dialog, ...); /* Emit response signal */ -void gtk_dialog_response (GtkDialog *dialog, - gint response_id); +void gtk_dialog_response (GtkDialog *dialog, + gint response_id); /* Returns response_id */ gint gtk_dialog_run (GtkDialog *dialog); diff --git a/gtk/gtktextbtree.c b/gtk/gtktextbtree.c index 3679cca2f..77d2be7fc 100644 --- a/gtk/gtktextbtree.c +++ b/gtk/gtktextbtree.c @@ -2622,8 +2622,6 @@ gtk_text_btree_first_could_contain_tag (GtkTextBTree *tree, g_assert(node != NULL); } - done: - g_assert(node != NULL); /* The tag summaries said some node had tag toggles... */ @@ -3841,7 +3839,6 @@ gtk_text_line_next_could_contain_tag(GtkTextLine *line, g_assert(node != NULL); } - done: g_assert(node != NULL); g_assert(node->level == 0); diff --git a/gtk/gtktextbtree.h b/gtk/gtktextbtree.h index 2b932ea27..c3836b81f 100644 --- a/gtk/gtktextbtree.h +++ b/gtk/gtktextbtree.h @@ -163,8 +163,6 @@ GtkTextLine * gtk_text_btree_last_could_contain_tag (GtkTextBTree * /* Chunk of data associated with a line; views can use this to store info at the line. They should "subclass" the header struct here. */ -typedef struct _GtkTextLineData GtkTextLineData; - struct _GtkTextLineData { gpointer view_id; GtkTextLineData *next; diff --git a/gtk/gtktextiterprivate.h b/gtk/gtktextiterprivate.h index d63461e2b..4d692f4bd 100644 --- a/gtk/gtktextiterprivate.h +++ b/gtk/gtktextiterprivate.h @@ -6,6 +6,7 @@ extern "C" { #endif /* __cplusplus */ #include <gtk/gtktextiter.h> +#include <gtk/gtktextbtree.h> GtkTextLineSegment *gtk_text_iter_get_indexable_segment(const GtkTextIter *iter); GtkTextLineSegment *gtk_text_iter_get_any_segment(const GtkTextIter *iter); diff --git a/gtk/gtktextlayout.h b/gtk/gtktextlayout.h index ffe270060..5db67e379 100644 --- a/gtk/gtktextlayout.h +++ b/gtk/gtktextlayout.h @@ -14,8 +14,12 @@ extern "C" { #include <gtk/gtktextbuffer.h> #include <gtk/gtktextiter.h> -#include <gtk/gtktextbtree.h> +/* forward declarations that have to be here to avoid including + * gtktextbtree.h + */ +typedef struct _GtkTextLine GtkTextLine; +typedef struct _GtkTextLineData GtkTextLineData; #define GTK_TYPE_TEXT_LAYOUT (gtk_text_layout_get_type()) #define GTK_TEXT_LAYOUT(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_TEXT_LAYOUT, GtkTextLayout)) @@ -24,6 +28,7 @@ extern "C" { #define GTK_IS_TEXT_LAYOUT_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_LAYOUT)) #define GTK_TEXT_LAYOUT_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_TEXT_LAYOUT, GtkTextLayoutClass)) +typedef struct _GtkTextLayout GtkTextLayout; typedef struct _GtkTextLayoutClass GtkTextLayoutClass; typedef struct _GtkTextLineDisplay GtkTextLineDisplay; typedef struct _GtkTextCursorDisplay GtkTextCursorDisplay; diff --git a/gtk/gtktextmarkprivate.h b/gtk/gtktextmarkprivate.h index 578e68036..07ebc2aed 100644 --- a/gtk/gtktextmarkprivate.h +++ b/gtk/gtktextmarkprivate.h @@ -6,7 +6,7 @@ extern "C" { #endif /* __cplusplus */ #include <gtk/gtktexttypes.h> - +#include <gtk/gtktextlayout.h> #define GTK_IS_TEXT_MARK(mark) (((GtkTextLineSegment*)mark)->type == >k_text_left_mark_type || \ ((GtkTextLineSegment*)mark)->type == >k_text_right_mark_type) diff --git a/gtk/gtktexttypes.h b/gtk/gtktexttypes.h index 007ea25b1..38e1976ff 100644 --- a/gtk/gtktexttypes.h +++ b/gtk/gtktexttypes.h @@ -10,7 +10,6 @@ extern "C" { #include <gtk/gtktextbuffer.h> #include <gtk/gtktexttagprivate.h> -typedef struct _GtkTextLine GtkTextLine; typedef struct _GtkTextCounter GtkTextCounter; typedef struct _GtkTextLineSegment GtkTextLineSegment; typedef struct _GtkTextLineSegmentClass GtkTextLineSegmentClass; @@ -19,7 +18,6 @@ typedef struct _GtkTextViewSearch GtkTextViewSearch; typedef struct _GtkTextTab GtkTextTab; typedef struct _GtkTextViewStyle GtkTextViewStyle; typedef struct _GtkTextMarkBody GtkTextMarkBody; -typedef struct _GtkTextLayout GtkTextLayout; /* * Search diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index 5cecceb37..8f82129e0 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -57,6 +57,7 @@ #include "gtktextview.h" #include "gtkimmulticontext.h" #include "gdk/gdkkeysyms.h" +#include "gtktexttypes.h" #include <string.h> enum { diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 89f214aca..f0b4afd4b 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -534,6 +534,29 @@ gtk_window_remove_accel_group (GtkWindow *window, gtk_accel_group_detach (accel_group, GTK_OBJECT (window)); } +GtkAccelGroup* +gtk_window_get_accel_group (GtkWindow *window) +{ + GtkAccelGroup *group; + + g_return_val_if_fail (GTK_IS_WINDOW (window), NULL); + + group = gtk_object_get_data (GTK_OBJECT (window), + "__gtk_accel_group"); + + if (group == NULL) + { + group = gtk_accel_group_new (); + gtk_window_add_accel_group (window, group); + gtk_object_set_data (GTK_OBJECT (window), + "__gtk_accel_group", + group); + gtk_accel_group_unref (group); + } + + return group; +} + void gtk_window_set_position (GtkWindow *window, GtkWindowPosition position) diff --git a/gtk/gtkwindow.h b/gtk/gtkwindow.h index 0c219222a..43ad557e5 100644 --- a/gtk/gtkwindow.h +++ b/gtk/gtkwindow.h @@ -135,6 +135,8 @@ void gtk_window_set_modal (GtkWindow *window, gboolean modal); GList* gtk_window_list_toplevels (void); +/* Get the "built-in" accel group (convenience thing) */ +GtkAccelGroup* gtk_window_get_accel_group (GtkWindow *window); /* --- internal functions --- */ void gtk_window_set_focus (GtkWindow *window, diff --git a/gtk/testtext.c b/gtk/testtext.c index 8677f3d1a..bbff4d00a 100644 --- a/gtk/testtext.c +++ b/gtk/testtext.c @@ -934,8 +934,8 @@ do_search (gpointer callback_data, dialog = gtk_dialog_new_with_buttons ("Search", GTK_WINDOW (view->window), GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_BUTTON_OK, - 0, NULL); + GTK_STOCK_BUTTON_CLOSE, + GTK_RESPONSE_NONE, NULL); buffer = gtk_text_buffer_new (NULL); diff --git a/tests/testtext.c b/tests/testtext.c index 8677f3d1a..bbff4d00a 100644 --- a/tests/testtext.c +++ b/tests/testtext.c @@ -934,8 +934,8 @@ do_search (gpointer callback_data, dialog = gtk_dialog_new_with_buttons ("Search", GTK_WINDOW (view->window), GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_BUTTON_OK, - 0, NULL); + GTK_STOCK_BUTTON_CLOSE, + GTK_RESPONSE_NONE, NULL); buffer = gtk_text_buffer_new (NULL); |