summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHavoc Pennington <hp@src.gnome.org>2000-07-09 19:47:12 +0000
committerHavoc Pennington <hp@src.gnome.org>2000-07-09 19:47:12 +0000
commit3a5915201eb119dadb4f13e410ea0cb0703b15c4 (patch)
treeb1d70707224a6d525e61ab3948ca7579e13586c5
parentcc0de72d97752d7c89ca7fde6dd84880df639968 (diff)
downloadgdk-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.am10
-rw-r--r--gtk/gtkdialog.c6
-rw-r--r--gtk/gtkdialog.h6
-rw-r--r--gtk/gtktextbtree.c3
-rw-r--r--gtk/gtktextbtree.h2
-rw-r--r--gtk/gtktextiterprivate.h1
-rw-r--r--gtk/gtktextlayout.h7
-rw-r--r--gtk/gtktextmarkprivate.h2
-rw-r--r--gtk/gtktexttypes.h2
-rw-r--r--gtk/gtktextview.c1
-rw-r--r--gtk/gtkwindow.c23
-rw-r--r--gtk/gtkwindow.h2
-rw-r--r--gtk/testtext.c4
-rw-r--r--tests/testtext.c4
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 == &gtk_text_left_mark_type || \
((GtkTextLineSegment*)mark)->type == &gtk_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);