[Galaxy Note GT-N7000 Themes and Apps] majdinj:
<<This mod will make you able to zoom in and out in internet browser by scrolling down and up respectively from the right or left screen edge>>​

The mods:

Pre-made mods (base JB 4.1.2 LT6):

I have made 2 flashable files, one for deodexed ROMs and one for odexed ROM (e.g, stock ROMs)..

Please download from attachment and install according to your ROM..!!

The Guide:

Needed tools:

1) Backsmali/Smali program (Check the utility I made for that here for windows users)

2) Notepad ++ from here.

The procedure:

- Baksmali framework.jar

- Navigate to classout\android\view\ folder and open ScaleGestureDetector.smali

- Search for this method ".method public onTouchEvent(Landroid/view/MotionEvent;)Z" and change the entire method to:

[B][COLOR="Blue"].method public onTouchEvent(Landroid/view/MotionEvent;)Z
.registers 28
.param p1, "event" # Landroid/view/MotionEvent;

.prologue
.line 207
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mInputEventConsistencyVerifier:Landroid/view/InputEventConsistencyVerifier;

move-object/from16 v24, v0

if-eqz v24, :cond_19

.line 208
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mInputEventConsistencyVerifier:Landroid/view/InputEventConsistencyVerifier;

move-object/from16 v24, v0

const/16 v25, 0x0

move-object/from16 v0, v24

move-object/from16 v1, p1

move/from16 v2, v25

invoke-virtual {v0, v1, v2}, Landroid/view/InputEventConsistencyVerifier;->onTouchEvent(Landroid/view/MotionEvent;I)V

.line 211
:cond_19
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mValidPackage:Z

move/from16 v24, v0

if-eqz v24, :cond_2a

invoke-direct/range {p0 .. p1}, Landroid/view/ScaleGestureDetector;->onEdgeTouchEvent(Landroid/view/MotionEvent;)Z

move-result v24

if-eqz v24, :cond_2a

const/16 v24, 0x1

.line 310
:goto_29
return v24

.line 213
:cond_2a
invoke-virtual/range {p1 .. p1}, Landroid/view/MotionEvent;->getActionMasked()I

move-result v3

.line 215
.local v3, "action":I
const/16 v24, 0x1

move/from16 v0, v24

if-eq v3, v0, :cond_3a

const/16 v24, 0x3

move/from16 v0, v24

if-ne v3, v0, :cond_6a

:cond_3a
const/16 v19, 0x1

.line 217
.local v19, "streamComplete":Z
:goto_3c
if-eqz v3, :cond_40

if-eqz v19, :cond_6d

.line 221
:cond_40
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v24, v0

if-eqz v24, :cond_65

.line 222
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;

move-object/from16 v24, v0

move-object/from16 v0, v24

move-object/from16 v1, p0

invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScaleEnd(Landroid/view/ScaleGestureDetector;)V

.line 223
const/16 v24, 0x0

move/from16 v0, v24

move-object/from16 v1, p0

iput-boolean v0, v1, Landroid/view/ScaleGestureDetector;->mInProgress:Z

.line 224
const/16 v24, 0x0

move/from16 v0, v24

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mInitialSpan:F

.line 227
:cond_65
if-eqz v19, :cond_6d

.line 228
const/16 v24, 0x1

goto :goto_29

.line 215
.end local v19 # "streamComplete":Z
:cond_6a
const/16 v19, 0x0

goto :goto_3c

.line 232
.restart local v19 # "streamComplete":Z
:cond_6d
const/16 v24, 0x6

move/from16 v0, v24

if-eq v3, v0, :cond_79

const/16 v24, 0x5

move/from16 v0, v24

if-ne v3, v0, :cond_97

:cond_79
const/4 v4, 0x1

.line 235
.local v4, "configChanged":Z
:goto_7a
const/16 v24, 0x6

move/from16 v0, v24

if-ne v3, v0, :cond_99

const/4 v14, 0x1

.line 236
.local v14, "pointerUp":Z
:goto_81
if-eqz v14, :cond_9b

invoke-virtual/range {p1 .. p1}, Landroid/view/MotionEvent;->getActionIndex()I

move-result v15

.line 239
.local v15, "skipIndex":I
:goto_87
const/16 v20, 0x0

.local v20, "sumX":F
const/16 v21, 0x0

.line 240
.local v21, "sumY":F
invoke-virtual/range {p1 .. p1}, Landroid/view/MotionEvent;->getPointerCount()I

move-result v5

.line 241
.local v5, "count":I
const/4 v13, 0x0

.local v13, "i":I
:goto_90
if-ge v13, v5, :cond_ae

.line 242
if-ne v15, v13, :cond_9d

.line 241
:goto_94
add-int/lit8 v13, v13, 0x1

goto :goto_90

.line 232
.end local v4 # "configChanged":Z
.end local v5 # "count":I
.end local v13 # "i":I
.end local v14 # "pointerUp":Z
.end local v15 # "skipIndex":I
.end local v20 # "sumX":F
.end local v21 # "sumY":F
:cond_97
const/4 v4, 0x0

goto :goto_7a

.line 235
.restart local v4 # "configChanged":Z
:cond_99
const/4 v14, 0x0

goto :goto_81

.line 236
.restart local v14 # "pointerUp":Z
:cond_9b
const/4 v15, -0x1

goto :goto_87

.line 243
.restart local v5 # "count":I
.restart local v13 # "i":I
.restart local v15 # "skipIndex":I
.restart local v20 # "sumX":F
.restart local v21 # "sumY":F

:cond_9d
move-object/from16 v0, p1

invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getX(I)F

move-result v24

add-float v20, v20, v24

.line 244
move-object/from16 v0, p1

invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getY(I)F

move-result v24

add-float v21, v21, v24

goto :goto_94

.line 246

:cond_ae
if-eqz v14, :cond_c6

add-int/lit8 v10, v5, -0x1

.line 247
.local v10, "div":I

:goto_b2
int-to-float v0, v10

move/from16 v24, v0

div-float v11, v20, v24

.line 248
.local v11, "focusX":F
int-to-float v0, v10

move/from16 v24, v0

div-float v12, v21, v24

.line 251
.local v12, "focusY":F
const/4 v6, 0x0

.local v6, "devSumX":F
const/4 v7, 0x0

.line 252
.local v7, "devSumY":F
const/4 v13, 0x0

:goto_bf
if-ge v13, v5, :cond_e5

.line 253
if-ne v15, v13, :cond_c8

.line 252

:goto_c3
add-int/lit8 v13, v13, 0x1

goto :goto_bf

.end local v6 # "devSumX":F
.end local v7 # "devSumY":F
.end local v10 # "div":I
.end local v11 # "focusX":F
.end local v12 # "focusY":F
:cond_c6
move v10, v5

.line 246

goto :goto_b2

.line 254
.restart local v6 # "devSumX":F
.restart local v7 # "devSumY":F
.restart local v10 # "div":I
.restart local v11 # "focusX":F
.restart local v12 # "focusY":F
:cond_c8
move-object/from16 v0, p1

invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getX(I)F

move-result v24

sub-float v24, v24, v11

invoke-static/range {v24 .. v24}, Ljava/lang/Math;->abs(F)F

move-result v24

add-float v6, v6, v24

.line 255
move-object/from16 v0, p1

invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getY(I)F

move-result v24

sub-float v24, v24, v12

invoke-static/range {v24 .. v24}, Ljava/lang/Math;->abs(F)F

move-result v24

add-float v7, v7, v24

goto :goto_c3

.line 257
:cond_e5
int-to-float v0, v10

move/from16 v24, v0

div-float v8, v6, v24

.line 258
.local v8, "devX":F
int-to-float v0, v10

move/from16 v24, v0

div-float v9, v7, v24

.line 263
.local v9, "devY":F
const/high16 v24, 0x40000000

mul-float v17, v8, v24

.line 264
.local v17, "spanX":F
const/high16 v24, 0x40000000

mul-float v18, v9, v24

.line 265
.local v18, "spanY":F
mul-float v24, v17, v17

mul-float v25, v18, v18

add-float v24, v24, v25

invoke-static/range {v24 .. v24}, Landroid/util/FloatMath;->sqrt(F)F

move-result v16

.line 270
.local v16, "span":F
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v23, v0

.line 271
.local v23, "wasInProgress":Z
move-object/from16 v0, p0

iput v11, v0, Landroid/view/ScaleGestureDetector;->mFocusX:F

.line 272
move-object/from16 v0, p0

iput v12, v0, Landroid/view/ScaleGestureDetector;->mFocusY:F

.line 273
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v24, v0

if-eqz v24, :cond_13a

const/16 v24, 0x0

cmpl-float v24, v16, v24

if-eqz v24, :cond_11f

if-eqz v4, :cond_13a

.line 274
:cond_11f
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;

move-object/from16 v24, v0

move-object/from16 v0, v24

move-object/from16 v1, p0

invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScaleEnd(Landroid/view/ScaleGestureDetector;)V

.line 275
const/16 v24, 0x0

move/from16 v0, v24

move-object/from16 v1, p0

iput-boolean v0, v1, Landroid/view/ScaleGestureDetector;->mInProgress:Z

.line 276
move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mInitialSpan:F

.line 278
:cond_13a
if-eqz v4, :cond_166

.line 279
move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F

move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanX:F

.line 280
move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F

move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanY:F

.line 281
move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpan:F

move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpan:F

move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mInitialSpan:F

.line 283
:cond_166
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v24, v0

if-nez v24, :cond_1d0

const/16 v24, 0x0

cmpl-float v24, v16, v24

if-eqz v24, :cond_1d0

if-nez v23, :cond_191

move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mInitialSpan:F

move/from16 v24, v0

sub-float v24, v16, v24

invoke-static/range {v24 .. v24}, Ljava/lang/Math;->abs(F)F

move-result v24

move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mSpanSlop:I

move/from16 v25, v0

move/from16 v0, v25

int-to-float v0, v0

move/from16 v25, v0

cmpl-float v24, v24, v25

if-lez v24, :cond_1d0

.line 285
:cond_191
move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F

move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanX:F

.line 286
move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F

move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanY:F

.line 287
move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpan:F

move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpan:F

.line 288
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;

move-object/from16 v24, v0

move-object/from16 v0, v24

move-object/from16 v1, p0

invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScaleBegin(Landroid/view/ScaleGestureDetector;)Z

move-result v24

move/from16 v0, v24

move-object/from16 v1, p0

iput-boolean v0, v1, Landroid/view/ScaleGestureDetector;->mInProgress:Z

.line 289
const-string v24, "ScaleGestureDetector"

const-string v25, "SGD"

invoke-static/range {v24 .. v25}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

.line 293
:cond_1d0
const/16 v24, 0x2

move/from16 v0, v24

if-ne v3, v0, :cond_226

.line 294
move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F

.line 295
move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F

.line 296
move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpan:F

.line 298
const/16 v22, 0x1

.line 299
.local v22, "updatePrev":Z
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v24, v0

if-eqz v24, :cond_200

.line 300
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;

move-object/from16 v24, v0

move-object/from16 v0, v24

move-object/from16 v1, p0

invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScale(Landroid/view/ScaleGestureDetector;)Z

move-result v22

.line 303
:cond_200
if-eqz v22, :cond_226

.line 304
move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F

move/from16 v24, v0

move/from16 v0, v24

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanX:F

.line 305
move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F

move/from16 v24, v0

move/from16 v0, v24

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanY:F

.line 306
move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mCurrSpan:F

move/from16 v24, v0

move/from16 v0, v24

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpan:F

.line 310
.end local v22 # "updatePrev":Z
:cond_226
const/16 v24, 0x1

goto/16 :goto_29
.end method[/COLOR][/B]

- Save changes and smali your framework.jar and push it to device.

Cheers