r7676 chris_y - /trunk/netsurf/amiga/sslcert.c
by netsurf@semichrome.net
Author: chris_y
Date: Sun May 31 17:13:58 2009
New Revision: 7676
URL: http://source.netsurf-browser.org?rev=7676&view=rev
Log:
Basic SSL certificate verification, needs some work.
Added:
trunk/netsurf/amiga/sslcert.c (with props)
Added: trunk/netsurf/amiga/sslcert.c
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/sslcert.c?rev=7676&...
==============================================================================
--- trunk/netsurf/amiga/sslcert.c (added)
+++ trunk/netsurf/amiga/sslcert.c Sun May 31 17:13:58 2009
@@ -1,0 +1,229 @@
+/*
+ * Copyright 2009 Chris Young <chris(a)unsatisfactorysoftware.co.uk>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <assert.h>
+#include <string.h>
+#include <proto/dos.h>
+#include <proto/exec.h>
+#include <proto/utility.h>
+#include "utils/utils.h"
+#include "utils/messages.h"
+#include "content/urldb.h"
+#include "content/fetch.h"
+#include "desktop/tree.h"
+#include "amiga/tree.h"
+#include "amiga/gui.h"
+
+struct session_data {
+ struct session_cert *certs;
+ unsigned long num;
+ struct browser_window *bw;
+ char *url;
+ struct tree *tree;
+};
+struct session_cert {
+ char version[16], valid_from[32], valid_to[32], type[8], serial[32];
+ char *issuer_t;
+ char *subject_t;
+ uintptr_t issuer;
+ uintptr_t subject;
+};
+
+void ami_gui_cert_close(struct session_data *data);
+bool ami_gui_cert_apply(struct session_data *session);
+
+void gui_cert_verify(struct browser_window *bw, struct content *c,
+ const struct ssl_cert_info *certs, unsigned long num)
+{
+ const struct ssl_cert_info *from;
+ struct session_cert *to;
+ struct session_data *data;
+ struct tree *tree;
+ struct node *node;
+ long i;
+ STRPTR yesorno,reqcontents;
+ int res = 0;
+ struct treeview_window *twin;
+
+ assert(bw && c && certs);
+
+ /* copy the certificate information */
+ data = calloc(1, sizeof(struct session_data));
+ if (!data) {
+ warn_user("NoMemory", 0);
+ return;
+ }
+ data->url = strdup(c->url);
+ if (!data->url) {
+ free(data);
+ warn_user("NoMemory", 0);
+ return;
+ }
+ data->bw = bw;
+ data->num = num;
+ data->certs = calloc(num, sizeof(struct session_cert));
+ if (!data->certs) {
+ free(data->url);
+ free(data);
+ warn_user("NoMemory", 0);
+ return;
+ }
+ for (i = 0; i < (long)num; i++) {
+ to = &data->certs[i];
+ from = &certs[i];
+ to->subject_t = strdup(from->subject);
+ to->issuer_t = strdup(from->issuer);
+ if ((!to->subject_t) || (!to->issuer_t)) {
+ for (; i >= 0; i--) {
+ to = &data->certs[i];
+ free(to->subject_t);
+ free(to->issuer_t);
+ }
+ free(data->certs);
+ free(data->url);
+ free(data);
+ warn_user("NoMemory", 0);
+ return;
+ }
+ snprintf(to->version, sizeof data->certs->version, "%ld",
+ from->version);
+ snprintf(to->valid_from, sizeof data->certs->valid_from, "%s",
+ from->not_before);
+ snprintf(to->type, sizeof data->certs->type, "%d",
+ from->cert_type);
+ snprintf(to->valid_to, sizeof data->certs->valid_to, "%s",
+ from->not_after);
+ snprintf(to->serial, sizeof data->certs->serial, "%ld",
+ from->serial);
+ }
+
+ tree = calloc(sizeof(struct tree), 1);
+ if (!tree) {
+ //ro_gui_cert_close(ssl_w);
+ warn_user("NoMemory", 0);
+ return;
+ }
+ tree->root = tree_create_folder_node(NULL, "Root");
+ if (!tree->root) {
+// ro_gui_cert_close(ssl_w);
+ warn_user("NoMemory", 0);
+ free(tree);
+ tree = NULL;
+ return;
+ }
+ tree->root->expanded = true;
+ tree->handle = 0;
+ tree->movable = false;
+ tree->no_drag = true;
+ tree->no_vscroll = true;
+ tree->no_furniture = true;
+ tree->single_selection = true;
+ data->tree = tree;
+
+ /* put the SSL names in the tree */
+ for (i = 0; i < (long)num; i++) {
+ node = tree_create_leaf_node(tree->root, certs[i].subject);
+ if (node) {
+ node->data.data = TREE_ELEMENT_SSL;
+ tree_set_node_sprite(node, "small_xxx", "small_xxx");
+ }
+ }
+ tree_initialise(tree);
+
+ ami_open_tree(tree,AMI_TREE_SSLCERT);
+ twin = (struct treeview_window *)data->tree->handle;
+
+ if(yesorno = ASPrintf("%s|%s",messages_get("Yes"),messages_get("No")))
+ {
+ if(reqcontents = ASPrintf("%s: %s\n%s: %s\n%s: %s\n%s: %s\n%s: %s\n%s: %s\n%s: %s\n\n%s",
+ messages_get("ssl subject"),
+ to->subject_t,
+ messages_get("ssl issuer"),
+ to->issuer_t,
+ messages_get("ssl version"),
+ to->version,
+ messages_get("ssl valid_from"),
+ to->valid_from,
+ messages_get("ssl type"),
+ to->type,
+ messages_get("ssl valid_to"),
+ to->valid_to,
+ messages_get("ssl serial"),
+ to->serial,
+ messages_get("ssl question")))
+ {
+ res = TimedDosRequesterTags(TDR_ImageType,TDRIMAGE_QUESTION,
+ TDR_Window,twin->win,
+ TDR_TitleString,messages_get("NetSurf"),
+ TDR_GadgetString,yesorno,
+ TDR_FormatString,reqcontents,
+ TAG_DONE);
+
+ FreeVec(reqcontents);
+ }
+
+ FreeVec(yesorno);
+ }
+
+ if(res == 1)
+ {
+ ami_gui_cert_apply(data);
+ }
+ ami_gui_cert_close(data);
+
+}
+
+void ami_gui_cert_close(struct session_data *data)
+{
+ unsigned long i;
+
+ if(data->tree->handle)
+ {
+ ami_tree_close((struct treeview_window *)data->tree->handle);
+ win_destroyed = true;
+ }
+
+ assert(data);
+
+/*
+ for (i = 0; i < data->num; i++) {
+ if (data->certs[i].subject)
+ textarea_destroy(data->certs[i].subject);
+ if (data->certs[i].issuer)
+ textarea_destroy(data->certs[i].issuer);
+ }
+*/
+
+ if (data->tree) {
+ tree_delete_node(data->tree, data->tree->root, false);
+ free(data->tree);
+ }
+
+ free(data->certs);
+ free(data->url);
+ free(data);
+}
+
+bool ami_gui_cert_apply(struct session_data *session)
+{
+ assert(session);
+
+ urldb_set_cert_permissions(session->url, true);
+ browser_window_go(session->bw, session->url, 0, true);
+ return true;
+}
Propchange: trunk/netsurf/amiga/sslcert.c
------------------------------------------------------------------------------
amiga:protection = ----rw-d ---- ----
14 years, 3 months
r7675 chris_y - in /trunk/netsurf: Makefile.sources amiga/gui.c amiga/resources/Themes/AISS/Theme amiga/resources/Themes/Default/Theme amiga/tree.c amiga/tree.h
by netsurf@semichrome.net
Author: chris_y
Date: Sun May 31 17:12:42 2009
New Revision: 7675
URL: http://source.netsurf-browser.org?rev=7675&view=rev
Log:
Basic SSL certificate verification for Amiga version
Treeview window is not browseable (TimedDOSRequester is blocking)
Needs some strings writing
Modified:
trunk/netsurf/Makefile.sources
trunk/netsurf/amiga/gui.c
trunk/netsurf/amiga/resources/Themes/AISS/Theme
trunk/netsurf/amiga/resources/Themes/Default/Theme
trunk/netsurf/amiga/tree.c
trunk/netsurf/amiga/tree.h
Modified: trunk/netsurf/Makefile.sources
URL: http://source.netsurf-browser.org/trunk/netsurf/Makefile.sources?rev=7675...
==============================================================================
--- trunk/netsurf/Makefile.sources (original)
+++ trunk/netsurf/Makefile.sources Sun May 31 17:12:42 2009
@@ -83,7 +83,7 @@
plotters.c object.c menu.c save_pdf.c arexx.c version.c \
cookies.c context_menu.c clipboard.c save_complete.c \
fetch_file.c fetch_mailto.c search.c history_local.c \
- download.c iff_dr2d.c
+ download.c iff_dr2d.c sslcert.c
S_AMIGA := $(addprefix amiga/,$(S_AMIGA))
# S_FRAMEBUFFER are sources purely for the framebuffer build
Modified: trunk/netsurf/amiga/gui.c
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/gui.c?rev=7675&r1=7...
==============================================================================
--- trunk/netsurf/amiga/gui.c (original)
+++ trunk/netsurf/amiga/gui.c Sun May 31 17:12:42 2009
@@ -2983,11 +2983,6 @@
return itemid;
}
-void gui_cert_verify(struct browser_window *bw, struct content *c,
- const struct ssl_cert_info *certs, unsigned long num)
-{
-}
-
static void *myrealloc(void *ptr, size_t len, void *pw)
{
return realloc(ptr, len);
Modified: trunk/netsurf/amiga/resources/Themes/AISS/Theme
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/resources/Themes/AI...
==============================================================================
--- trunk/netsurf/amiga/resources/Themes/AISS/Theme (original)
+++ trunk/netsurf/amiga/resources/Themes/AISS/Theme Sun May 31 17:12:42 2009
@@ -26,6 +26,7 @@
theme_list_bookmark:*TBImages:list_bookmark
theme_list_cookie:*TBImages:list_abstract
theme_list_history:*TBImages:list_archive
+theme_list_sslcert:*TBImages:list_crypt
theme_throbber:Throbber
theme_throbber_frames:13
ptr_default:*PROGDIR:Resources/Pointers/Default
Modified: trunk/netsurf/amiga/resources/Themes/Default/Theme
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/resources/Themes/De...
==============================================================================
--- trunk/netsurf/amiga/resources/Themes/Default/Theme (original)
+++ trunk/netsurf/amiga/resources/Themes/Default/Theme Sun May 31 17:12:42 2009
@@ -39,6 +39,7 @@
theme_list_bookmark:
theme_list_cookie:
theme_list_history:
+theme_list_sslcert:
theme_throbber:Throbber
theme_throbber_frames:9
ptr_default:*PROGDIR:Resources/Pointers/Default
Modified: trunk/netsurf/amiga/tree.c
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/tree.c?rev=7675&r1=...
==============================================================================
--- trunk/netsurf/amiga/tree.c (original)
+++ trunk/netsurf/amiga/tree.c Sun May 31 17:12:42 2009
@@ -237,6 +237,11 @@
nothl = TRUE;
wintitle = (char *)messages_get("GlobalHistory");
ami_get_theme_filename(&item,"theme_list_history");
+ break;
+ case AMI_TREE_SSLCERT:
+ nothl = TRUE;
+ wintitle = (char *)messages_get("ssl cert");
+ ami_get_theme_filename(&item,"theme_list_sslcert");
break;
}
@@ -416,6 +421,7 @@
{
element = tree_find_element(node, TREE_ELEMENT_NAME);
if(!element) element = tree_find_element(node, TREE_ELEMENT_TITLE);
+ if(!element) element = tree_find_element(node, TREE_ELEMENT_SSL);
if(element && element->text)
{
text1 = (char *)element->text;
Modified: trunk/netsurf/amiga/tree.h
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/tree.h?rev=7675&r1=...
==============================================================================
--- trunk/netsurf/amiga/tree.h (original)
+++ trunk/netsurf/amiga/tree.h Sun May 31 17:12:42 2009
@@ -37,7 +37,8 @@
{
AMI_TREE_HOTLIST,
AMI_TREE_HISTORY,
- AMI_TREE_COOKIES
+ AMI_TREE_COOKIES,
+ AMI_TREE_SSLCERT
};
enum
14 years, 3 months
r7674 chris_y - /trunk/netsurf/amiga/gui.c
by netsurf@semichrome.net
Author: chris_y
Date: Sun May 31 15:14:15 2009
New Revision: 7674
URL: http://source.netsurf-browser.org?rev=7674&view=rev
Log:
Don't fast scroll when the user is scrolling more than one window's worth in any
direction
Modified:
trunk/netsurf/amiga/gui.c
Modified: trunk/netsurf/amiga/gui.c
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/gui.c?rev=7674&r1=7...
==============================================================================
--- trunk/netsurf/amiga/gui.c (original)
+++ trunk/netsurf/amiga/gui.c Sun May 31 15:14:15 2009
@@ -2329,6 +2329,12 @@
g->redraw_scroll = false;
}
+ if(g->redraw_scroll)
+ {
+ if((abs(vcurrent-oldv) > height) || (abs(hcurrent-oldh) > width))
+ g->redraw_scroll = false;
+ }
+
// if (c->type == CONTENT_HTML) scale = 1;
if(g->redraw_scroll && c->type == CONTENT_HTML)
14 years, 3 months
r7673 MarkieB - /branches/MarkieB/upload/gtk/gtk_window.c
by netsurf@semichrome.net
Author: MarkieB
Date: Sun May 31 11:10:41 2009
New Revision: 7673
URL: http://source.netsurf-browser.org?rev=7673&view=rev
Log:
neaten up code, neaten up interface
Modified:
branches/MarkieB/upload/gtk/gtk_window.c
Modified: branches/MarkieB/upload/gtk/gtk_window.c
URL: http://source.netsurf-browser.org/branches/MarkieB/upload/gtk/gtk_window....
==============================================================================
--- branches/MarkieB/upload/gtk/gtk_window.c (original)
+++ branches/MarkieB/upload/gtk/gtk_window.c Sun May 31 11:10:41 2009
@@ -251,9 +251,10 @@
CONNECT(g->viewport, "size_allocate",
nsgtk_window_size_allocate_event, g);
gtk_drag_dest_set(GTK_WIDGET(g->drawing_area),
- GTK_DEST_DEFAULT_ALL,
+ GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP,
&type, 4, GDK_ACTION_COPY);
- CONNECT(g->drawing_area, "drag-data-received", nsgtk_drag_data_received, g);
+ CONNECT(g->drawing_area, "drag-data-received",
+ nsgtk_drag_data_received, g);
CONNECT(g->drawing_area, "drag-motion", nsgtk_drag_motion, g);
return g;
}
@@ -321,8 +322,8 @@
}
browser_window_mouse_track(g->bw, g->mouse->state,
x / g->bw->scale, y / g->bw->scale);
- g->last_x = x;
- g->last_y = y;
+ g->last_x = x / g->bw->scale;
+ g->last_y = y / g->bw->scale;
}
static gboolean nsgtk_drag_motion(GtkWidget *widget, GdkDragContext *cont, gint
@@ -347,8 +348,8 @@
acceptable = true;
}
}
- g->last_x = x;
- g->last_y = y;
+ g->last_x = x / g->bw->scale;
+ g->last_y = y / g->bw->scale;
if (!acceptable)
gdk_drag_status(cont, 0, time);
14 years, 3 months
r7672 MarkieB - /branches/MarkieB/upload/gtk/gtk_window.c
by netsurf@semichrome.net
Author: MarkieB
Date: Sun May 31 10:47:21 2009
New Revision: 7672
URL: http://source.netsurf-browser.org?rev=7672&view=rev
Log:
clearing unnecessary function
Modified:
branches/MarkieB/upload/gtk/gtk_window.c
Modified: branches/MarkieB/upload/gtk/gtk_window.c
URL: http://source.netsurf-browser.org/branches/MarkieB/upload/gtk/gtk_window....
==============================================================================
--- branches/MarkieB/upload/gtk/gtk_window.c (original)
+++ branches/MarkieB/upload/gtk/gtk_window.c Sun May 31 10:47:21 2009
@@ -64,8 +64,6 @@
gint, GtkSelectionData *, guint, guint, gpointer);
static gboolean nsgtk_drag_motion(GtkWidget *, GdkDragContext *, gint, gint,
guint, gpointer);
-static gboolean nsgtk_drag_drop(GtkWidget *, GdkDragContext *, gint, gint,
- guint, gpointer);
/* Other useful bits */
static void nsgtk_redraw_caret(struct gui_window *g);
@@ -257,7 +255,6 @@
&type, 4, GDK_ACTION_COPY);
CONNECT(g->drawing_area, "drag-data-received", nsgtk_drag_data_received, g);
CONNECT(g->drawing_area, "drag-motion", nsgtk_drag_motion, g);
- CONNECT(g->drawing_area, "drag-drop", nsgtk_drag_drop, g);
return g;
}
@@ -357,31 +354,6 @@
gdk_drag_status(cont, 0, time);
return TRUE;
}
-static gboolean nsgtk_drag_drop(GtkWidget *widget, GdkDragContext *cont, gint x,
- gint y, guint time, gpointer data)
-{
- struct gui_window *g = data;
- struct box *current, *future;
- struct content *content = g->bw->current_content;
- int box_x = 0, box_y = 0;
- browser_window_mouse_track(g->bw, g->mouse->state,
- x / g->bw->scale, y / g->bw->scale);
- /* then check whether the location is above file gadget */
- g->last_x = x;
- g->last_y = y;
-
- current = content->data.html.layout;
- box_x = current->margin[LEFT];
- box_y = current->margin[TOP];
- while ((future = box_at_point(current, x / g->bw->scale, y / g->bw->scale,
- &box_x, &box_y, &content)) != NULL) {
- current = future;
- if (current->gadget && current->gadget->type == GADGET_FILE) {
- return TRUE;
- }
- }
- return FALSE;
-}
static void nsgtk_gui_window_attach_child(struct gui_window *parent,
struct gui_window *child)
14 years, 3 months
r7671 MarkieB - /branches/MarkieB/upload/gtk/gtk_window.c
by netsurf@semichrome.net
Author: MarkieB
Date: Sun May 31 10:41:58 2009
New Revision: 7671
URL: http://source.netsurf-browser.org?rev=7671&view=rev
Log:
clear unnecessary function
Modified:
branches/MarkieB/upload/gtk/gtk_window.c
Modified: branches/MarkieB/upload/gtk/gtk_window.c
URL: http://source.netsurf-browser.org/branches/MarkieB/upload/gtk/gtk_window....
==============================================================================
--- branches/MarkieB/upload/gtk/gtk_window.c (original)
+++ branches/MarkieB/upload/gtk/gtk_window.c Sun May 31 10:41:58 2009
@@ -62,7 +62,6 @@
gpointer);
static void nsgtk_drag_data_received(GtkWidget *, GdkDragContext *, gint,
gint, GtkSelectionData *, guint, guint, gpointer);
-static void nsgtk_drag_leave(GtkWidget *, GdkDragContext *, guint, gpointer);
static gboolean nsgtk_drag_motion(GtkWidget *, GdkDragContext *, gint, gint,
guint, gpointer);
static gboolean nsgtk_drag_drop(GtkWidget *, GdkDragContext *, gint, gint,
@@ -257,7 +256,6 @@
GTK_DEST_DEFAULT_ALL,
&type, 4, GDK_ACTION_COPY);
CONNECT(g->drawing_area, "drag-data-received", nsgtk_drag_data_received, g);
- CONNECT(g->drawing_area, "drag-leave", nsgtk_drag_leave, g);
CONNECT(g->drawing_area, "drag-motion", nsgtk_drag_motion, g);
CONNECT(g->drawing_area, "drag-drop", nsgtk_drag_drop, g);
return g;
@@ -330,10 +328,6 @@
g->last_y = y;
}
-static void nsgtk_drag_leave(GtkWidget *widget, GdkDragContext *cont, guint
- time, gpointer data)
-{
-}
static gboolean nsgtk_drag_motion(GtkWidget *widget, GdkDragContext *cont, gint
x, gint y, guint time, gpointer data)
{
14 years, 3 months
r7668 chris_y - /trunk/netsurf/amiga/gui.c
by netsurf@semichrome.net
Author: chris_y
Date: Sun May 31 10:17:35 2009
New Revision: 7668
URL: http://source.netsurf-browser.org?rev=7668&view=rev
Log:
Fix minor problems with tab switching
Modified:
trunk/netsurf/amiga/gui.c
Modified: trunk/netsurf/amiga/gui.c
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/gui.c?rev=7668&r1=7...
==============================================================================
--- trunk/netsurf/amiga/gui.c (original)
+++ trunk/netsurf/amiga/gui.c Sun May 31 10:17:35 2009
@@ -1423,6 +1423,7 @@
browser_window_update(gwin->bw,false);
gui_window_set_scroll(gwin->bw->window,gwin->bw->window->scrollx,gwin->bw->window->scrolly);
+ gwin->redraw_scroll = false;
if(gwin->bw->current_content)
browser_window_refresh_url_bar(gwin->bw,gwin->bw->current_content->url,
@@ -2819,7 +2820,7 @@
{
struct content *c;
- if(g && g->shared && g->shared->bw)
+ if(g && g->shared && g->shared->bw && g->shared->bw->current_content)
c = g->shared->bw->current_content;
else return;
14 years, 3 months
r7667 chris_y - in /trunk/netsurf/amiga: gui.c gui.h history_local.c
by netsurf@semichrome.net
Author: chris_y
Date: Sun May 31 10:05:26 2009
New Revision: 7667
URL: http://source.netsurf-browser.org?rev=7667&view=rev
Log:
Fix faster_scroll
Modified:
trunk/netsurf/amiga/gui.c
trunk/netsurf/amiga/gui.h
trunk/netsurf/amiga/history_local.c
Modified: trunk/netsurf/amiga/gui.c
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/gui.c?rev=7667&r1=7...
==============================================================================
--- trunk/netsurf/amiga/gui.c (original)
+++ trunk/netsurf/amiga/gui.c Sun May 31 10:05:26 2009
@@ -1188,7 +1188,7 @@
if((node->Type == AMINS_WINDOW) || (node->Type == AMINS_FRAME))
{
if(gwin->redraw_required)
- ami_do_redraw(gwin,false);
+ ami_do_redraw(gwin);
if(gwin->throbber_frame)
ami_update_throbber(gwin,false);
@@ -1329,7 +1329,7 @@
ReplyMsg((struct Message *)appmsg);
if(gwin->redraw_required)
- ami_do_redraw(gwin,false);
+ ami_do_redraw(gwin);
}
}
@@ -2292,7 +2292,7 @@
data->redraw.height+data->redraw.y);
}
-void ami_do_redraw(struct gui_window_2 *g,bool scroll)
+void ami_do_redraw(struct gui_window_2 *g)
{
struct Region *reg = NULL;
struct Rectangle rect;
@@ -2325,33 +2325,31 @@
{
browser_window_reformat(g->bw,width,height);
g->bw->reformat_pending = false;
- scroll = FALSE;
+ g->redraw_scroll = false;
}
// if (c->type == CONTENT_HTML) scale = 1;
- if(scroll && c->type == CONTENT_HTML)
+ if(g->redraw_scroll && c->type == CONTENT_HTML)
{
ScrollWindowRaster(g->win,hcurrent-oldh,vcurrent-oldv,xoffset,yoffset,xoffset+width,yoffset+height);
- if((vcurrent-oldv) > 0)
- {
- ami_do_redraw_limits(g->bw->window,c,0,height-(vcurrent-oldv),width,(vcurrent-oldv));
- // BltBitMapRastPort(glob.bm,0,vcurrent-oldv,g->win->RPort,xoffset,yoffset+(vcurrent-oldv),width,height-(vcurrent-oldv),0x0C0); // this shouldn't be needed but the blit in ami_do_redraw_limits isn't working in this instance
- }
- else if((vcurrent-oldv) < 0)
- {
- ami_do_redraw_limits(g->bw->window,c,0,0,width,oldv-vcurrent);
- }
-
- if((hcurrent-oldh) > 0)
- {
- ami_do_redraw_limits(g->bw->window,c,width-(hcurrent-oldh),0,(hcurrent-oldh),height);
- // BltBitMapRastPort(glob.bm,vcurrent-oldv,0,g->win->RPort,xoffset+(hcurrent-oldh),yoffset,width-(hcurrent-oldh),height,0x0C0); // this shouldn't be needed but the blit in ami_do_redraw_limits isn't working in this instance
- }
- else if((hcurrent-oldh) < 0)
- {
- ami_do_redraw_limits(g->bw->window,c,0,0,oldh-hcurrent,height);
+ if(vcurrent>oldv)
+ {
+ ami_do_redraw_limits(g->bw->window,c,hcurrent,height+oldv,hcurrent+width,vcurrent+height);
+ }
+ else if(vcurrent<oldv)
+ {
+ ami_do_redraw_limits(g->bw->window,c,hcurrent,vcurrent,hcurrent+width,oldv);
+ }
+
+ if(hcurrent>oldh)
+ {
+ ami_do_redraw_limits(g->bw->window,c,width+oldh,vcurrent,hcurrent+width,vcurrent+height);
+ }
+ else if(hcurrent<oldh)
+ {
+ ami_do_redraw_limits(g->bw->window,c,hcurrent,vcurrent,oldh,vcurrent+height);
}
}
else
@@ -2399,6 +2397,7 @@
g->oldh = hcurrent;
g->oldv = vcurrent;
+ g->redraw_scroll = false;
g->redraw_required = false;
}
@@ -2432,6 +2431,7 @@
TAG_DONE);
g->shared->redraw_required = true;
+ g->shared->redraw_scroll = true;
g->scrollx = sx;
g->scrolly = sy;
@@ -2940,9 +2940,9 @@
// history_set_current_scroll(gwin->bw->history,
// gwin->bw->window->scrollx,gwin->bw->window->scrolly);
- if(!option_faster_scroll)
- gwin->redraw_required = true;
- else ami_do_redraw(gwin,true);
+ if(option_faster_scroll)
+ gwin->redraw_scroll = true;
+ gwin->redraw_required = true;
break;
}
break;
Modified: trunk/netsurf/amiga/gui.h
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/gui.h?rev=7667&r1=7...
==============================================================================
--- trunk/netsurf/amiga/gui.h (original)
+++ trunk/netsurf/amiga/gui.h Sun May 31 10:05:26 2009
@@ -97,6 +97,7 @@
struct find_window *searchwin;
ULONG oldh;
ULONG oldv;
+ bool redraw_scroll;
};
struct gui_window
@@ -133,7 +134,7 @@
void ami_quit_netsurf(void);
void ami_get_theme_filename(char *filename,char *themestring);
void ami_clearclipreg(struct RastPort *rp);
-void ami_do_redraw(struct gui_window_2 *g,bool scroll);
+void ami_do_redraw(struct gui_window_2 *g);
struct RastPort *currp;
struct TextFont *origrpfont;
Modified: trunk/netsurf/amiga/history_local.c
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/history_local.c?rev...
==============================================================================
--- trunk/netsurf/amiga/history_local.c (original)
+++ trunk/netsurf/amiga/history_local.c Sun May 31 10:05:26 2009
@@ -200,7 +200,7 @@
case SELECTUP:
history_click(hw->bw,history_current,x,y,false);
ami_history_redraw(hw);
- ami_do_redraw(hw->bw->window->shared,false);
+ ami_do_redraw(hw->bw->window->shared);
break;
case MIDDLEUP:
14 years, 3 months