@@ -160,16 +160,25 @@ impl Tab {
160160 item. cache = Some ( cache)
161161 }
162162 }
163- pub fn open_new_tab ( & self , _link : & str ) -> Result < ( ) > {
164- // let url = self.parse_link(link)?;
165- // FIXME: emit action
163+ pub fn handle_click ( & self , x : f64 , y : f64 ) -> Result < ( ) > {
164+ let imp = self . imp ( ) ;
165+ let draw_ctx = imp. draw_ctx . borrow ( ) ;
166+ let text_view = & draw_ctx. as_ref ( ) . unwrap ( ) . text_view ;
167+ let has_selection = text_view. buffer ( ) . has_selection ( ) ;
168+ if has_selection {
169+ return Ok ( ( ) ) ;
170+ }
171+ let link = Self :: extract_linkhandler ( draw_ctx. as_ref ( ) . unwrap ( ) , x, y) ?;
172+ let url = self . parse_link ( & link) ?;
173+ self . spawn_open_url ( url) ;
166174 Ok ( ( ) )
167175 }
168176 fn handle_right_click ( & self , x : f64 , y : f64 ) -> Result < ( ) > {
169177 let imp = self . imp ( ) ;
170178 let draw_ctx = imp. draw_ctx . borrow ( ) ;
171179 let text_view = & draw_ctx. as_ref ( ) . unwrap ( ) . text_view ;
172180 let link = Self :: extract_linkhandler ( draw_ctx. as_ref ( ) . unwrap ( ) , x, y) ?;
181+ let link = self . parse_link ( & link) ?;
173182
174183 let menu = gio:: Menu :: new ( ) ;
175184 menu. insert (
@@ -185,7 +194,7 @@ impl Tab {
185194 text_view. set_extra_menu ( Some ( & menu) ) ;
186195 Ok ( ( ) )
187196 }
188- fn spawn_req ( & self , fut : impl Future < Output = ( ) > + ' static ) {
197+ fn spawn_request ( & self , fut : impl Future < Output = ( ) > + ' static ) {
189198 let imp = self . imp ( ) ;
190199 imp. req_handle
191200 . replace ( Some ( glibctx ( ) . spawn_local_with_handle ( fut) . unwrap ( ) ) ) ;
@@ -208,7 +217,7 @@ impl Tab {
208217
209218 let this = self . clone ( ) ;
210219 let fut = async move {
211- match Self :: spawn_request ( & mut req_ctx) . await {
220+ match Self :: send_request ( & mut req_ctx) . await {
212221 Ok ( Some ( cache) ) => {
213222 this. add_cache ( cache) ;
214223 info ! ( "Page loaded and cached ({})" , url. clone( ) ) ;
@@ -225,7 +234,7 @@ impl Tab {
225234 this. emit_by_name_with_values ( "progress-changed" , & [ 1.0 . to_value ( ) ] ) ;
226235 } ;
227236 self . emit_by_name_with_values ( "progress-changed" , & [ 0.3 . to_value ( ) ] ) ;
228- self . spawn_req ( fut) ;
237+ self . spawn_request ( fut) ;
229238 }
230239 fn spawn_open_history ( & self , item : HistoryItem ) {
231240 let HistoryItem { url, cache, .. } = item;
@@ -258,7 +267,7 @@ impl Tab {
258267 Err ( e) => Self :: display_error ( & mut draw_ctx, e) ,
259268 }
260269 } ;
261- self . spawn_req ( fut) ;
270+ self . spawn_request ( fut) ;
262271 }
263272 pub fn back ( & self ) -> Result < ( ) > {
264273 let imp = self . imp ( ) ;
@@ -281,36 +290,6 @@ impl Tab {
281290 let error_text = format ! ( "Geopard experienced an error:\n {:?}" , error) ;
282291 ctx. insert_paragraph ( & mut ctx. text_buffer . end_iter ( ) , & error_text) ;
283292 }
284- pub fn handle_click ( & self , x : f64 , y : f64 ) -> Result < ( ) > {
285- let imp = self . imp ( ) ;
286- let draw_ctx = imp. draw_ctx . borrow ( ) ;
287- let text_view = & draw_ctx. as_ref ( ) . unwrap ( ) . text_view ;
288- let has_selection = text_view. buffer ( ) . has_selection ( ) ;
289- if has_selection {
290- return Ok ( ( ) ) ;
291- }
292- let link = Self :: extract_linkhandler ( draw_ctx. as_ref ( ) . unwrap ( ) , x, y) ?;
293- let url = self . parse_link ( & link) ?;
294- self . spawn_open_url ( url) ;
295- Ok ( ( ) )
296- }
297- /* FIXME: fn extend_textview_menu(menu: >k::Menu, url: String, sender: flume::Sender<TabMsg>) {
298- let copy_link_item = gtk::MenuItem::with_label("Copy link");
299- let open_in_tab_item = gtk::MenuItem::with_label("Open in new tab");
300- let url_clone = url.clone();
301- let sender_clone = sender.clone();
302- copy_link_item.connect_activate(move |_| {
303- sender_clone
304- .send(TabMsg::CopyUrl(url_clone.clone()))
305- .unwrap();
306- });
307- open_in_tab_item.connect_activate(move |_| {
308- sender.send(TabMsg::OpenNewTab(url.clone())).unwrap();
309- });
310- menu.prepend(©_link_item);
311- menu.prepend(&open_in_tab_item);
312- menu.show_all();
313- }*/
314293 fn bind_signals ( & self ) {
315294 let imp = self . imp ( ) ;
316295 let this = self . clone ( ) ;
@@ -367,7 +346,7 @@ impl Tab {
367346 }
368347 Ok ( ( ) )
369348 }
370- async fn spawn_request ( req : & mut RequestCtx ) -> Result < Option < Vec < u8 > > > {
349+ async fn send_request ( req : & mut RequestCtx ) -> Result < Option < Vec < u8 > > > {
371350 req. draw_ctx . clear ( ) ;
372351 match req. url . scheme ( ) {
373352 "about" => {
0 commit comments