Build HexChat with GSEAL_ENABLE and fix internal field accesses.

This commit is contained in:
Sadie Powell 2023-01-30 06:45:57 +00:00
parent 07873ca4e9
commit bea6bb08e1
5 changed files with 198 additions and 154 deletions

View File

@ -43,6 +43,7 @@ config_h.set('USE_LIBCANBERRA', libcanberra_dep.found())
config_h.set('USE_DBUS', dbus_glib_dep.found()) config_h.set('USE_DBUS', dbus_glib_dep.found())
config_h.set('USE_PLUGIN', get_option('plugin')) config_h.set('USE_PLUGIN', get_option('plugin'))
config_h.set('GSEAL_ENABLE', true)
config_h.set('G_DISABLE_SINGLE_INCLUDES', true) config_h.set('G_DISABLE_SINGLE_INCLUDES', true)
config_h.set('GTK_DISABLE_DEPRECATED', true) config_h.set('GTK_DISABLE_DEPRECATED', true)
config_h.set('GTK_DISABLE_SINGLE_INCLUDES', true) config_h.set('GTK_DISABLE_SINGLE_INCLUDES', true)

View File

@ -301,9 +301,9 @@ menu_quick_item (char *cmd, char *label, GtkWidget * menu, int flags,
{ {
item = gtk_menu_item_new_with_label (""); item = gtk_menu_item_new_with_label ("");
if (flags & XCMENU_MNEMONIC) if (flags & XCMENU_MNEMONIC)
gtk_label_set_markup_with_mnemonic (GTK_LABEL (GTK_BIN (item)->child), label); gtk_label_set_markup_with_mnemonic (GTK_LABEL (gtk_bin_get_child (GTK_BIN (item))), label);
else else
gtk_label_set_markup (GTK_LABEL (GTK_BIN (item)->child), label); gtk_label_set_markup (GTK_LABEL (gtk_bin_get_child (GTK_BIN (item))), label);
} else } else
{ {
if (flags & XCMENU_MNEMONIC) if (flags & XCMENU_MNEMONIC)
@ -352,7 +352,7 @@ menu_quick_sub (char *name, GtkWidget *menu, GtkWidget **sub_item_ret, int flags
if (flags & XCMENU_MARKUP) if (flags & XCMENU_MARKUP)
{ {
sub_item = gtk_menu_item_new_with_label (""); sub_item = gtk_menu_item_new_with_label ("");
gtk_label_set_markup (GTK_LABEL (GTK_BIN (sub_item)->child), name); gtk_label_set_markup (GTK_LABEL (gtk_bin_get_child (GTK_BIN (sub_item))), name);
} }
else else
{ {
@ -392,7 +392,7 @@ toggle_cb (GtkWidget *item, char *pref_name)
{ {
char buf[256]; char buf[256];
if (GTK_CHECK_MENU_ITEM (item)->active) if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (item)))
g_snprintf (buf, sizeof (buf), "set %s 1", pref_name); g_snprintf (buf, sizeof (buf), "set %s 1", pref_name);
else else
g_snprintf (buf, sizeof (buf), "set %s 0", pref_name); g_snprintf (buf, sizeof (buf), "set %s 0", pref_name);
@ -707,7 +707,7 @@ fe_userlist_update (session *sess, struct User *user)
g_signal_handlers_disconnect_by_func (nick_submenu, menu_nickinfo_cb, sess); g_signal_handlers_disconnect_by_func (nick_submenu, menu_nickinfo_cb, sess);
/* destroy all the old items */ /* destroy all the old items */
items = ((GtkMenuShell *) nick_submenu)->children; items = gtk_container_get_children( GTK_CONTAINER (nick_submenu));
while (items) while (items)
{ {
next = items->next; next = items->next;
@ -838,7 +838,7 @@ menu_setting_foreach (void (*callback) (session *), int id, guint state)
if (sess->gui->is_tab) if (sess->gui->is_tab)
maindone = TRUE; maindone = TRUE;
if (id != -1) if (id != -1)
GTK_CHECK_MENU_ITEM (sess->gui->menu_item[id])->active = state; gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (sess->gui->menu_item[id]), state);
if (callback) if (callback)
callback (sess); callback (sess);
} }
@ -1014,7 +1014,7 @@ menu_chan_focus (GtkWidget * menu, char *chan)
} }
static void static void
menu_chan_join (GtkWidget * menu, char *chan) menu_chan_join (GtkWidget * menu, const char *chan)
{ {
char tbuf[256]; char tbuf[256];
@ -1168,7 +1168,7 @@ usermenu_create (GtkWidget *menu)
static void static void
usermenu_destroy (GtkWidget * menu) usermenu_destroy (GtkWidget * menu)
{ {
GList *items = ((GtkMenuShell *) menu)->children; GList *items = gtk_container_get_children (GTK_CONTAINER (menu));
GList *next; GList *next;
while (items) while (items)
@ -1387,7 +1387,7 @@ menu_join_cb (GtkWidget *dialog, gint response, GtkEntry *entry)
switch (response) switch (response)
{ {
case GTK_RESPONSE_ACCEPT: case GTK_RESPONSE_ACCEPT:
menu_chan_join (NULL, entry->text); menu_chan_join (NULL, gtk_entry_get_text (GTK_ENTRY (entry)));
break; break;
case GTK_RESPONSE_HELP: case GTK_RESPONSE_HELP:
@ -1415,12 +1415,12 @@ menu_join (GtkWidget * wid, gpointer none)
GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
NULL); NULL);
gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dialog)->vbox), TRUE); gtk_box_set_homogeneous (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), TRUE);
gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);
hbox = gtk_hbox_new (TRUE, 0); hbox = gtk_hbox_new (TRUE, 0);
entry = gtk_entry_new (); entry = gtk_entry_new ();
GTK_ENTRY (entry)->editable = 0; /* avoid auto-selection */ gtk_editable_set_editable (GTK_EDITABLE (entry), FALSE); /* avoid auto-selection */
gtk_entry_set_text (GTK_ENTRY (entry), "#"); gtk_entry_set_text (GTK_ENTRY (entry), "#");
g_signal_connect (G_OBJECT (entry), "activate", g_signal_connect (G_OBJECT (entry), "activate",
G_CALLBACK (menu_join_entry_cb), dialog); G_CALLBACK (menu_join_entry_cb), dialog);
@ -1432,7 +1432,7 @@ menu_join (GtkWidget * wid, gpointer none)
g_signal_connect (G_OBJECT (dialog), "response", g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (menu_join_cb), entry); G_CALLBACK (menu_join_cb), entry);
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox); gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), hbox);
gtk_widget_show_all (dialog); gtk_widget_show_all (dialog);
@ -1655,7 +1655,7 @@ static void
menu_layout_cb (GtkWidget *item, gpointer none) menu_layout_cb (GtkWidget *item, gpointer none)
{ {
prefs.hex_gui_tab_layout = 2; prefs.hex_gui_tab_layout = 2;
if (GTK_CHECK_MENU_ITEM (item)->active) if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (item)))
prefs.hex_gui_tab_layout = 0; prefs.hex_gui_tab_layout = 0;
menu_change_layout (); menu_change_layout ();
@ -1670,7 +1670,7 @@ menu_apply_metres_cb (session *sess)
static void static void
menu_metres_off (GtkWidget *item, gpointer none) menu_metres_off (GtkWidget *item, gpointer none)
{ {
if (GTK_CHECK_MENU_ITEM (item)->active) if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (item)))
{ {
prefs.hex_gui_lagometer = 0; prefs.hex_gui_lagometer = 0;
prefs.hex_gui_throttlemeter = 0; prefs.hex_gui_throttlemeter = 0;
@ -1682,7 +1682,7 @@ menu_metres_off (GtkWidget *item, gpointer none)
static void static void
menu_metres_text (GtkWidget *item, gpointer none) menu_metres_text (GtkWidget *item, gpointer none)
{ {
if (GTK_CHECK_MENU_ITEM (item)->active) if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (item)))
{ {
prefs.hex_gui_lagometer = 2; prefs.hex_gui_lagometer = 2;
prefs.hex_gui_throttlemeter = 2; prefs.hex_gui_throttlemeter = 2;
@ -1694,7 +1694,7 @@ menu_metres_text (GtkWidget *item, gpointer none)
static void static void
menu_metres_graph (GtkWidget *item, gpointer none) menu_metres_graph (GtkWidget *item, gpointer none)
{ {
if (GTK_CHECK_MENU_ITEM (item)->active) if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (item)))
{ {
prefs.hex_gui_lagometer = 1; prefs.hex_gui_lagometer = 1;
prefs.hex_gui_throttlemeter = 1; prefs.hex_gui_throttlemeter = 1;
@ -1706,7 +1706,7 @@ menu_metres_graph (GtkWidget *item, gpointer none)
static void static void
menu_metres_both (GtkWidget *item, gpointer none) menu_metres_both (GtkWidget *item, gpointer none)
{ {
if (GTK_CHECK_MENU_ITEM (item)->active) if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (item)))
{ {
prefs.hex_gui_lagometer = 3; prefs.hex_gui_lagometer = 3;
prefs.hex_gui_throttlemeter = 3; prefs.hex_gui_throttlemeter = 3;
@ -1920,7 +1920,7 @@ menu_canacaccel (GtkWidget *widget, guint signal_id, gpointer user_data)
static GtkMenuItem * static GtkMenuItem *
menu_find_item (GtkWidget *menu, char *name) menu_find_item (GtkWidget *menu, char *name)
{ {
GList *items = ((GtkMenuShell *) menu)->children; GList *items = gtk_container_get_children (GTK_CONTAINER (menu));
GtkMenuItem *item; GtkMenuItem *item;
GtkWidget *child; GtkWidget *child;
const char *labeltext; const char *labeltext;
@ -1928,7 +1928,7 @@ menu_find_item (GtkWidget *menu, char *name)
while (items) while (items)
{ {
item = items->data; item = items->data;
child = GTK_BIN (item)->child; child = gtk_bin_get_child (GTK_BIN (item));
if (child) /* separators arn't labels, skip them */ if (child) /* separators arn't labels, skip them */
{ {
labeltext = g_object_get_data (G_OBJECT (item), "name"); labeltext = g_object_get_data (G_OBJECT (item), "name");
@ -2025,7 +2025,7 @@ menu_update_cb (GtkWidget *menu, menu_entry *me, char *target)
gtk_widget_set_sensitive (item, me->enable); gtk_widget_set_sensitive (item, me->enable);
/* must do it without triggering the callback */ /* must do it without triggering the callback */
if (GTK_IS_CHECK_MENU_ITEM (item)) if (GTK_IS_CHECK_MENU_ITEM (item))
GTK_CHECK_MENU_ITEM (item)->active = me->state; gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), me->state);
} }
} }
@ -2034,7 +2034,7 @@ static void
menu_radio_cb (GtkCheckMenuItem *item, menu_entry *me) menu_radio_cb (GtkCheckMenuItem *item, menu_entry *me)
{ {
me->state = 0; me->state = 0;
if (item->active) if (gtk_check_menu_item_get_active (item))
me->state = 1; me->state = 1;
/* update the state, incase this was changed via right-click. */ /* update the state, incase this was changed via right-click. */
@ -2050,7 +2050,7 @@ static void
menu_toggle_cb (GtkCheckMenuItem *item, menu_entry *me) menu_toggle_cb (GtkCheckMenuItem *item, menu_entry *me)
{ {
me->state = 0; me->state = 0;
if (item->active) if (gtk_check_menu_item_get_active (item))
me->state = 1; me->state = 1;
/* update the state, incase this was changed via right-click. */ /* update the state, incase this was changed via right-click. */
@ -2092,7 +2092,7 @@ menu_reorder (GtkMenu *menu, GtkWidget *item, int pos)
return; return;
if (pos < 0) /* position offset from end/bottom */ if (pos < 0) /* position offset from end/bottom */
gtk_menu_reorder_child (menu, item, (g_list_length (GTK_MENU_SHELL (menu)->children) + pos) - 1); gtk_menu_reorder_child (menu, item, (g_list_length (gtk_container_get_children (GTK_CONTAINER (menu))) + pos) - 1);
else else
gtk_menu_reorder_child (menu, item, pos); gtk_menu_reorder_child (menu, item, pos);
} }
@ -2158,7 +2158,7 @@ menu_add_sub (GtkWidget *menu, menu_entry *me)
{ {
pos = me->pos; pos = me->pos;
if (pos < 0) /* position offset from end/bottom */ if (pos < 0) /* position offset from end/bottom */
pos = g_list_length (GTK_MENU_SHELL (menu)->children) + pos; pos = g_list_length (gtk_container_get_children (GTK_CONTAINER (menu))) + pos;
menu_quick_sub (me->label, menu, &item, me->markup ? XCMENU_MARKUP|XCMENU_MNEMONIC : XCMENU_MNEMONIC, pos); menu_quick_sub (me->label, menu, &item, me->markup ? XCMENU_MARKUP|XCMENU_MNEMONIC : XCMENU_MNEMONIC, pos);
} }
return item; return item;
@ -2436,7 +2436,7 @@ normalitem:
item = gtk_check_menu_item_new_with_mnemonic (_(mymenu[i].text)); item = gtk_check_menu_item_new_with_mnemonic (_(mymenu[i].text));
togitem: togitem:
/* must avoid callback for Radio buttons */ /* must avoid callback for Radio buttons */
GTK_CHECK_MENU_ITEM (item)->active = mymenu[i].state; gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), mymenu[i].state);
/*gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), /*gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
mymenu[i].state);*/ mymenu[i].state);*/
if (mymenu[i].key != 0) if (mymenu[i].key != 0)

View File

@ -101,9 +101,11 @@ static void sexy_spell_entry_finalize(GObject *obj);
static void sexy_spell_entry_destroy(GObject *obj); static void sexy_spell_entry_destroy(GObject *obj);
static gint sexy_spell_entry_expose(GtkWidget *widget, GdkEventExpose *event); static gint sexy_spell_entry_expose(GtkWidget *widget, GdkEventExpose *event);
static gint sexy_spell_entry_button_press(GtkWidget *widget, GdkEventButton *event); static gint sexy_spell_entry_button_press(GtkWidget *widget, GdkEventButton *event);
static gint sexy_spell_entry_preedit_length(GtkEntry *entry);
/* GtkEditable handlers */ /* GtkEditable handlers */
static void sexy_spell_entry_changed(GtkEditable *editable, gpointer data); static void sexy_spell_entry_changed(GtkEditable *editable, gpointer data);
static void sexy_spell_entry_preedit_changed(GtkEditable *editable, gchar* preedit, gpointer data);
/* Other handlers */ /* Other handlers */
static gboolean sexy_spell_entry_popup_menu(GtkWidget *widget, SexySpellEntry *entry); static gboolean sexy_spell_entry_popup_menu(GtkWidget *widget, SexySpellEntry *entry);
@ -286,22 +288,31 @@ gtk_entry_find_position (GtkEntry *entry, gint x)
PangoLayoutLine *line; PangoLayoutLine *line;
const gchar *text; const gchar *text;
gint cursor_index; gint cursor_index;
gint cursor_pos;
gint preedit_length;
gint scroll_offset;
gint index; gint index;
gint pos; gint pos;
gboolean trailing; gboolean trailing;
x = x + entry->scroll_offset; g_object_get (entry,
"cursor-position", &cursor_pos,
"scroll-offset", &scroll_offset,
NULL);
x = x + scroll_offset;
layout = gtk_entry_get_layout(entry); layout = gtk_entry_get_layout(entry);
text = pango_layout_get_text(layout); text = pango_layout_get_text(layout);
cursor_index = g_utf8_offset_to_pointer(text, entry->current_pos) - text; cursor_index = g_utf8_offset_to_pointer(text, cursor_pos) - text;
line = pango_layout_get_lines(layout)->data; line = pango_layout_get_lines(layout)->data;
pango_layout_line_x_to_index(line, x * PANGO_SCALE, &index, &trailing); pango_layout_line_x_to_index(line, x * PANGO_SCALE, &index, &trailing);
if (index >= cursor_index && entry->preedit_length) { preedit_length = sexy_spell_entry_preedit_length (entry);
if (index >= cursor_index + entry->preedit_length) { if (index >= cursor_index && preedit_length) {
index -= entry->preedit_length; if (index >= cursor_index + preedit_length) {
index -= preedit_length;
} else { } else {
index = cursor_index; index = cursor_index;
trailing = FALSE; trailing = FALSE;
@ -383,7 +394,7 @@ insert_italic (SexySpellEntry *entry, guint start, gboolean toggle)
{ {
PangoAttribute *iattr; PangoAttribute *iattr;
iattr = pango_attr_style_new (toggle ? PANGO_STYLE_NORMAL : PANGO_STYLE_ITALIC); iattr = pango_attr_style_new (toggle ? PANGO_STYLE_NORMAL : PANGO_STYLE_ITALIC);
iattr->start_index = start; iattr->start_index = start;
iattr->end_index = PANGO_ATTR_INDEX_TO_TEXT_END; iattr->end_index = PANGO_ATTR_INDEX_TO_TEXT_END;
pango_attr_list_change (entry->priv->attr_list, iattr); pango_attr_list_change (entry->priv->attr_list, iattr);
@ -783,6 +794,7 @@ sexy_spell_entry_init(SexySpellEntry *entry)
g_signal_connect(G_OBJECT(entry), "popup-menu", G_CALLBACK(sexy_spell_entry_popup_menu), entry); g_signal_connect(G_OBJECT(entry), "popup-menu", G_CALLBACK(sexy_spell_entry_popup_menu), entry);
g_signal_connect(G_OBJECT(entry), "populate-popup", G_CALLBACK(sexy_spell_entry_populate_popup), NULL); g_signal_connect(G_OBJECT(entry), "populate-popup", G_CALLBACK(sexy_spell_entry_populate_popup), NULL);
g_signal_connect(G_OBJECT(entry), "changed", G_CALLBACK(sexy_spell_entry_changed), NULL); g_signal_connect(G_OBJECT(entry), "changed", G_CALLBACK(sexy_spell_entry_changed), NULL);
g_signal_connect(G_OBJECT(entry), "preedit-changed", G_CALLBACK(sexy_spell_entry_preedit_changed), NULL);
} }
static void static void
@ -1122,9 +1134,8 @@ sexy_spell_entry_expose(GtkWidget *widget, GdkEventExpose *event)
GtkEntry *gtk_entry = GTK_ENTRY(widget); GtkEntry *gtk_entry = GTK_ENTRY(widget);
PangoLayout *layout; PangoLayout *layout;
layout = gtk_entry_get_layout(gtk_entry); layout = gtk_entry_get_layout(gtk_entry);
if (gtk_entry->preedit_length == 0) if (sexy_spell_entry_preedit_length (gtk_entry) == 0)
{ {
pango_layout_set_attributes(layout, entry->priv->attr_list); pango_layout_set_attributes(layout, entry->priv->attr_list);
} }
@ -1229,6 +1240,20 @@ sexy_spell_entry_changed(GtkEditable *editable, gpointer data)
sexy_spell_entry_recheck_all(entry); sexy_spell_entry_recheck_all(entry);
} }
static void
sexy_spell_entry_preedit_changed(GtkEditable *editable, gchar* preedit, gpointer data)
{
/** Because object internals are private in GTK 3 we need to store this when it changes. */
g_object_set_data (G_OBJECT (editable), "preedit", preedit);
}
static gint
sexy_spell_entry_preedit_length(GtkEntry *entry)
{
gchar *text = (gchar*)g_object_get_data (G_OBJECT (entry), "preedit");
return text ? strlen (text) : 0;
}
static gboolean static gboolean
enchant_has_lang(const gchar *lang, GSList *langs) { enchant_has_lang(const gchar *lang, GSList *langs) {
GSList *i; GSList *i;

View File

@ -474,27 +474,29 @@ static void
gtk_xtext_adjustment_set (xtext_buffer *buf, int fire_signal) gtk_xtext_adjustment_set (xtext_buffer *buf, int fire_signal)
{ {
GtkAdjustment *adj = buf->xtext->adj; GtkAdjustment *adj = buf->xtext->adj;
GtkAllocation alloc;
if (buf->xtext->buffer == buf) if (buf->xtext->buffer == buf)
{ {
adj->lower = 0; gtk_adjustment_set_lower (adj, 0);
adj->upper = buf->num_lines; gtk_adjustment_set_upper (adj, buf->num_lines);
if (adj->upper == 0) if (gtk_adjustment_get_upper (adj) == 0)
adj->upper = 1; gtk_adjustment_set_upper (adj, 0);
adj->page_size = GTK_WIDGET (buf->xtext)->allocation.height / gtk_widget_get_allocation (GTK_WIDGET (buf->xtext), &alloc);
buf->xtext->fontsize;
adj->page_increment = adj->page_size;
if (adj->value > adj->upper - adj->page_size) gtk_adjustment_set_page_size (adj, alloc.height / buf->xtext->fontsize);
gtk_adjustment_set_page_increment (adj, gtk_adjustment_get_page_size (adj));
if (gtk_adjustment_get_value (adj) > gtk_adjustment_get_upper (adj) - gtk_adjustment_get_page_size (adj))
{ {
buf->scrollbar_down = TRUE; buf->scrollbar_down = TRUE;
adj->value = adj->upper - adj->page_size; gtk_adjustment_set_value (adj, gtk_adjustment_get_upper (adj) - gtk_adjustment_get_page_size (adj));
} }
if (adj->value < 0) if (gtk_adjustment_get_value (adj) < 0)
adj->value = 0; gtk_adjustment_set_value (adj, 0);
if (fire_signal) if (fire_signal)
gtk_adjustment_changed (adj); gtk_adjustment_changed (adj);
@ -515,15 +517,15 @@ gtk_xtext_adjustment_changed (GtkAdjustment * adj, GtkXText * xtext)
if (!gtk_widget_get_realized (GTK_WIDGET (xtext))) if (!gtk_widget_get_realized (GTK_WIDGET (xtext)))
return; return;
if (xtext->buffer->old_value != xtext->adj->value) if (xtext->buffer->old_value != gtk_adjustment_get_value (xtext->adj))
{ {
if (xtext->adj->value >= xtext->adj->upper - xtext->adj->page_size) if (gtk_adjustment_get_value (xtext->adj) >= gtk_adjustment_get_upper (xtext->adj) - gtk_adjustment_get_page_size (xtext->adj))
xtext->buffer->scrollbar_down = TRUE; xtext->buffer->scrollbar_down = TRUE;
else else
xtext->buffer->scrollbar_down = FALSE; xtext->buffer->scrollbar_down = FALSE;
if (xtext->adj->value + 1 == xtext->buffer->old_value || if (gtk_adjustment_get_value (xtext->adj) + 1 == xtext->buffer->old_value ||
xtext->adj->value - 1 == xtext->buffer->old_value) /* clicked an arrow? */ gtk_adjustment_get_value (xtext->adj) - 1 == xtext->buffer->old_value) /* clicked an arrow? */
{ {
if (xtext->io_tag) if (xtext->io_tag)
{ {
@ -540,7 +542,7 @@ gtk_xtext_adjustment_changed (GtkAdjustment * adj, GtkXText * xtext)
xtext); xtext);
} }
} }
xtext->buffer->old_value = adj->value; xtext->buffer->old_value = gtk_adjustment_get_value (adj);
} }
GtkWidget * GtkWidget *
@ -668,7 +670,7 @@ gtk_xtext_unrealize (GtkWidget * widget)
backend_deinit (GTK_XTEXT (widget)); backend_deinit (GTK_XTEXT (widget));
/* if there are still events in the queue, this'll avoid segfault */ /* if there are still events in the queue, this'll avoid segfault */
gdk_window_set_user_data (widget->window, NULL); gdk_window_set_user_data (gtk_widget_get_window (widget), NULL);
if (parent_class->unrealize) if (parent_class->unrealize)
(* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget);
@ -682,14 +684,17 @@ gtk_xtext_realize (GtkWidget * widget)
GdkGCValues val; GdkGCValues val;
GdkColor col; GdkColor col;
GdkColormap *cmap; GdkColormap *cmap;
GtkAllocation alloc;
GdkWindow* window;
gtk_widget_set_realized (widget, TRUE); gtk_widget_set_realized (widget, TRUE);
xtext = GTK_XTEXT (widget); xtext = GTK_XTEXT (widget);
attributes.x = widget->allocation.x; gtk_widget_get_allocation (widget, &alloc);
attributes.y = widget->allocation.y; attributes.x = alloc.x;
attributes.width = widget->allocation.width; attributes.y = alloc.y;
attributes.height = widget->allocation.height; attributes.width = alloc.width;
attributes.height = alloc.height;
attributes.wclass = GDK_INPUT_OUTPUT; attributes.wclass = GDK_INPUT_OUTPUT;
attributes.window_type = GDK_WINDOW_CHILD; attributes.window_type = GDK_WINDOW_CHILD;
attributes.event_mask = gtk_widget_get_events (widget) | attributes.event_mask = gtk_widget_get_events (widget) |
@ -700,28 +705,29 @@ gtk_xtext_realize (GtkWidget * widget)
attributes.colormap = cmap; attributes.colormap = cmap;
attributes.visual = gtk_widget_get_visual (widget); attributes.visual = gtk_widget_get_visual (widget);
widget->window = gdk_window_new (widget->parent->window, &attributes, window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes,
GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL |
GDK_WA_COLORMAP); GDK_WA_COLORMAP);
gdk_window_set_user_data (widget->window, widget); gtk_widget_set_window (widget, window);
gdk_window_set_user_data (window, widget);
xtext->depth = gdk_window_get_visual (widget->window)->depth; xtext->depth = gdk_visual_get_depth (gdk_window_get_visual (window));
val.subwindow_mode = GDK_INCLUDE_INFERIORS; val.subwindow_mode = GDK_INCLUDE_INFERIORS;
val.graphics_exposures = 0; val.graphics_exposures = 0;
xtext->bgc = gdk_gc_new_with_values (widget->window, &val, xtext->bgc = gdk_gc_new_with_values (window, &val,
GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW);
xtext->fgc = gdk_gc_new_with_values (widget->window, &val, xtext->fgc = gdk_gc_new_with_values (window, &val,
GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW);
xtext->light_gc = gdk_gc_new_with_values (widget->window, &val, xtext->light_gc = gdk_gc_new_with_values (window, &val,
GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW);
xtext->dark_gc = gdk_gc_new_with_values (widget->window, &val, xtext->dark_gc = gdk_gc_new_with_values (window, &val,
GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW);
xtext->thin_gc = gdk_gc_new_with_values (widget->window, &val, xtext->thin_gc = gdk_gc_new_with_values (window, &val,
GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW);
xtext->marker_gc = gdk_gc_new_with_values (widget->window, &val, xtext->marker_gc = gdk_gc_new_with_values (window, &val,
GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW);
/* for the separator bar (light) */ /* for the separator bar (light) */
@ -747,7 +753,7 @@ gtk_xtext_realize (GtkWidget * widget)
xtext_set_fg (xtext, xtext->bgc, XTEXT_BG); xtext_set_fg (xtext, xtext->bgc, XTEXT_BG);
/* draw directly to window */ /* draw directly to window */
xtext->draw_buf = widget->window; xtext->draw_buf = window;
if (xtext->pixmap) if (xtext->pixmap)
{ {
@ -757,11 +763,11 @@ gtk_xtext_realize (GtkWidget * widget)
gdk_gc_set_fill (xtext->bgc, GDK_TILED); gdk_gc_set_fill (xtext->bgc, GDK_TILED);
} }
xtext->hand_cursor = gdk_cursor_new_for_display (gdk_window_get_display (widget->window), GDK_HAND1); xtext->hand_cursor = gdk_cursor_new_for_display (gdk_window_get_display (window), GDK_HAND1);
xtext->resize_cursor = gdk_cursor_new_for_display (gdk_window_get_display (widget->window), GDK_LEFT_SIDE); xtext->resize_cursor = gdk_cursor_new_for_display (gdk_window_get_display (window), GDK_LEFT_SIDE);
gdk_window_set_back_pixmap (widget->window, NULL, FALSE); gdk_window_set_back_pixmap (window, NULL, FALSE);
widget->style = gtk_style_attach (widget->style, widget->window); gtk_widget_set_style (widget, gtk_style_attach (gtk_widget_get_style (widget), window));
backend_init (xtext); backend_init (xtext);
} }
@ -782,13 +788,13 @@ gtk_xtext_size_allocate (GtkWidget * widget, GtkAllocation * allocation)
if (allocation->width == xtext->buffer->window_width) if (allocation->width == xtext->buffer->window_width)
height_only = TRUE; height_only = TRUE;
widget->allocation = *allocation; gtk_widget_set_allocation (widget, allocation);
if (gtk_widget_get_realized (GTK_WIDGET(widget))) if (gtk_widget_get_realized (GTK_WIDGET(widget)))
{ {
xtext->buffer->window_width = allocation->width; xtext->buffer->window_width = allocation->width;
xtext->buffer->window_height = allocation->height; xtext->buffer->window_height = allocation->height;
gdk_window_move_resize (widget->window, allocation->x, allocation->y, gdk_window_move_resize (gtk_widget_get_window (widget), allocation->x, allocation->y,
allocation->width, allocation->height); allocation->width, allocation->height);
dontscroll (xtext->buffer); /* force scrolling off */ dontscroll (xtext->buffer); /* force scrolling off */
if (!height_only) if (!height_only)
@ -799,8 +805,8 @@ gtk_xtext_size_allocate (GtkWidget * widget, GtkAllocation * allocation)
gtk_xtext_adjustment_set (xtext->buffer, FALSE); gtk_xtext_adjustment_set (xtext->buffer, FALSE);
} }
if (xtext->buffer->scrollbar_down) if (xtext->buffer->scrollbar_down)
gtk_adjustment_set_value (xtext->adj, xtext->adj->upper - gtk_adjustment_set_value (xtext->adj, gtk_adjustment_get_upper (xtext->adj) -
xtext->adj->page_size); gtk_adjustment_get_page_size (xtext->adj));
} }
} }
@ -919,7 +925,7 @@ gtk_xtext_find_x (GtkXText * xtext, int x, textentry * ent, int subline,
else else
indent = xtext->buffer->indent; indent = xtext->buffer->indent;
if (line > xtext->adj->page_size || line < 0) if (line > gtk_adjustment_get_page_size (xtext->adj) || line < 0)
{ {
*out_of_bounds = TRUE; *out_of_bounds = TRUE;
return 0; return 0;
@ -954,7 +960,7 @@ gtk_xtext_find_char (GtkXText * xtext, int x, int y, int *off, int *out_of_bound
y -= xtext->fontsize; y -= xtext->fontsize;
line = (y + xtext->pixel_offset) / xtext->fontsize; line = (y + xtext->pixel_offset) / xtext->fontsize;
ent = gtk_xtext_nth (xtext, line + (int)xtext->adj->value, &subline); ent = gtk_xtext_nth (xtext, line + (int)gtk_adjustment_get_value (xtext->adj), &subline);
if (!ent) if (!ent)
return NULL; return NULL;
@ -971,11 +977,13 @@ gtk_xtext_draw_sep (GtkXText * xtext, int y)
{ {
int x, height; int x, height;
GdkGC *light, *dark; GdkGC *light, *dark;
GtkAllocation alloc;
if (y == -1) if (y == -1)
{ {
y = 0; y = 0;
height = GTK_WIDGET (xtext)->allocation.height; gtk_widget_get_allocation (GTK_WIDGET (xtext), &alloc);
height = alloc.height;
} else } else
{ {
height = xtext->fontsize; height = xtext->fontsize;
@ -1016,6 +1024,7 @@ static void
gtk_xtext_draw_marker (GtkXText * xtext, textentry * ent, int y) gtk_xtext_draw_marker (GtkXText * xtext, textentry * ent, int y)
{ {
int x, width, render_y; int x, width, render_y;
GtkAllocation alloc;
if (!xtext->marker) return; if (!xtext->marker) return;
@ -1029,8 +1038,9 @@ gtk_xtext_draw_marker (GtkXText * xtext, textentry * ent, int y)
} }
else return; else return;
gtk_widget_get_allocation (GTK_WIDGET (xtext), &alloc);
width = alloc.width;
x = 0; x = 0;
width = GTK_WIDGET (xtext)->allocation.width;
gdk_draw_line (xtext->draw_buf, xtext->marker_gc, x, render_y, x + width, render_y); gdk_draw_line (xtext->draw_buf, xtext->marker_gc, x, render_y, x + width, render_y);
@ -1046,10 +1056,12 @@ gtk_xtext_paint (GtkWidget *widget, GdkRectangle *area)
GtkXText *xtext = GTK_XTEXT (widget); GtkXText *xtext = GTK_XTEXT (widget);
textentry *ent_start, *ent_end; textentry *ent_start, *ent_end;
int x, y; int x, y;
GtkAllocation alloc;
gtk_widget_get_allocation (widget, &alloc);
if (area->x == 0 && area->y == 0 && if (area->x == 0 && area->y == 0 &&
area->height == widget->allocation.height && area->height == alloc.height &&
area->width == widget->allocation.width) area->width == alloc.width)
{ {
dontscroll (xtext->buffer); /* force scrolling off */ dontscroll (xtext->buffer); /* force scrolling off */
gtk_xtext_render_page (xtext); gtk_xtext_render_page (xtext);
@ -1077,14 +1089,14 @@ gtk_xtext_paint (GtkWidget *widget, GdkRectangle *area)
/* y is the last pixel y location it rendered text at */ /* y is the last pixel y location it rendered text at */
y = gtk_xtext_render_ents (xtext, ent_start, ent_end); y = gtk_xtext_render_ents (xtext, ent_start, ent_end);
if (y && y < widget->allocation.height && !ent_end->next) if (y && y < alloc.height && !ent_end->next)
{ {
GdkRectangle rect; GdkRectangle rect;
rect.x = 0; rect.x = 0;
rect.y = y; rect.y = y;
rect.width = widget->allocation.width; rect.width = alloc.width;
rect.height = widget->allocation.height - y; rect.height = alloc.height - y;
/* fill any space below the last line that also intersects with /* fill any space below the last line that also intersects with
the exposure rectangle */ the exposure rectangle */
@ -1433,21 +1445,22 @@ gtk_xtext_scrolldown_timeout (GtkXText * xtext)
xtext_buffer *buf = xtext->buffer; xtext_buffer *buf = xtext->buffer;
GtkAdjustment *adj = xtext->adj; GtkAdjustment *adj = xtext->adj;
gdk_window_get_pointer (GTK_WIDGET (xtext)->window, 0, &p_y, 0); gdk_window_get_pointer (gtk_widget_get_window (GTK_WIDGET (xtext)), 0, &p_y, 0);
win_height = gdk_window_get_height (gtk_widget_get_window (GTK_WIDGET (xtext))); win_height = gdk_window_get_height (gtk_widget_get_window (GTK_WIDGET (xtext)));
if (buf->last_ent_end == NULL || /* If context has changed OR */ if (buf->last_ent_end == NULL || /* If context has changed OR */
buf->pagetop_ent == NULL || /* pagetop_ent is reset OR */ buf->pagetop_ent == NULL || /* pagetop_ent is reset OR */
p_y <= win_height || /* pointer not below bottom margin OR */ p_y <= win_height || /* pointer not below bottom margin OR */
adj->value >= adj->upper - adj->page_size) /* we're scrolled to bottom */ gtk_adjustment_get_value (adj) >= gtk_adjustment_get_upper (adj) - gtk_adjustment_get_page_size (adj))
{ {
/* we're scrolled to bottom */
xtext->scroll_tag = 0; xtext->scroll_tag = 0;
return 0; return 0;
} }
xtext->select_start_y -= xtext->fontsize; xtext->select_start_y -= xtext->fontsize;
xtext->select_start_adj++; xtext->select_start_adj++;
adj->value++; gtk_adjustment_set_value (adj, gtk_adjustment_get_value (adj) + 1);
gtk_adjustment_value_changed (adj); gtk_adjustment_value_changed (adj);
gtk_xtext_selection_draw (xtext, NULL, TRUE); gtk_xtext_selection_draw (xtext, NULL, TRUE);
gtk_xtext_render_ents (xtext, buf->pagetop_ent->next, buf->last_ent_end); gtk_xtext_render_ents (xtext, buf->pagetop_ent->next, buf->last_ent_end);
@ -1467,27 +1480,27 @@ gtk_xtext_scrollup_timeout (GtkXText * xtext)
GtkAdjustment *adj = xtext->adj; GtkAdjustment *adj = xtext->adj;
int delta_y; int delta_y;
gdk_window_get_pointer (GTK_WIDGET (xtext)->window, 0, &p_y, 0); gdk_window_get_pointer (gtk_widget_get_window (GTK_WIDGET (xtext)), 0, &p_y, 0);
if (buf->last_ent_start == NULL || /* If context has changed OR */ if (buf->last_ent_start == NULL || /* If context has changed OR */
buf->pagetop_ent == NULL || /* pagetop_ent is reset OR */ buf->pagetop_ent == NULL || /* pagetop_ent is reset OR */
p_y >= 0 || /* not above top margin OR */ p_y >= 0 || /* not above top margin OR */
adj->value == 0) /* we're scrolled to the top */ gtk_adjustment_get_value (adj) == 0) /* we're scrolled to the top */
{ {
xtext->scroll_tag = 0; xtext->scroll_tag = 0;
return 0; return 0;
} }
if (adj->value < 0) if (gtk_adjustment_get_value (adj) < 0)
{ {
delta_y = adj->value * xtext->fontsize; delta_y = gtk_adjustment_get_value (adj) * xtext->fontsize;
adj->value = 0; gtk_adjustment_set_value (adj, 0);
} else { } else {
delta_y = xtext->fontsize; delta_y = xtext->fontsize;
adj->value--; gtk_adjustment_set_value (adj, gtk_adjustment_get_value (adj) - 1);
} }
xtext->select_start_y += delta_y; xtext->select_start_y += delta_y;
xtext->select_start_adj = adj->value; xtext->select_start_adj = gtk_adjustment_get_value (adj);
gtk_adjustment_value_changed (adj); gtk_adjustment_value_changed (adj);
gtk_xtext_selection_draw (xtext, NULL, TRUE); gtk_xtext_selection_draw (xtext, NULL, TRUE);
gtk_xtext_render_ents (xtext, buf->pagetop_ent->prev, buf->last_ent_end); gtk_xtext_render_ents (xtext, buf->pagetop_ent->prev, buf->last_ent_end);
@ -1513,22 +1526,22 @@ gtk_xtext_selection_update (GtkXText * xtext, GdkEventMotion * event, int p_y, g
win_height = gdk_window_get_height (gtk_widget_get_window (GTK_WIDGET (xtext))); win_height = gdk_window_get_height (gtk_widget_get_window (GTK_WIDGET (xtext)));
/* selecting past top of window, scroll up! */ /* selecting past top of window, scroll up! */
if (p_y < 0 && xtext->adj->value >= 0) if (p_y < 0 && gtk_adjustment_get_value (xtext->adj) >= 0)
{ {
gtk_xtext_scrollup_timeout (xtext); gtk_xtext_scrollup_timeout (xtext);
} }
/* selecting past bottom of window, scroll down! */ /* selecting past bottom of window, scroll down! */
else if (p_y > win_height && else if (p_y > win_height &&
xtext->adj->value < (xtext->adj->upper - xtext->adj->page_size)) gtk_adjustment_get_value (xtext->adj) < (gtk_adjustment_get_upper (xtext->adj) - gtk_adjustment_get_page_size (xtext->adj)))
{ {
gtk_xtext_scrolldown_timeout (xtext); gtk_xtext_scrolldown_timeout (xtext);
} }
else else
{ {
moved = (int)xtext->adj->value - xtext->select_start_adj; moved = (int)gtk_adjustment_get_value (xtext->adj) - xtext->select_start_adj;
xtext->select_start_y -= (moved * xtext->fontsize); xtext->select_start_y -= (moved * xtext->fontsize);
xtext->select_start_adj = xtext->adj->value; xtext->select_start_adj = gtk_adjustment_get_value (xtext->adj);
gtk_xtext_selection_draw (xtext, event, render); gtk_xtext_selection_draw (xtext, event, render);
} }
} }
@ -1635,7 +1648,7 @@ gtk_xtext_leave_notify (GtkWidget * widget, GdkEventCrossing * event)
xtext->hilight_start = -1; xtext->hilight_start = -1;
xtext->hilight_end = -1; xtext->hilight_end = -1;
xtext->cursor_hand = FALSE; xtext->cursor_hand = FALSE;
gdk_window_set_cursor (widget->window, 0); gdk_window_set_cursor (gtk_widget_get_window (widget), 0);
xtext->hilight_ent = NULL; xtext->hilight_ent = NULL;
} }
@ -1645,7 +1658,7 @@ gtk_xtext_leave_notify (GtkWidget * widget, GdkEventCrossing * event)
xtext->hilight_start = -1; xtext->hilight_start = -1;
xtext->hilight_end = -1; xtext->hilight_end = -1;
xtext->cursor_resize = FALSE; xtext->cursor_resize = FALSE;
gdk_window_set_cursor (widget->window, 0); gdk_window_set_cursor (gtk_widget_get_window (widget), 0);
xtext->hilight_ent = NULL; xtext->hilight_ent = NULL;
} }
@ -1734,12 +1747,14 @@ gtk_xtext_motion_notify (GtkWidget * widget, GdkEventMotion * event)
int redraw, tmp, x, y, offset, len, line_x; int redraw, tmp, x, y, offset, len, line_x;
textentry *word_ent; textentry *word_ent;
int word_type; int word_type;
GtkAllocation alloc;
gdk_window_get_pointer (widget->window, &x, &y, &mask); gdk_window_get_pointer (gtk_widget_get_window (widget), &x, &y, &mask);
if (xtext->moving_separator) if (xtext->moving_separator)
{ {
if (x < (3 * widget->allocation.width) / 5 && x > 15) gtk_widget_get_allocation (widget, &alloc);
if (x < (3 * alloc.width) / 5 && x > 15)
{ {
tmp = xtext->buffer->indent; tmp = xtext->buffer->indent;
xtext->buffer->indent = x; xtext->buffer->indent = x;
@ -1748,8 +1763,8 @@ gtk_xtext_motion_notify (GtkWidget * widget, GdkEventMotion * event)
{ {
gtk_xtext_recalc_widths (xtext->buffer, FALSE); gtk_xtext_recalc_widths (xtext->buffer, FALSE);
if (xtext->buffer->scrollbar_down) if (xtext->buffer->scrollbar_down)
gtk_adjustment_set_value (xtext->adj, xtext->adj->upper - gtk_adjustment_set_value (xtext->adj, gtk_adjustment_get_upper (xtext->adj) -
xtext->adj->page_size); gtk_adjustment_get_page_size (xtext->adj));
if (!xtext->io_tag) if (!xtext->io_tag)
xtext->io_tag = g_timeout_add (REFRESH_TIMEOUT, xtext->io_tag = g_timeout_add (REFRESH_TIMEOUT,
(GSourceFunc) (GSourceFunc)
@ -1789,7 +1804,7 @@ gtk_xtext_motion_notify (GtkWidget * widget, GdkEventMotion * event)
{ {
if (!xtext->cursor_resize) if (!xtext->cursor_resize)
{ {
gdk_window_set_cursor (GTK_WIDGET (xtext)->window, gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (xtext)),
xtext->resize_cursor); xtext->resize_cursor);
xtext->cursor_hand = FALSE; xtext->cursor_hand = FALSE;
xtext->cursor_resize = TRUE; xtext->cursor_resize = TRUE;
@ -1811,7 +1826,7 @@ gtk_xtext_motion_notify (GtkWidget * widget, GdkEventMotion * event)
{ {
if (!xtext->cursor_hand) if (!xtext->cursor_hand)
{ {
gdk_window_set_cursor (GTK_WIDGET (xtext)->window, gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (xtext)),
xtext->hand_cursor); xtext->hand_cursor);
xtext->cursor_hand = TRUE; xtext->cursor_hand = TRUE;
xtext->cursor_resize = FALSE; xtext->cursor_resize = FALSE;
@ -1912,12 +1927,14 @@ gtk_xtext_button_release (GtkWidget * widget, GdkEventButton * event)
GtkXText *xtext = GTK_XTEXT (widget); GtkXText *xtext = GTK_XTEXT (widget);
unsigned char *word; unsigned char *word;
int old; int old;
GtkAllocation alloc;
if (xtext->moving_separator) if (xtext->moving_separator)
{ {
xtext->moving_separator = FALSE; xtext->moving_separator = FALSE;
old = xtext->buffer->indent; old = xtext->buffer->indent;
if (event->x < (4 * widget->allocation.width) / 5 && event->x > 15) gtk_widget_get_allocation (widget, &alloc);
if (event->x < (4 * alloc.width) / 5 && event->x > 15)
xtext->buffer->indent = event->x; xtext->buffer->indent = event->x;
gtk_xtext_fix_indent (xtext->buffer); gtk_xtext_fix_indent (xtext->buffer);
if (xtext->buffer->indent != old) if (xtext->buffer->indent != old)
@ -1989,7 +2006,7 @@ gtk_xtext_button_press (GtkWidget * widget, GdkEventButton * event)
unsigned char *word; unsigned char *word;
int line_x, x, y, offset, len; int line_x, x, y, offset, len;
gdk_window_get_pointer (widget->window, &x, &y, &mask); gdk_window_get_pointer (gtk_widget_get_window (widget), &x, &y, &mask);
if (event->button == 3 || event->button == 2) /* right/middle click */ if (event->button == 3 || event->button == 2) /* right/middle click */
{ {
@ -2055,7 +2072,7 @@ gtk_xtext_button_press (GtkWidget * widget, GdkEventButton * event)
xtext->button_down = TRUE; xtext->button_down = TRUE;
xtext->select_start_x = x; xtext->select_start_x = x;
xtext->select_start_y = y; xtext->select_start_y = y;
xtext->select_start_adj = xtext->adj->value; xtext->select_start_adj = gtk_adjustment_get_value (xtext->adj);
return FALSE; return FALSE;
} }
@ -2217,7 +2234,7 @@ gtk_xtext_selection_get (GtkWidget * widget,
case TARGET_COMPOUND_TEXT: case TARGET_COMPOUND_TEXT:
#ifdef GDK_WINDOWING_X11 #ifdef GDK_WINDOWING_X11
{ {
GdkDisplay *display = gdk_window_get_display (widget->window); GdkDisplay *display = gdk_window_get_display (gtk_widget_get_window (widget));
GdkAtom encoding; GdkAtom encoding;
gint format; gint format;
gint new_length; gint new_length;
@ -2249,16 +2266,16 @@ gtk_xtext_scroll (GtkWidget *widget, GdkEventScroll *event)
if (event->direction == GDK_SCROLL_UP) /* mouse wheel pageUp */ if (event->direction == GDK_SCROLL_UP) /* mouse wheel pageUp */
{ {
new_value = xtext->adj->value - (xtext->adj->page_increment / 10); new_value = gtk_adjustment_get_value (xtext->adj) - (gtk_adjustment_get_page_increment (xtext->adj) / 10);
if (new_value < xtext->adj->lower) if (new_value < gtk_adjustment_get_lower (xtext->adj))
new_value = xtext->adj->lower; new_value = gtk_adjustment_get_lower (xtext->adj);
gtk_adjustment_set_value (xtext->adj, new_value); gtk_adjustment_set_value (xtext->adj, new_value);
} }
else if (event->direction == GDK_SCROLL_DOWN) /* mouse wheel pageDn */ else if (event->direction == GDK_SCROLL_DOWN) /* mouse wheel pageDn */
{ {
new_value = xtext->adj->value + (xtext->adj->page_increment / 10); new_value = gtk_adjustment_get_value (xtext->adj) + (gtk_adjustment_get_page_increment (xtext->adj) / 10);
if (new_value > (xtext->adj->upper - xtext->adj->page_size)) if (new_value > (gtk_adjustment_get_upper (xtext->adj) - gtk_adjustment_get_page_size (xtext->adj)))
new_value = xtext->adj->upper - xtext->adj->page_size; new_value = gtk_adjustment_get_upper (xtext->adj) - gtk_adjustment_get_page_size (xtext->adj);
gtk_adjustment_set_value (xtext->adj, new_value); gtk_adjustment_set_value (xtext->adj, new_value);
} }
@ -2610,7 +2627,7 @@ gtk_xtext_render_flush (GtkXText * xtext, int x, int y, unsigned char *str,
GdkRectangle dest; GdkRectangle dest;
gdk_gc_set_ts_origin (xtext->bgc, xtext->ts_x, xtext->ts_y); gdk_gc_set_ts_origin (xtext->bgc, xtext->ts_x, xtext->ts_y);
xtext->draw_buf = GTK_WIDGET (xtext)->window; xtext->draw_buf = gtk_widget_get_window (GTK_WIDGET (xtext));
clip.x = xtext->clip_x; clip.x = xtext->clip_x;
clip.y = xtext->clip_y; clip.y = xtext->clip_y;
clip.width = xtext->clip_x2 - xtext->clip_x; clip.width = xtext->clip_x2 - xtext->clip_x;
@ -3557,7 +3574,7 @@ gtk_xtext_set_background (GtkXText * xtext, GdkPixmap * pixmap)
g_object_unref (xtext->bgc); g_object_unref (xtext->bgc);
val.subwindow_mode = GDK_INCLUDE_INFERIORS; val.subwindow_mode = GDK_INCLUDE_INFERIORS;
val.graphics_exposures = 0; val.graphics_exposures = 0;
xtext->bgc = gdk_gc_new_with_values (GTK_WIDGET (xtext)->window, xtext->bgc = gdk_gc_new_with_values (gtk_widget_get_window (GTK_WIDGET (xtext)),
&val, GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); &val, GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW);
xtext_set_fg (xtext, xtext->bgc, XTEXT_BG); xtext_set_fg (xtext, xtext->bgc, XTEXT_BG);
} }
@ -3802,7 +3819,7 @@ gtk_xtext_render_page (GtkXText * xtext)
int width; int width;
int height; int height;
int subline; int subline;
int startline = xtext->adj->value; int startline = gtk_adjustment_get_value (xtext->adj);
int pos, overlap; int pos, overlap;
if(!gtk_widget_get_realized(GTK_WIDGET(xtext))) if(!gtk_widget_get_realized(GTK_WIDGET(xtext)))
@ -3811,13 +3828,13 @@ gtk_xtext_render_page (GtkXText * xtext)
if (xtext->buffer->indent < MARGIN) if (xtext->buffer->indent < MARGIN)
xtext->buffer->indent = MARGIN; /* 2 pixels is our left margin */ xtext->buffer->indent = MARGIN; /* 2 pixels is our left margin */
width = gdk_window_get_width (GTK_WIDGET (xtext)->window); width = gdk_window_get_width (gtk_widget_get_window (GTK_WIDGET (xtext)));
height = gdk_window_get_height (GTK_WIDGET (xtext)->window); height = gdk_window_get_height (gtk_widget_get_window (GTK_WIDGET (xtext)));
if (width < 34 || height < xtext->fontsize || width < xtext->buffer->indent + 32) if (width < 34 || height < xtext->fontsize || width < xtext->buffer->indent + 32)
return; return;
xtext->pixel_offset = (xtext->adj->value - startline) * xtext->fontsize; xtext->pixel_offset = (gtk_adjustment_get_value (xtext->adj) - startline) * xtext->fontsize;
subline = line = 0; subline = line = 0;
ent = xtext->buffer->text_first; ent = xtext->buffer->text_first;
@ -3829,10 +3846,10 @@ gtk_xtext_render_page (GtkXText * xtext)
xtext->buffer->pagetop_subline = subline; xtext->buffer->pagetop_subline = subline;
xtext->buffer->pagetop_line = startline; xtext->buffer->pagetop_line = startline;
if (xtext->buffer->num_lines <= xtext->adj->page_size) if (xtext->buffer->num_lines <= gtk_adjustment_get_page_size (xtext->adj))
dontscroll (xtext->buffer); dontscroll (xtext->buffer);
pos = xtext->adj->value * xtext->fontsize; pos = gtk_adjustment_get_value (xtext->adj) * xtext->fontsize;
overlap = xtext->buffer->last_pixel_pos - pos; overlap = xtext->buffer->last_pixel_pos - pos;
xtext->buffer->last_pixel_pos = pos; xtext->buffer->last_pixel_pos = pos;
@ -3972,7 +3989,9 @@ gtk_xtext_remove_top (xtext_buffer *buffer)
buffer->old_value -= g_slist_length (ent->sublines); buffer->old_value -= g_slist_length (ent->sublines);
if (buffer->xtext->buffer == buffer) /* is it the current buffer? */ if (buffer->xtext->buffer == buffer) /* is it the current buffer? */
{ {
buffer->xtext->adj->value -= g_slist_length (ent->sublines);
gtk_adjustment_set_value (buffer->xtext->adj, gtk_adjustment_get_value (buffer->xtext->adj)
- g_slist_length (ent->sublines));
buffer->xtext->select_start_adj -= g_slist_length (ent->sublines); buffer->xtext->select_start_adj -= g_slist_length (ent->sublines);
} }
@ -4514,13 +4533,13 @@ gtk_xtext_search (GtkXText * xtext, const gchar *text, gtk_xtext_search_flags fl
{ {
value += g_slist_length (ent->sublines); value += g_slist_length (ent->sublines);
} }
if (value > adj->upper - adj->page_size) if (value > gtk_adjustment_get_upper (adj) - gtk_adjustment_get_page_size (adj))
{ {
value = adj->upper - adj->page_size; value = gtk_adjustment_get_upper (adj) - gtk_adjustment_get_page_size (adj);
} }
else if ((flags & backward) && ent) else if ((flags & backward) && ent)
{ {
value -= adj->page_size - g_slist_length (ent->sublines); value -= gtk_adjustment_get_page_size (adj) - g_slist_length (ent->sublines);
if (value < 0) if (value < 0)
{ {
value = 0; value = 0;
@ -4545,18 +4564,18 @@ gtk_xtext_render_page_timeout (GtkXText * xtext)
xtext->add_io_tag = 0; xtext->add_io_tag = 0;
/* less than a complete page? */ /* less than a complete page? */
if (xtext->buffer->num_lines <= adj->page_size) if (xtext->buffer->num_lines <= gtk_adjustment_get_page_size (adj))
{ {
xtext->buffer->old_value = 0; xtext->buffer->old_value = 0;
adj->value = 0; gtk_adjustment_set_value (adj, 0);
gtk_xtext_render_page (xtext); gtk_xtext_render_page (xtext);
} else if (xtext->buffer->scrollbar_down) } else if (xtext->buffer->scrollbar_down)
{ {
g_signal_handler_block (xtext->adj, xtext->vc_signal_tag); g_signal_handler_block (xtext->adj, xtext->vc_signal_tag);
gtk_xtext_adjustment_set (xtext->buffer, FALSE); gtk_xtext_adjustment_set (xtext->buffer, FALSE);
gtk_adjustment_set_value (adj, adj->upper - adj->page_size); gtk_adjustment_set_value (adj, gtk_adjustment_get_upper (adj) - gtk_adjustment_get_page_size (adj));
g_signal_handler_unblock (xtext->adj, xtext->vc_signal_tag); g_signal_handler_unblock (xtext->adj, xtext->vc_signal_tag);
xtext->buffer->old_value = adj->value; xtext->buffer->old_value = gtk_adjustment_get_value (adj);
gtk_xtext_render_page (xtext); gtk_xtext_render_page (xtext);
} else } else
{ {
@ -4611,7 +4630,7 @@ gtk_xtext_append_entry (xtext_buffer *buf, textentry * ent, time_t stamp)
ent->sublines = NULL; ent->sublines = NULL;
buf->num_lines += gtk_xtext_lines_taken (buf, ent); buf->num_lines += gtk_xtext_lines_taken (buf, ent);
if ((buf->marker_pos == NULL || buf->marker_seen) && (buf->xtext->buffer != buf || if ((buf->marker_pos == NULL || buf->marker_seen) && (buf->xtext->buffer != buf ||
!gtk_window_has_toplevel_focus (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (buf->xtext)))))) !gtk_window_has_toplevel_focus (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (buf->xtext))))))
{ {
buf->marker_pos = ent; buf->marker_pos = ent;
@ -4628,7 +4647,7 @@ gtk_xtext_append_entry (xtext_buffer *buf, textentry * ent, time_t stamp)
if (buf->xtext->buffer == buf) if (buf->xtext->buffer == buf)
{ {
/* this could be improved */ /* this could be improved */
if ((buf->num_lines - 1) <= buf->xtext->adj->page_size) if ((buf->num_lines - 1) <= gtk_adjustment_get_page_size (buf->xtext->adj))
dontscroll (buf); dontscroll (buf);
if (!buf->xtext->add_io_tag) if (!buf->xtext->add_io_tag)
@ -4647,7 +4666,7 @@ gtk_xtext_append_entry (xtext_buffer *buf, textentry * ent, time_t stamp)
} }
if (buf->scrollbar_down) if (buf->scrollbar_down)
{ {
buf->old_value = buf->num_lines - buf->xtext->adj->page_size; buf->old_value = buf->num_lines - gtk_adjustment_get_page_size (buf->xtext->adj);
if (buf->old_value < 0) if (buf->old_value < 0)
buf->old_value = 0; buf->old_value = 0;
} }
@ -4929,13 +4948,13 @@ gtk_xtext_moveto_marker_pos (GtkXText *xtext)
value += g_slist_length (ent->sublines); value += g_slist_length (ent->sublines);
ent = ent->next; ent = ent->next;
} }
if (value >= adj->value && value < adj->value + adj->page_size) if (value >= gtk_adjustment_get_value (adj) && value < gtk_adjustment_get_value (adj) + gtk_adjustment_get_page_size (adj))
return MARKER_IS_SET; return MARKER_IS_SET;
value -= adj->page_size / 2; value -= gtk_adjustment_get_page_size (adj) / 2;
if (value < 0) if (value < 0)
value = 0; value = 0;
if (value > adj->upper - adj->page_size) if (value > gtk_adjustment_get_upper (adj) - gtk_adjustment_get_page_size (adj))
value = adj->upper - adj->page_size; value = gtk_adjustment_get_upper (adj) - gtk_adjustment_get_page_size (adj);
gtk_adjustment_set_value (adj, value); gtk_adjustment_set_value (adj, value);
gtk_xtext_render_page (xtext); gtk_xtext_render_page (xtext);
} }
@ -4988,25 +5007,25 @@ gtk_xtext_buffer_show (GtkXText *xtext, xtext_buffer *buf, int render)
/* now change to the new buffer */ /* now change to the new buffer */
xtext->buffer = buf; xtext->buffer = buf;
dontscroll (buf); /* force scrolling off */ dontscroll (buf); /* force scrolling off */
xtext->adj->value = buf->old_value; gtk_adjustment_set_value (xtext->adj, buf->old_value);
xtext->adj->upper = buf->num_lines; gtk_adjustment_set_upper (xtext->adj, buf->num_lines);
/* if the scrollbar was down, keep it down */ /* if the scrollbar was down, keep it down */
if (xtext->buffer->scrollbar_down && xtext->adj->value < if (xtext->buffer->scrollbar_down && gtk_adjustment_get_value (xtext->adj) <
xtext->adj->upper - xtext->adj->page_size) gtk_adjustment_get_upper (xtext->adj) - gtk_adjustment_get_page_size (xtext->adj))
{ {
xtext->adj->value = xtext->adj->upper - xtext->adj->page_size; gtk_adjustment_set_value (xtext->adj, gtk_adjustment_get_upper (xtext->adj) - gtk_adjustment_get_page_size (xtext->adj));
} }
if (xtext->adj->upper == 0) if (gtk_adjustment_get_upper (xtext->adj) == 0)
xtext->adj->upper = 1; gtk_adjustment_set_upper (xtext->adj, 1);
/* sanity check */ /* sanity check */
else if (xtext->adj->value > xtext->adj->upper - xtext->adj->page_size) else if (gtk_adjustment_get_value (xtext->adj) > gtk_adjustment_get_upper (xtext->adj) - gtk_adjustment_get_page_size (xtext->adj))
{ {
/*buf->pagetop_ent = NULL;*/ /*buf->pagetop_ent = NULL;*/
xtext->adj->value = xtext->adj->upper - xtext->adj->page_size; gtk_adjustment_set_value (xtext->adj, gtk_adjustment_get_upper (xtext->adj) - gtk_adjustment_get_page_size (xtext->adj));
if (xtext->adj->value < 0) if (gtk_adjustment_get_value (xtext->adj) < 0)
xtext->adj->value = 0; gtk_adjustment_set_value (xtext->adj, 0);
} }
if (render) if (render)
@ -5018,14 +5037,14 @@ gtk_xtext_buffer_show (GtkXText *xtext, xtext_buffer *buf, int render)
buf->window_height = h; buf->window_height = h;
gtk_xtext_calc_lines (buf, FALSE); gtk_xtext_calc_lines (buf, FALSE);
if (buf->scrollbar_down) if (buf->scrollbar_down)
gtk_adjustment_set_value (xtext->adj, xtext->adj->upper - gtk_adjustment_set_value (xtext->adj, gtk_adjustment_get_upper (xtext->adj) -
xtext->adj->page_size); gtk_adjustment_get_page_size (xtext->adj));
} else if (buf->window_height != h) } else if (buf->window_height != h)
{ {
buf->window_height = h; buf->window_height = h;
buf->pagetop_ent = NULL; buf->pagetop_ent = NULL;
if (buf->scrollbar_down) if (buf->scrollbar_down)
xtext->adj->value = xtext->adj->upper; gtk_adjustment_set_value (xtext->adj, gtk_adjustment_get_upper (xtext->adj));
gtk_xtext_adjustment_set (buf, FALSE); gtk_xtext_adjustment_set (buf, FALSE);
} }

View File

@ -14,8 +14,7 @@
<!-- YOU SHOULDN'T TOUCH ANYTHING BELOW --> <!-- YOU SHOULDN'T TOUCH ANYTHING BELOW -->
<!-- G_DISABLE_DEPRECATED is unfeasible due to g_completion_* --> <!-- G_DISABLE_DEPRECATED is unfeasible due to g_completion_* -->
<!-- must be buildable with GSEAL_ENABLE in the future, xtext, setup, and chanview-tabs stand in the way --> <OwnFlags>GSEAL_ENABLE;GTK_DISABLE_DEPRECATED;GDK_PIXBUF_DISABLE_DEPRECATED;G_DISABLE_SINGLE_INCLUDES;GDK_PIXBUF_DISABLE_SINGLE_INCLUDES;GTK_DISABLE_SINGLE_INCLUDES;HAVE_X509_GET_SIGNATURE_NID;HAVE_SSL_CTX_GET_SSL_METHOD;DEFAULT_CERT_FILE="cert.pem";HAVE_STRTOULL;strtoull=_strtoui64;strcasecmp=stricmp;strncasecmp=strnicmp;__inline__=__inline</OwnFlags>
<OwnFlags>GTK_DISABLE_DEPRECATED;GDK_PIXBUF_DISABLE_DEPRECATED;G_DISABLE_SINGLE_INCLUDES;GDK_PIXBUF_DISABLE_SINGLE_INCLUDES;GTK_DISABLE_SINGLE_INCLUDES;HAVE_X509_GET_SIGNATURE_NID;HAVE_SSL_CTX_GET_SSL_METHOD;DEFAULT_CERT_FILE="cert.pem";HAVE_STRTOULL;strtoull=_strtoui64;strcasecmp=stricmp;strncasecmp=strnicmp;__inline__=__inline</OwnFlags>
<!-- FIXME: Add ability to use debug builds --> <!-- FIXME: Add ability to use debug builds -->
<DepsRoot>$(YourDepsPath)\$(PlatformName)\release</DepsRoot> <DepsRoot>$(YourDepsPath)\$(PlatformName)\release</DepsRoot>
<GendefPath>$(YourGendefPath)</GendefPath> <GendefPath>$(YourGendefPath)</GendefPath>